分布式空间分析升级后,最难排查的并不是 SQL 是否能执行,而是同一个函数究竟按平面 Geometry 还是球面 Geography 解释,边界框是否保留,栅格元数据是否被正确读取。
Apache Sedona 1.9.1 于 2026 年 8 月 5 日发布,发布说明列出 Geography 查询支持改进、多个函数的双分派、Geography 的广播空间连接、GeoTIFF geotiff.metadata 数据源、Box2D 类型及构造函数、ST_Extent 聚合与空 GeoParquet 的 bbox 元数据处理。这些变化属于数据类型、谓词、索引范围和元数据四条不同链路,必须分别验收。
可核查事实
- Apache Sedona 1.9.1 于 2026 年 8 月 5 日发布。
- 发布说明改进 Geography 查询支持,并为
ST_AsText、ST_GeometryType、ST_Area、ST_Centroid、ST_Length等加入 Geography 双分派。 - Geography 类型新增
ST_Buffer,并支持ST_Contains的广播空间连接。 ST_Within、ST_DWithin、ST_Intersects和ST_Equals也加入 Geography 支持。- 新增
geotiff.metadata数据源以读取 GeoTIFF 文件元数据。 - 版本加入 Box2D 类型、
ST_Box2D与ST_MakeBox2D等构造能力,并增加返回 Box2D 的ST_Extent聚合。 - 空 GeoParquet 文件不再在元数据中写入 bbox。
- 发布说明还修复了非子午线边缘平面多边形的
ST_S2CellIDs覆盖不足问题。
核心机制
Geometry 与 Geography 的差异不是函数名称不同,而是距离、面积、缓冲和谓词计算所依赖的空间模型不同。双分派意味着同一个 SQL 接口会依据输入类型走不同实现,迁移时因此要把数据类型、SRID、输出单位和边界案例一起记录。Box2D 则提供一种轻量范围表达,适合在聚合和过滤前传递空间外包框;它不是精确几何,不能替代相交或包含判定。GeoTIFF metadata 与空 GeoParquet bbox 的变化提醒团队:数据目录、优化器或下游服务会依赖元数据,空数据集和缺失范围必须作为明确状态处理。
技术路径
为升级建立四组最小数据:跨经线或高纬度的点线面、常规平面投影数据、含已知范围和投影的 GeoTIFF,以及完全空的 GeoParquet。
对每组分别运行面积、长度、缓冲、包含、邻近和相交 SQL,保存输入类型、SRID、输出单位、分区数和结果行数。以同一 Geometry/Geography 样本比对结果,确认业务选择的是预期语义;用 ST_Extent 和 Box2D 记录范围,再用精确谓词复核候选对象;读取 geotiff.metadata 并与 gdalinfo 或受控样本比较;最后检查空 GeoParquet 不会被下游误判为全球范围或有效 bbox。
GIS 场景
物流与海洋轨迹常跨越大范围,距离和缓冲更需要显式选择 Geography 语义;城市地块处理可继续以投影 Geometry 为主,但应验证混入 Geography 数据时的 SQL 行为。遥感数据湖可以使用 GeoTIFF metadata 建立影像目录,再以 Box2D 做分区级候选过滤;洪水、火险等批量分析还应把空 GeoParquet 当作正常输出情形,避免下游拼接流程用伪 bbox 触发错误范围查询。
检查清单
- 是否为每个关键表记录 Geometry/Geography 类型、SRID 和单位?
- 是否用跨经线、高纬和常规城区样本分别验证面积、距离与缓冲?
- 是否比较双分派函数的结果类型、数值和行数?
- 是否将 Box2D 或
ST_Extent仅用于范围候选,并以精确谓词复核? - 是否用独立工具抽查
geotiff.metadata的范围、波段和坐标信息? - 空 GeoParquet 是否被目录、索引和下游作业明确识别为无 bbox?
风险边界
发布说明中的 Geography 支持不表示任意旧 SQL 会自动获得正确球面语义;业务仍须指定类型、SRID 和单位。Box2D 是范围近似,不能用于最终空间关系判定。GeoTIFF metadata 的可读性也不保证所有驱动、云存储路径或损坏文件都一致。升级必须在目标 Spark、存储格式和生产分区策略下复验,而不能只依赖单机示例。
结论
将 Geography 语义、范围近似、影像元数据和空数据集分开验收,才能把 Sedona 1.9.1 的功能变更落实为可靠的分布式 GIS SQL 行为。