1.1.0 • Published 4 years ago
topobuf v1.1.0
Topobuf
Topobuf is a compact binary encoding for topographic data.
Topobuf provides lossless^1 compression of TopoJSON data into protocol buffers. Advantages over using JSON-based formats alone:
- Very compact: typically makes TopoJSON 2-3 times smaller.
- Smaller even when comparing gzipped sizes: 20-30% for TopoJSON.
- Can store topology objects too large for
JSON.stringify/JSON.parse - Can accommodate any TopoJSON data, including extensions with arbitrary properties.
Sample compression sizes
| normal | gzipped | |
|---|---|---|
| pa-census-blocks.json | 280 MB | 44 MB |
| pa-census-blocks.pbf | 114 MB | 35 MB |
| us-zips.json | 15.02 MB | 3.19 MB |
| us-zips.pbf | 4.85 MB | 2.72 MB |
| idaho.json | 1.9 MB | 612 KB |
| idaho.pbf | 567 KB | 479 KB |
Install
npm install topobufAPI
encode
var buffer = topobuf.encode(topojson, new Pbf());Given a TopoJSON object and a Pbf object to write to,
returns a Topobuf as a Buffer object in Node or UInt8Array object in browsers.
decode
var topojson = topobuf.decode(new Pbf(data));Given a Pbf object with topobuf data, return a TopoJSON object.
See more
This library is based on geobuf by Mapbox, which provides similar functionality for GeoJSON
^1: When using quantized TopoJSON - nearly lossless otherwise