Postgresql PostGIS从多边形中提取坐标

Postgresql PostGIS从多边形中提取坐标,postgresql,postgis,Postgresql,Postgis,我试图从PostgreSQL中的多边形列中提取纬度/经度值,这是我使用PostGIS扩展创建的,我尝试使用如下查询获取坐标 查询 ST_AsText(覆盖区域)作为覆盖区域 但是它返回的输出对我来说并不方便 输出 多边形((37.9615819622 23.7216281890869,37.961717303980123.7193965911865,37.9633413851658 23.717679977417,37.964559422483.7147617340087,37.9644240

我试图从PostgreSQL中的多边形列中提取纬度/经度值,这是我使用PostGIS扩展创建的,我尝试使用如下查询获取坐标

查询
ST_AsText(覆盖区域)作为覆盖区域
但是它返回的输出对我来说并不方便

输出
多边形((37.9615819622 23.7216281890869,37.961717303980123.7193965911865,37.9633413851658 23.717679977417,37.964559422483.7147617340087,37.9644240860015 23.7116718292236,37.9615819622 23.7216281890869))

我需要输出如下:

37.9615819622 23.7216281890869,37.961717303980123.7193965911865,37.9633413851658 23.717679977417,37.964559422483 23.7147617340087,37.9644240860015 23.7116718292236,37.9615819622 23.7216281890869

我还搜索了PostGIS文档,唯一找到的是
ST_AsGeoJSON
,它对我也没有帮助。。。 还有其他人遇到过这个问题吗

多谢各位

注意: 我知道我可以创建正则表达式规则并去掉括号,但我希望避免这种情况,并找到一种方法返回“干净”的坐标对

使用函数提取几何体和函数的所有点,并提取点的坐标。然后使用array_agg和array_to_string构建一个包含所有坐标的行

请尝试以下查询:

SELECT array_to_string(array_agg, ',') FROM 
(SELECT array_agg( ST_x(geom)||' '||ST_y(geom))  FROM 
    (SELECT (ST_dumppoints(coverage_area)).geom FROM your_table
    ) AS foo_1
) AS foo_2;

您还可以使用postgresql简化查询

SELECT substring(left(St_astext(coverage_area),-2),10) FROM tablename;

这将删除结尾处的“多边形(((“开头和”))”

修剪是最简单的方法:

从一些表格中选择btrim(st_astext(覆盖区域),“POLYGON()”

如果需要更大的灵活性,还可以覆盖线串、点和类似对象:


选择regexp\u replace(st\u astext(覆盖区域),“[A-Z()]”,“'g')
将GeoJson几何体转换为json,然后提取坐标:

选择
ST_AsGeoJSON(geom)::json->“坐标”作为坐标
从…起
你的桌子;

请参见中的示例部分以及用于PostgreSQL的示例部分。

谢谢,做得很好:)
ST_AsText
提供了一个WKT表示,它是ISO标准化的,因此此格式不会更改。所以最好也是最快的方法就是简单地从WKT字符串中去掉括号