Parquet / GeoParquet(云原生空间数据格式)
2026年04月22日 09:10
GISBox是一站式三维 GIS 数据编辑、转换、发布平台,支持 OSGB/GEOTIFF/RVT 等多种 GIS 格式编辑,转换为 3DTiles/Terrain 等并发布。
简介
Parquet是一种高效的列式存储格式,专为大数据分析场景设计,支持嵌套数据结构、高压缩比和谓词下推,能显著减少I/O开销;GeoParquet是其面向地理空间数据的标准化扩展,由开放地理空间联盟(OGC)定义,将点、线、多边形等几何对象以WKB(Well-Known Binary)格式嵌入Parquet 文件,并在元数据中明确声明坐标参考系(CRS)与几何类型,从而实现与GeoPandas、Apache Arrow、DuckDB、ArcGIS Pro等主流空间分析工具的无缝兼容,其列式结构与云原生特性使其在S3、HDFS等分布式存储中具备高效读取、动态查询与跨平台互操作能力,平均压缩率可达6.5倍,相比传统Shapefile可节省约85%存储空间。

文件结构
Parquet和GeoParquet的文件结构遵循严格的分层设计,其物理与元数据组织方式如下:
- 文件头(Header):每个Parquet文件以4字节的魔数PAR1开头,用于快速识别文件格式,确保兼容性与完整性校验。
- 行组(Row Group):数据按行水平切分为多个行组,每个行组包含若干行的所有列数据,典型大小为512MB至1GB,旨在匹配HDFS块大小以优化分布式读取性能。
- 列块(Column Chunk):每个行组内按列拆分为独立的列块,每列数据连续存储,支持不同列使用不同压缩算法(如Snappy、GZIP、ZSTD),实现细粒度优化。
- 页(Page):列块进一步划分为页,为压缩与编码的最小单元。
- 文件尾(Footer):位于文件末尾,包含Schema,行组元数据,键值对元数据。
- GeoParquet 扩展元数据:在文件尾的键值对中必须包含 geo 字段,其值为符合规范的 JSON 字符串。
优点
- 高压缩比:列式存储使相同类型数据集中存放,支持Run-Length Encoding、Delta Encoding等高效编码,压缩率可达6.5倍,相比CSV减少约75%存储空间。
- 谓词下推与列裁剪:查询仅读取所需列,跳过无关数据,显著降低I/O开销,在字段繁多的表中性能提升可达10倍以上。
- 嵌套结构支持:原生支持复杂数据模型(如JSON、Protobuf),适用于日志、传感器、多维属性等非结构化数据场景。
- 生态兼容性强:与Spark、Hive、DuckDB、Presto、Flink等主流大数据引擎深度集成,无需额外转换即可直接分析。
- 云原生适配:在S3、HDFS、Azure Blob等分布式存储中实现高效分块读取,支持并行处理与弹性扩展。
缺点
- 写入延迟高:列式组织需重组数据,写入速度远低于行式格式(如CSV),不适合高频事务写入场景。
- 不支持原地更新:文件一旦写入即不可修改,需重写整个文件才能更新数据,增加存储与计算开销。
- 无ACID事务支持:缺乏事务一致性保障,不适合需要强一致性的OLTP系统。
- 嵌套结构解析开销:复杂嵌套层级在反序列化时增加CPU消耗,影响低延迟查询性能。
应用场景
Parquet和GeoParquet凭借其列式存储、高压缩比、云原生兼容性与标准化空间元数据,广泛应用于大规模地理空间数据分析场景,如遥感影像处理、城市GIS图层聚合、土地利用分类等大数据量空间计算任务;在云数据湖架构中,它们作为核心存储格式被用于S3、Azure Data Lake等平台,支撑DuckDB、GeoPandas、Spark等工具实现高效空间查询与分析;在空间机器学习领域,GeoParquet成为训练集存储的首选,显著加速遥感图像分类、人口密度建模等端到端流程;同时,其跨平台互操作性使其成为政府、科研机构与企业间共享多源空间数据的标准化载体,支撑地图服务、LBS后端与实时空间索引系统的高并发读取需求,平均存储开销较传统格式降低85%以上,且无需转换即可直接对接主流云原生分析栈。
示例图
1. “nz-building-outlines.parquet” 数据集证明了GeoParquet的多功能性。

文件打开方式
1. Parquet文件的格式。

相关 GIS 文件
MID
IMDF
STYLX
DRG(Digital Raster Graphic,美国地质调查局)
参考资料
- https://www.cnblogs.com/znlgis/p/19784372
- https://blog.csdn.net/weixin_44188072/article/details/143856124
- https://osgeo.cn/post/175d3/
- https://blog.csdn.net/u013411339/article/details/110211596