SuperAPI AI 工具集

postgres-impl-postgis-geometry-2d

数据与分析

查看项目

更新于 10-15 22:18

技能介绍

用途:在 PostgreSQL 中存储、查询二维空间数据(点、线、多边形),并让空间查询走索引、距离计算单位正确。

主要能力与选择规则:geometry 使用平面坐标,速度快、函数全,但距离仅在投影 SRID 下有意义;geography 基于 WGS84 椭球,速度较慢、函数较少,但距离始终以米为单位且全球正确。本地或区域数据需要真实距离时用 geometry 加投影 SRID;全球经纬度数据用 geography(SRID 4326)。

三条核心原则:每个空间列都应建 GiST 索引,否则空间谓词会退化为顺序扫描;邻近过滤用 ST_DWithin(col, pt, dist),不要写成 ST_Distance(col, pt) < dist,后者无法利用索引;两个操作数 SRID 必须一致,混合会报错或给出错误结果,用 ST_Transform 重投影。

常用写法:CREATE EXTENSION postgis; 建表时用带 typmod 的列(如 geometry(Point, 4326)),索引 CREATE INDEX ... USING GIST (geom)。构造点时用 ST_SetSRID(ST_MakePoint(lon, lat), 4326) 或 ST_GeomFromText('POINT(...)', 4326) 明确 SRID,避免落在 SRID 0。相交判断用 ST_Intersects / ST_Within / ST_Contains,先过滤再用 ST_Distance 排序。测量面积、长度前先 ST_Transform 到投影 SRID。

限制:不适用于非空间的范围/区间数据、三维实体(需 postgis_sfcgal)、栅格数据(需 postgis_raster)以及向量相似度检索(应用 pgvector)。ST_SetSRID 只改标签不做重投影。资料未给出更多性能参数、授权或价格信息。