Tiny OSMPBF Parser

1.0.0-beta.1 · active · verified Tue Apr 21

tiny-osmpbf is a lightweight JavaScript library designed for parsing OpenStreetMap PBF (Protocol Buffer Binary) format files. It targets environments including Node.js and web browsers, offering a pure JavaScript implementation. The current development is in a beta phase, with version 1.0.0-beta.2 being the latest as of recent releases, indicating active refinement towards a stable 1.0.0. Unlike many other PBF parsers, tiny-osmpbf prioritizes ease-of-use and a small code footprint (under 16KB minified and gzipped) over raw parsing speed. This is achieved by leveraging smaller, specialized libraries like Mapbox's `pbf` for protocol buffer parsing and `tiny-inflate` for ZLIB decompression. A key differentiating feature is its synchronous API, which simplifies integration into existing synchronous workflows but necessitates loading the entire PBF data into memory before parsing, making it less suitable for extremely large files or memory-constrained environments. The output format adheres to the widely used OSM-JSON standard, compatible with services like Overpass API.

Common errors

Warnings

Install

Imports

Quickstart

Demonstrates how to read an OSM PBF file synchronously from disk using Node.js's `fs` module and then parse it with `tiny-osmpbf`, logging basic information and the first two parsed elements.

import * as fs from 'node:fs';
import tinyosmpbf from 'tiny-osmpbf';

// Assuming you have an osm.pbf file. Replace with your file path.
const filePath = 'path/to/your/map.osm.pbf';

try {
  const dataBuffer = fs.readFileSync(filePath);
  console.log(`Successfully read ${dataBuffer.length} bytes from ${filePath}`);

  // Parse the PBF data synchronously
  const osmData = tinyosmpbf(dataBuffer);

  console.log('Parsed OSM Data (first few elements):', osmData.elements.slice(0, 2));
  console.log('Total OSM elements:', osmData.elements.length);
  console.log('OSM Generator:', osmData.osm3s.generator);
} catch (error) {
  console.error('Error parsing PBF file:', error);
}

view raw JSON →