内容提要
PostGIS 3.7.0rc3 发布候选版发布,包含自 3.6.4 以来的错误修复和新功能。主要变更包括:不再支持 PostgreSQL 12/13 及 GEOS 3.10 以下版本;address_standardizer 和 tiger_geocoder 扩展移出主仓库;调整拓扑构建容差语义。新增 ST_IsSimpleDetail、ST_CoverageEdges、ST_MinimumSpanningTree、ST_MMin/ST_MMax、NURBSCurve 等函数,改进加载器参数与栅格支持,并优化 ST_DWithin 等性能。
延伸解读
升级前先核对环境依赖
该候选版明确不再支持 PostgreSQL 12/13 和 GEOS 3.10 以下版本,运行环境需为 PostgreSQL 14–19beta3、GEOS 3.10+、Proj 6.1+ 并依赖 libgmp。若要使用全部 postgis 扩展功能,还需 GEOS 3.15+;postgis_sfcgal 的完整功能则要求 SFCGAL 2.3+。升级前应逐项确认现有数据库与依赖库版本,避免安装后才发现不兼容。
两个地理编码扩展已独立维护
address_standardizer 和 tiger_geocoder 已从主仓库移出,分别迁至独立仓库。这意味着它们不再随 PostGIS 主包一同发布,依赖这两个扩展的项目需要单独获取和跟踪其版本。文章同时提到配套的 postgis_tiger_geocoder 2025.2,说明其版本节奏已与 PostGIS 主版本分离,部署和升级流程需相应调整。
拓扑容差语义变化需重点检查
拓扑构建函数对容差参数的解释发生改变:旧默认值 0 过去表示“使用拓扑精度”,现在 0 就是真正的 0,而新的默认值 -1 才表示“使用拓扑精度”。已有调用若显式传入 0 或依赖旧默认行为,构建结果可能与以往不同。升级后应复查拓扑构建相关代码与脚本,确认容差传参符合新语义。
新增函数与性能改进的实际关注点
本版新增 ST_IsSimpleDetail、ST_CoverageEdges、ST_MinimumSpanningTree、ST_MMin/ST_MMax、NURBSCurve 等函数,并改进加载器参数与栅格支持。性能方面,ST_DWithin 借助 GEOSPreparedDistance 与缓存加速,构建选项还使 ST_Collect 聚合延迟在本地基准中降低约 4%。这些变化对空间查询和批量加载有直接价值,但作为候选版,生产采用前仍应结合自身数据验证。
Q&A
PostGIS 3.7.0rc3 对 PostgreSQL 和 GEOS 的最低版本要求是什么?
该版本要求 PostgreSQL 14-19beta3,GEOS 3.10+,Proj 6.1+,并需要 libgmp。不再支持 PostgreSQL 12/13 和 GEOS 3.10 以下版本。
PostGIS 3.7.0rc3 有哪些破坏性变更?
主要破坏性变更包括:拓扑构建函数中容差0现在表示真正的0,-1表示使用拓扑精度;移除对 PostgreSQL 12/13 和 GEOS <3.10 的支持;address_standardizer 和 tiger_geocoder 扩展移出主仓库;移除 ST_MemCollect 聚合函数;CG_AlphaShape 现在返回 MultiPolygon;文档构建需要 Python 3 和 SVG 栅格化工具。
PostGIS 3.7.0rc3 新增了哪些函数?
新增函数包括:ST_IsSimpleDetail、ST_CoverageEdges、ST_MinimumSpanningTree、ST_MMin/ST_MMax、NURBSCurve、ST_CatmullSmoothing、ST_3DInterpolatePoint、ST_XSize/ST_YSize/ST_ZSize/ST_MSize、CG_PolygonRepair、CG_ApproximateMedialAxis 重载、SFCGAL 屋顶生成算法等。
如何升级到 PostGIS 3.7.0rc3?
安装二进制或运行 pg_upgrade 后,对于 PostGIS 3 系列执行 SELECT postgis_extensions_upgrade(); 对于 PostGIS 2 系列先执行 ALTER EXTENSION postgis UPDATE; 然后执行两次 SELECT postgis_extensions_upgrade();。
PostGIS 3.7.0rc3 在性能方面有哪些改进?
性能改进包括:使用 GEOSPreparedDistance 和缓存加速 ST_DWithin;优化拓扑中重复边细分的 GiST 索引;使用 -fno-semantic-interposition 构建扩展模块以利用 LTO 优化,本地测试中 ST_Collect 聚合延迟降低约4%;改进栅格和拓扑操作的健壮性。
PostGIS 3.7.0rc3 中 address_standardizer 和 tiger_geocoder 扩展发生了什么变化?
这两个扩展已被移出 PostGIS 主仓库。address_standardizer 移至 https://github.com/postgis/address_standardizer,tiger_geocoder 移至 https://git.osgeo.org/postgis/postgis_tiger_geocoder。