我有一个 PostGIS 表,其中包含 SRID 3857 数据的几何字段。我想将几何的质心作为纬度/经度坐标,但似乎无法正确转换值:
SELECT
ST_X(ST_CENTROID(geometry)),
ST_Y(ST_CENTROID(geometry)),
ST_X(ST_TRANSFORM(ST_CENTROID(geometry),3857)) AS LONG,
ST_Y(ST_CENTROID(ST_TRANSFORM(geometry,3857))) AS LAT
FROM my_table
=> -8220067.19453888107, 4997528.08142071683, -8220067.19453888107, 4997528.08142071683
最佳答案
您正在使用 3857 projection (伪墨卡托)不是以经/纬度为单位,而是以米为单位。
要获取经/纬度值,您需要使用 4326 projection :
db=# SELECT
ST_X(ST_Centroid(geometry)),
ST_Y(ST_Centroid(geometry)),
ST_X(ST_Centroid(ST_Transform(geometry, 4326))) AS long,
ST_Y(ST_Centroid(ST_Transform(geometry, 4326))) AS lat
FROM my_table;
st_x | st_y | long | lat
-------------------+------------------+-------------------+------------------
-8220067.19453888 | 4997528.08142072 | -73.8421199734375 | 40.8994922746749
(1 row)
关于postgresql - 从 PostGIS 点获取纬度/经度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56720419/