Python 如何从多边形几何体获取坐标数组
postgis中是否有返回坐标数组的空间函数?我有一个多边形作为几何体,我想让经度和纬度坐标在一个单独的数组中分开。Python 如何从多边形几何体获取坐标数组,python,postgresql,postgis,Python,Postgresql,Postgis,postgis中是否有返回坐标数组的空间函数?我有一个多边形作为几何体,我想让经度和纬度坐标在一个单独的数组中分开。 有可能吗?我不知道这样的功能,但您可以通过使用ST_DumpPoints转储多边形的点,使用ST_x和ST_y提取x和y坐标,并使用array_agg将它们聚合来轻松实现: SELECT array_agg(ST_X(geom)),array_agg(ST_Y(geom)) FROM ST_DumpPoints('POLYGON ((30 10, 40 40, 20 40, 10
有可能吗?我不知道这样的功能,但您可以通过使用
ST_DumpPoints
转储多边形的点,使用ST_x
和ST_y
提取x和y坐标,并使用array_agg
将它们聚合来轻松实现:
SELECT array_agg(ST_X(geom)),array_agg(ST_Y(geom))
FROM ST_DumpPoints('POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))');
array_agg | array_agg
------------------+------------------
{30,40,20,10,30} | {10,40,40,20,10}
(1 row)
请记住,array\u agg
依赖于分组依据
,否则您将聚合表中的所有行,例如,按id聚合:
CREATE TABLE t (id int, geom geometry(polygon));
INSERT INTO t VALUES
(1,'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))'),
(2,'POLYGON ((40 20, 50 50, 30 50, 20 30, 40 20))');
SELECT id, array_agg(ST_X((point).geom)),array_agg(ST_Y((point).geom))
FROM (
SELECT id,ST_DumpPoints(geom) FROM t -- your big query goes here
) j (id,point)
GROUP BY id;
id | array_agg | array_agg
----+------------------+------------------
2 | {40,50,30,20,40} | {20,50,50,30,20}
1 | {30,40,20,10,30} | {10,40,40,20,10}
(2 rows)
演示:请查看上面发布的更新部分我正在尝试集成您在大查询中发布的代码我有您在聊天中显示的代码session@LetsamrIt只要应用我上面使用的逻辑。如果不进行管理,请使用CREATETABLE和insert语句创建一个包含示例数据的FIDLE。最后,发布您的预期结果(以表格形式)谢谢,但请注意,我正在尝试将您发布的代码集成到主查询中我有您在聊天会话中看到的代码,但我在SELELCT@LetsamrIt错误说明了什么?发布错误,并使用CREATETABLE和insert语句创建一个样本数据。最后,发布您的预期结果(以表格格式)
ST_DumpPoints
需要一个几何体,而不是wkt文本,因此在参数中使用ST_AsText
没有任何用处。您无法用我已经给您的答案更新您的问题。问题2正是我的答案,即使comments@JimJones我会移除它