如何从PostGIS的polygon几何对象中提取独立的经纬度坐标数组
PostGIS提取Polygon经纬度独立数组实现方案
完全可以实现,核心思路是先拆解Polygon的所有顶点,再分别聚合经度、纬度数值到不同数组。
核心依赖函数
ST_DumpPoints(geom):PostGIS内置空间函数,用于拆解几何对象的所有顶点,返回包含顶点路径、顶点geometry的记录集ST_X(point_geom):提取点几何的X坐标,对应WGS84等地理坐标系下的经度值ST_Y(point_geom):提取点几何的Y坐标,对应WGS84等地理坐标系下的纬度值array_agg():PostgreSQL内置聚合函数,可将多行单列值合并为数组
示例查询
假设你的业务表名为area_table,存储Polygon的字段为geom,表主键为gid,提取指定记录经纬度数组的语句如下:
SELECT array_agg(ST_X((point).geom)) AS longitude_array, array_agg(ST_Y((point).geom)) AS latitude_array FROM area_table, LATERAL ST_DumpPoints(geom) AS point WHERE gid = 1 -- 替换为你要查询的记录主键值 GROUP BY gid;
注意事项
若你的Polygon包含内环(洞结构),返回的坐标会默认按「外环线→内环1→内环2…」的顺序排列。仅需要外环坐标的话,可在WHERE子句中新增路径筛选条件:
WHERE gid = 1 AND (point).path[1] = 1
内容的提问来源于stack exchange,提问作者Amrmsmb
相关产品推荐
相关产品推荐

