Geobuf is a compact binary packing of GeoJSON on Protocol Buffers, created at Mapbox (Vladimir Agafonkin, 2015). It encodes the same objects as GeoJSON but typically 6–8x smaller thanks to varint, coordinate delta encoding, and a key dictionary; decoding returns an equivalent GeoJSON losslessly. It is a transport layer for mobile maps, edge CDN caches, and IndexedDB storage, not an analytical format. Our exporter builds a FeatureCollection from the OSM layers and encodes it into real protobuf .pbf with 6-digit precision (~0.1 m). Important: the format is honest — if encoding fails the export errors out, we do NOT substitute gzipped GeoJSON under a .pbf name.
主要特点
关于 Geobuf 格式
Geobuf solves one problem: the same GeoJSON, but many times smaller. Instead of text — Protocol Buffers; instead of repeating property names — a dictionary of keys; instead of full coordinates — the differences between neighboring points, written as variable-length numbers. The meaning of the data does not change, only the packing does.
This is a transport format. It is taken when data has to be delivered: into a mobile app over a weak network, onto a CDN node, into a browser's offline storage. Computing statistics or editing features in it is awkward — for that it is first decoded back into GeoJSON.
The file contains a single FeatureCollection with all the selected layers, encoded as genuine protobuf. Coordinates are rounded to six decimal places, which is about ten centimeters on the ground — more than enough for city-level detail. OpenStreetMap attributes are preserved.
There is no substitution: if the encoding fails, the export ends with an error. Handing you a gzipped GeoJSON under a .pbf extension would be easier, but such a file would not decode with the geobuf library — and so would be useless.
打开 Geobuf 文件的程序
以下程序可以打开、编辑和处理从 OSM2CDR 导出的 Geobuf (Protobuf-encoded GeoJSON)(.pbf)文件:
格式规格
- 开放标准
- 仅 2D
- 无损(无质量损失)
- 存储要素属性
- 输出:1 个文件
- Real protobuf .pbf encoding a GeoJSON FeatureCollection at 6-digit precision (~0.1 m); honest guarantee — real Geobuf or an error, never a gzipped-GeoJSON substitution.
谁在使用 Geobuf 地图
如何导出 Geobuf
导出后如何打开
- JavaScript — npm install geobuf pbf, then geobuf.decode(new Pbf(buffer)) returns ready GeoJSON that you can hand straight to Leaflet or Mapbox GL.
- Python — pip install geobuf, then geobuf.decode(open("map.pbf", "rb").read()); after that it is ordinary GeoJSON work or loading into GeoPandas.
- A mobile app — the file goes into the resources or is pulled from the server: decoding takes a fraction of a second, and the traffic is several times smaller.
- Offline in the browser — the decoded result is convenient to keep in IndexedDB and redraw the map with no network.
- Just to take a look — decode it into GeoJSON and drag it onto geojson.io: no viewer will show the .pbf itself.
Geobuf 格式的热门地图
导出 Geobuf (Protobuf-encoded GeoJSON) 地图
从 OpenStreetMap 下载专业的 Geobuf 地图。即时生成,任意区域。