Geobuf
2026年11月02日 09:12
GISBox是一站式三维 GIS 数据编辑、转换、发布平台,支持 OSGB/GEOTIFF/RVT 等多种 GIS 格式编辑,转换为 3DTiles/Terrain 等并发布。
简介
Geobuf是由Mapbox开发的一种紧凑的GIS二进制地理数据编码格式,它基于Google Protocol Buffers技术,能将GeoJSON数据近乎无损地压缩到原体积的1/6到1/8,即便对比gzip压缩后的GeoJSON,体积仍能再缩小2-2.5倍,坐标精度保留到小数点后6位(约10厘米),编码解码速度甚至超过原生JSON的解析与序列化操作,还支持增量解析和部分读取,无需加载完整文件就能提取所需要素,适配Web地图前端高效加载、空间数据库存储、分布式GIS系统数据传输等场景,目前已提供JavaScript、Python等多语言实现,也能与PostGIS等主流GIS工具无缝对接。
文件结构
Geobuf核心文件结构由下面几个核心部分组成:
- Protocol Buffers协议定义层:基于Mapbox官方开源的geobuf.proto预定义Schema,通过Google Protobuf的结构化序列化规则,把GeoJSON的几何、属性等全量数据映射为二进制消息,是整个格式的编码基础。
- 可变长度头部元数据区:存储全局配置信息,包括坐标精度控制参数、要素总数量、全局边界框范围、自定义扩展字段标识,程序读取这部分就能快速掌握数据集整体概况,无需解析全量数据。
- 几何数据压缩层:采用差分整数编码对经纬度坐标进行压缩,把原始浮点坐标转换为整数序列存储,在保留小数点后6位精度的前提下,大幅减少坐标数据的存储空间,这也是Geobuf体积远小于普通GeoJSON的核心原因。
- 属性数据共享层:对所有要素的属性键值对进行去重处理,把重复的属性名、属性值统一存储为共享字典,后续要素仅通过字典索引引用对应属性,避免大量重复字符串占用存储空间。
- 要素主体存储区:文件的核心主体,按顺序连续排列所有地理要素,每个要素独立封装几何类型标识、压缩后的坐标序列、属性字典索引,支持增量解析和部分读取,可按需提取单个要素而不用加载完整文件。
- 扩展兼容预留区:Protobuf原生的可选字段机制预留的扩展空间,支持后续新增几何类型、自定义元数据等扩展内容,保证格式的前向和后向兼容性,适配不同场景的定制化需求。
优点
- 超高压缩比:能将普通GeoJSON文件体积缩小6-8倍,即便对比经过gzip压缩的GeoJSON,体积仍能再减少2-2.5倍,大幅降低存储占用和网络传输带宽消耗。
- 编解码性能优异:基于Protocol Buffers的二进制序列化机制,编码和解码速度甚至超过原生JSON的parse/stringify操作,在处理大规模地理要素集时性能优势尤为明显。
- 完全兼容GeoJSON:支持所有标准GeoJSON数据结构,包括任意自定义扩展属性,不会丢失任何要素语义,能无缝对接现有基于GeoJSON的GIS工作流。
- 支持流式按需访问:具备增量解析能力,读取过程中可逐步提取要素,无需一次性将全量数据加载到内存,还支持部分读取,仅加载目标要素片段,大幅降低大文件处理的内存开销。
- 生态适配性较好:提供JavaScript、Python、Java等多语言官方实现,PostGIS等主流空间数据库已内置ST_AsGeobuf等原生转换函数,可直接在数据库层完成格式编码输出。
缺点
- 格式规范稳定性不足:官方文档明确标注编码Schema仍存在调整空间,长期依赖该格式的项目可能面临版本兼容风险,不同版本生成的文件可能出现解析异常。
- 桌面GIS工具原生支持度低:相比GeoJSON、Shapefile等成熟格式,QGIS、ArcGIS等主流桌面GIS软件大多未提供原生的Geobuf读写能力,多数场景下需要借助第三方插件或代码转换才能导入导出数据。
- 无内置空间索引:格式本身未集成原生空间索引结构,无法像FlatGeobuf那样直接通过文件内索引完成毫秒级空间范围过滤,大规模空间查询时仍需全量解析数据,性能受限。
- 人工可读性极差:作为纯二进制格式,无法像GeoJSON那样直接用文本编辑器打开查看、手动修改要素属性,数据校验和人工调试的门槛远高于文本类地理数据格式。
- 单要素顶点数量存在硬限制:受格式设计约束,单个Polygon要素最多支持25000个环、10万个顶点,单个MultiPolygon最多支持1万个子多边形、10万个总顶点,处理超大型复杂几何要素时可能超出格式上限。
应用场景
Geobuf凭借极致的压缩比和远超原生JSON的编解码性能,广泛应用于Web地图前端大规模矢量要素的高效可视化场景,能大幅降低浏览器端的加载延迟与内存占用,同时适配PostGIS等空间数据库的海量地理数据存储,显著节省磁盘存储空间,在分布式GIS系统、位置服务平台的跨节点数据传输中,它能大幅削减带宽消耗,也常被用于国家级行政区划边界、邮政编码数据集等大型地理资源的分发共享,还能通过增量解析特性支撑移动端离线地图包的轻量化构建,是各类对地理数据传输、存储效率有高要求的GIS应用的理想格式选择。
示例图
1. 使用ST_AsGeobuf配合geobuf解决geojson过大的问题。

文件打开方式
1. vue中使用geobuf。

相关 GIS 文件
MID
IMDF
STYLX
OpenDRIVE (.xodr)
参考资料
- https://www.cnblogs.com/polong/p/11532450.html
- https://blog.csdn.net/gitblog_00601/article/details/141078255
- https://www.91mszl.com/zhangwuji/article/details/1331
- https://blog.csdn.net/qq_40323256/article/details/123995919