SuperAPI AI 工具集

postgis

数据与分析

查看项目

更新于 10-16 06:04

技能介绍

用途

PostGIS 3.6.1 空间数据库技能,用于在涉及地理数据、空间查询、几何运算或基于位置功能时,确保正确使用 PostGIS 3.6.1 的最佳实践。该技能为强制适用:当文件路径匹配 /geo、/spatial、/location、/coordinate、/polygon、/geometry、/postgis、/gis 等模式,或文件内容包含 ST_*、geography、geometry、SRID 时触发。

核心原则:空间数据是特殊的,通用数据库模式在地理数据上往往失效。

主要能力

PostGIS 3.6.1 新特性

  1. ST_CoverageClean(3.6.1 新增):修复多边形集合中的拓扑错误,需要 GEOS 3.14。可修复重叠、间隙、边缘不一致等问题,适用于行政边界、地块、区域等无缝覆盖场景。

  2. SFCGAL 3D 函数:增强的 3D 运算支持,包括 ST_3DIntersection(真 3D 相交)、ST_3DUnion、ST_3DArea、ST_MinkowskiSum、ST_StraightSkeleton、ST_Extrude 等。适用于建筑建模、地下基础设施、空域管理、3D 地形分析。

  3. Bigint 拓扑支持:支持 bigint 拓扑 ID,可处理超过 20 亿要素的拓扑,适用于国家级/大陆级数据集、高分辨率地块数据、OpenStreetMap 导入。

  4. PostgreSQL 18 中断处理:正确处理 PostgreSQL 18 改进的查询取消,长时间空间运算可干净取消,不再产生孤立锁或损坏状态。

数据类型选择

  • GEOMETRY:平面坐标,任意 SRID,计算更快,大距离精度较低。适用于本地/城市级应用、复杂运算、性能关键场景、非地球数据。
  • GEOGRAPHY:球面坐标,始终 WGS84,距离/面积准确但计算较慢。适用于全球应用、距离/面积精度重要、简单运算、面向用户的距离计算。

SRID 选择:4326(WGS84,GPS 坐标、Web 地图)、3857(Web Mercator,瓦片地图显示)、本地投影用于精确测量。建议始终以 4326 作为存储的真实来源,计算时按需转换。

索引策略

  • GiST 索引:大多数空间查询的默认选择
  • BRIN 索引:适用于非常大且自然有序的数据集(如按时间排序的 GPS 轨迹)
  • SP-GiST:适用于非重叠数据(点、IP 范围)
  • 支持部分空间索引、复合索引、索引聚类(CLUSTER)

查询模式

  • 距离查询:ST_DWithin、KNN(<-> 运算符)
  • 包含查询:ST_Within、ST_Contains、ST_Intersects
  • 聚合:ST_Union、ST_Collect、ST_Extent、ST_Centroid
  • GeoJSON 集成:ST_AsGeoJSON、ST_GeomFromGeoJSON,支持 Feature 和 FeatureCollection 构建

验证与修复

  • ST_IsValid、ST_IsValidReason 检查有效性
  • ST_MakeValid 修复几何(支持 method=structure 策略)
  • ST_CoverageClean 修复多边形集合
  • ST_SnapToGrid 处理精度问题

性能优化

  • 使用 && 进行边界框预过滤
  • ST_Simplify 简化显示
  • 视口感知简化
  • 大表分离几何与属性
  • 物化视图预计算空间连接

迁移模式

  • 添加空间列、创建索引、回填数据、添加约束的分步流程
  • Geometry 转 Geography 的迁移方法

使用方式

该技能在触发时会在开始时声明:「I'm applying postgis to ensure PostGIS 3.6.1 spatial best practices.」实现空间功能时需发布 PostGIS 实现摘要工件,包含空间列信息、使用的 3.6.1 特性、空间查询性能、验证清单等。

完成前检查清单:选择正确数据类型、SRID 一致(推荐 4326 存储)、所有几何列创建空间索引、验证输入几何、测试 GeoJSON 导入导出、用 EXPLAIN ANALYZE 验证查询性能、适当利用 3.6.1 特性、发布工件。

适用场景

涉及地理数据、空间查询、几何运算、基于位置功能的开发场景,包括地图应用、位置服务、GIS 数据处理、地块管理、3D 建模、大规模空间数据集等。

限制

该技能要求 PostGIS 3.6.1 与 GEOS 3.14 环境;ST_CoverageClean 需要 GEOS 3.14;SFCGAL 3D 函数需要启用 postgis_sfcgal 扩展;bigint 拓扑为 3.6.1 新增特性。具体平台、收费、价格等信息暂未提供。