我需要将potgres几何数据类型转换为lat long。
geom列存储坐标,但它们不是人类可读的。
我无法弄清楚如何获得构成多边形的每一个点。
几何数据类型https://postgis.net/docs/reference.html#Geometry_Outputs
有一些输出选项。
我需要每个点都很长,因为我必须在此代码中使用它们来定义和渲染谷歌地图上的多边形
$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
]);
问题是我无法访问lat long来定义构成多边形的点。
我正在使用YII2,yii2-google-maps扩展程序,PostGis Postgress。
答案 0 :(得分:3)
SELECT ST_AsText(geom) FROM colonias
SELECT ST_AsGeoJSON(geom) FROM colonias;
SELECT ST_AsGML(geom) FROM colonias
SELECT ST_X(geom),ST_Y(geom) FROM colonias
考虑到您的几何不是点,您必须首先使用ST_DumpPoints提取点,然后如上所述解析它们。一种直接的方法是使用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;