GeoArrow
2026年10月23日 09:05
GISBox是一站式三维 GIS 数据编辑、转换、发布平台,支持 OSGB/GEOTIFF/RVT 等多种 GIS 格式编辑,转换为 3DTiles/Terrain 等并发布。
简介
GeoArrow是基于Apache Arrow的开源地理空间数据存储规范,它依托Arrow的语言无关列式内存格式,将点、线、多边形等各类矢量几何的原始坐标值,以连续缓冲区搭配偏移量数组的紧凑列式布局存储,既支持坐标交错排列的紧凑模式,也支持将x、y坐标分离存储的结构体模式,完全复用Arrow生态的全量数据类型系统管理属性数据。它作为新一代高性能GIS格式,能实现零拷贝内存共享,在读取百万级多边形数据时速度比GeoJSON快10倍以上,目前已被GeoPandas、GDAL 3.9+、kepler.gl、cuSpatial等主流GIS工具原生支持,广泛应用于大规模地理大数据分析、CUDA并行空间计算、实时流地理数据处理等场景,解决了传统GeoJSON、Shapefile在处理海量空间数据时性能不足的痛点。

文件结构
GeoArrow的文件结构由4个核心部分组成:
- 基础签名与校验段:标准随机访问格式(Feather变体)的文件头尾都带有6字节的"ARROW1"签名标识,文件末尾附带4字节的footer大小字段,用于快速定位元数据位置,流式变体则以0xFFFFFFFF连续标记+4字节元数据长度作为头部起始标识。
- 几何列式存储核心区:将点、线、多边形等几何的原始坐标值存入连续缓冲区,搭配偏移量数组完成几何结构的无损重建,既支持x/y坐标交错排列的紧凑模式,也支持坐标分离存储的结构体模式,完全规避WKT/WKB的序列化开销。
- 属性数据区:直接复用Apache Arrow全量数据类型系统,以列式布局存储所有非空间属性字段,和几何列完全解耦,支持零拷贝内存共享,适配Arrow生态的各类计算引擎。
- 元数据与批次管理段:以Record Batch(记录批次)为单位组织数据,随机访问格式支持固定数量批次的随机寻址,流式格式支持任意长度批次的顺序传输,元数据中嵌入GeoArrow几何扩展类型的完整定义,保证跨语言解析一致性。
优点
- 极致内存性能:依托Apache Arrow的列式内存布局,实现零拷贝数据共享,完全规避WKT/WKB序列化/反序列化开销,处理百万级多边形数据时读取速度比GeoJSON快10倍以上,CPU利用率大幅提升。
- 原生生态兼容:完整复用Arrow全量数据类型系统,跨Python、R、C++、Rust、JavaScript等多语言无缝互通,原生适配GeoPandas、GDAL 3.9+、DuckDB、Apache Sedona、kepler.gl等主流GIS与大数据工具链。
- 超高存储压缩比:搭配GeoParquet封装后,依托Parquet的高级压缩算法,可将9.7GB的微软建筑点数据集压缩至仅1.9GB,体积远小于同精度的FlatGeoBuf等传统二进制矢量格式。
- 并行计算友好:列式存储结构天然适配SIMD向量化计算与CUDA GPU并行加速,是cuSpatial等GPU空间计算框架的原生数据格式,能充分释放硬件算力。
- 灵活几何布局:支持两种坐标存储模式,既可以用Struct数组将x、y坐标分离存储适配数值计算场景,也支持坐标交错排列的紧凑模式适配传统GIS解析逻辑。
- 流式传输支持:除随机访问的Feather格式外,还提供纯流式传输变体,可直接用于实时流地理数据处理场景,无需提前将全量数据落盘。
缺点
- 生态普及度有限:相比Shapefile、GeoJSON等传统GIS格式,主流桌面端GIS软件的原生支持覆盖不全,部分老旧版本QGIS、ArcGIS暂未提供开箱即用的读写能力。
- 无内置空间索引:格式本身不自带空间索引结构,直接加载超大规模复杂几何数据集时,随机空间查询效率远低于内置R树索引的FlatGeoBuf格式。
- 学习门槛偏高:需要使用者理解Apache Arrow的内存模型、扩展类型机制等底层概念,普通非专业GIS用户的上手难度远高于GeoJSON等简单文本格式。
- 单文件随机访问受限:纯流式GeoArrow文件不支持随机跳转读取,必须顺序解析全量批次,无法像GeoPackage那样直接按需读取指定空间范围的局部数据。
- 复杂几何兼容性待完善:对三维几何、曲线几何等小众空间类型的扩展支持尚未完全标准化,不同语言实现库之间偶尔会出现解析兼容性问题。
应用场景
GeoArrow依托Apache Arrow的高性能列式内存架构,在大规模地理空间大数据分析场景中表现突出,能无缝对接GeoPandas、Apache Spark、Apache Sedona等大数据分析工具,省去传统格式繁琐的序列化开销,大幅提升百万级以上矢量数据集的处理效率。它也广泛应用于Web端高性能地图可视化场景,通过WebAssembly绑定实现浏览器内零拷贝数据传输,让deck.gl、kepler.gl等前端地图引擎可以直接加载GB级建筑轮廓、路网等海量空间数据,无需后端中转就能完成实时重投影、面积计算等复杂空间操作。同时它适配实时流地理数据处理场景,依托Arrow Flight流式传输协议,可高效支撑交通监控、气象预报等高频地理事件的低延迟分析,还能作为数据库与多语言GIS环境之间的标准数据传输层,大幅降低不同系统间地理数据导入导出的资源消耗,在GPU并行空间计算领域,它也是cuSpatial等CUDA加速空间计算框架的原生数据格式,能充分释放硬件算力完成超大规模空间连接、空间聚类等重型计算任务。
示例图
1. 在浏览器中使用GeoRust和GeoArrow。
文件打开方式
1. 以下示例代码来验证GeoArrow是否正常工作。

相关 GIS 文件
MID
IMDF
STYLX
OpenDRIVE (.xodr)
参考资料
- https://geoarrow.org/#implementations
- https://zhuanlan.zhihu.com/p/667180101
- https://blog.csdn.net/gitblog_00015/article/details/147317299