postgis 上的几何多边形到经纬度

Geometry polygon to lat long on postgis

我需要将 potsgres 几何数据类型转换为经纬度。

这是我的table

geom 列存储坐标,但它们不是人类可读的。

我只是想不通如何获得构成多边形的每个点。

几何数据类型 https://postgis.net/docs/reference.html#Geometry_Outputs 有一些输出选项。

我需要很长的每个点,因为我必须在此代码中使用它们来定义和渲染 google 地图上的多边形

$coords = [
          new LatLng(['lat' => 25.774252, 'lng' => -80.190262]),
          new LatLng(['lat' => 18.466465, 'lng' => -66.118292]),
          new LatLng(['lat' => 32.321384, 'lng' => -64.75737]),
        ];

        $polygon = new Polygon([
          'paths' => $coords
        ]);

问题是我无法长时间访问以定义构成多边形的点。

我正在使用 YII2、yii2-google-maps 扩展、PostGis Postgress。

用于在 WKT use the function ST_AsText 中显示几何:

SELECT ST_AsText(geom) FROM colonias

如果您更喜欢 GeoJSON or GML,请使用以下功能:

SELECT ST_AsGeoJSON(geom) FROM colonias;
SELECT ST_AsGML(geom) FROM colonias 

要拆分经度和纬度,请使用函数 ST_X and ST_Y:

SELECT ST_X(geom),ST_Y(geom) FROM colonias

考虑到您的几何不是点,您必须首先使用 ST_DumpPoints an then parse them as described above. A straightforward way to do so is using CTE(又名 WITH 子句)提取点。

示例:

WITH j AS (
SELECT (ST_DumpPoints(ST_GeomFromText('POLYGON (( 2 0, 2 3, 0 2, 2 0 ))'))).geom AS point
) SELECT ST_X(j.point), ST_Y(j.point) FROM j;