Получить широту / долготу от точки PostGIS - PullRequest
2 голосов
/ 23 июня 2019

У меня есть таблица 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

1 Ответ

5 голосов
/ 23 июня 2019

Вы используете проекцию 3857 (Псевдо-Меркатор), которая не в градусах долготы и широты, а в метрах.

Чтобы получить значения долготы / широты, вам необходимо использоватьпроекция 4326 :

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)
...