Feather / GeoArrow(高性能列式空间数据格式)
2026年04月21日 09:29
GISBox是一站式三维 GIS 数据编辑、转换、发布平台,支持 OSGB/GEOTIFF/RVT 等多种 GIS 格式编辑,转换为 3DTiles/Terrain 等并发布。
简介
Feather是由Apache Arrow团队开发的高性能列式二进制数据格式,专为跨语言(如 Python、R)高效交换数据而设计,采用内存映射和列式存储结构,读写速度远超CSV,支持包括数值、时间戳、分类变量及NA值在内的丰富数据类型,并可选LZ4或ZSTD压缩以提升存储效率;GeoArrow是Feather的空间扩展,将WKB、WKT等地理几何类型直接嵌入Apache Arrow的列式内存模型中,实现与GeoPandas、sf等GIS工具的零拷贝交互,在保持高性能的同时标准化了空间数据的存储与传输,成为替代Shapefile和GeoJSON的新一代高效地理数据格式。
文件结构
Feather和GeoArrow的文件结构基于Apache Arrow IPC格式,具有高度标准化和列式内存映射的特性,具体结构如下:
- Feather V2 文件结构:Feather V2并非独立定义的文件格式,而是Apache Arrow IPC文件格式的磁盘序列化形式。其结构由三部分组成:文件头(File Header)、元数据(Schema Metadata) 和 数据块(Record Batches)。文件头包含魔术字(magic number)和版本标识,用于快速识别格式;元数据部分描述列的名称、数据类型(如int64、float64、timestamp、string等)、是否可为空及压缩编码方式(LZ4或ZSTD);数据块以列式存储,每个字段的数据连续排列,支持零拷贝读取,末尾可能包含字节对齐填充以优化内存访问效率。
- GeoArrow扩展结构:GeoArrow在Feather V2的基础上,通过在Arrow列中嵌入地理几何数据实现空间扩展。几何数据以两种编码方式存储:WKB(Well-Known Binary) 或geoarrow原生编码。WKB作为二进制 blob 存储于单列中,兼容传统GIS工具;geoarrow编码则将坐标拆解为结构化列(如 x、y、z 坐标分别存储为固定大小列表数组),支持交错(interleaved)或非交错(non-interleaved)布局,显著提升计算效率。元数据中包含地理空间信息,如坐标参考系统(CRS)、几何类型(Point、LineString、Polygon 等)和维度(2D/3D),以Arrow Schema的自定义字段形式附加在表头中。
- 统一的底层机制:两者均依赖Apache Arrow的C Data Interface实现跨语言零拷贝交互,文件整体遵循 Arrow的IPC规范,确保在Python、R、Rust、JavaScript等语言间无缝传输。压缩仅作用于数据块,元数据保持明文以支持快速解析,文件扩展名通常为.feather或.arrow,但内容结构完全由内部格式决定。
优点
- 极致读写性能:基于Apache Arrow列式内存模型,读写速度较CSV提升100–150倍,尤其在大数据集(百万行以上)中表现突出。
- 跨语言零拷贝交互:支持Python、R、Julia、Rust等语言直接内存映射读取,无需序列化/反序列化,显著降低数据交换开销。
- 高效压缩机制:默认采用LZ4压缩,兼顾速度与存储效率,压缩后文件体积可减少50%以上,且解压几乎无性能损耗。
- 丰富数据类型支持:原生支持数值(int64、float64)、布尔、时间戳、UTF-8字符串、分类变量及NA值,适配现代数据分析需求。
- API极简易用:Pandas仅需to_feather()和read_feather()两行代码即可完成读写,无缝集成现有工作流。
缺点
- 不支持原地更新:文件为只读设计,修改需重写整个文件,不适合频繁写入场景。
- 非最优长期存储:相比Parquet,其压缩率较低,且缺乏对嵌套结构、字典编码、分区等高级优化的支持,长期归档推荐使用Parquet。
- 复杂拓扑支持弱:不原生支持面拓扑、网络关系等高级空间操作,仍需依赖传统格式(如Shapefile)补充。
- 无schema演化能力:列名或类型变更需重建文件,缺乏像Parquet的向后兼容机制。
- 规范仍在演进:GeoArrow元数据规范(如CRS编码方式)尚未冻结,生产环境部署需关注版本兼容性。
应用场景
Feather和GeoArrow作为基于Apache Arrow列式内存模型的高性能数据格式,广泛应用于需要跨语言零拷贝交换、大规模数据快速读写与空间分析加速的场景,尤其在数据科学与地理信息系统中成为替代CSV、GeoJSON和Shapefile的首选方案:在Python与R之间频繁交换分析数据时,Feather以百倍于CSV的速度实现内存级传输,显著提升机器学习特征工程与交互式分析效率;在金融、电信等领域的实时风控与高频交易系统中,其列式布局与内存映射机制大幅降低查询延迟,支撑TB级数据的毫秒级聚合计算;GeoArrow则深度赋能地理空间分析,使Kepler.gl、lonboard等现代可视化工具能直接加载百万级多边形数据并实现流畅渲染,速度较GeoJSON提升10倍以上,同时在遥感影像处理、城市热力图生成与Web端地理服务(通过 WebAssembly)中实现无格式转换的端到端高效处理,彻底打破传统GIS数据格式的性能瓶颈。
示例图
1. kepler.gl新增了对Apache Arrow中特有的GeoArrow格式的支持。

文件打开方式
1. Feather代码格式。

相关 GIS 文件
MID
IMDF
STYLX
DRG(Digital Raster Graphic,美国地质调查局)
参考资料
https://www.cnblogs.com/znlgis/p/19784372
https://developer.aliyun.com/article/1600557
https://juejin.cn/post/7179476693852094525