Более

Как вставить значение long / lat в базу данных postgis в виде Point (x, y)?


У меня возникли проблемы с вставкой длинных / широтных точек в виде точки. В настоящее время у меня есть массив значений long / lat, который я хочу сохранить в базе данных в виде точки. Однако я не могу сохранить его в виде точки, и когда я запрашиваю как ST_AsText (geom), я просто получаю значение long / lat, а не точку.

На картинке ниже нижний - это мой результат, где точка и долгота / широта совпадают, но я хочу получить верхний результат запроса.

Код вставки:

ВСТАВИТЬ point_route (ID, ROUTE_NAME, geom) VALUES (1, 'точка 1', ST_SetSRID (ST_makepoint (27.71595, 85.28364), 900913));

Если вы хотите, чтобы ваши точки находились в веб-меркаторе, как в запросе выше, вам необходимо изменить таблицу point_route следующим образом. У вас есть пара проблем:

1) Ваши координаты меняются местами, поскольку Винс указал, что X - это долгота, а y - широта, но у вас есть наоборот.

2) Ваша проекция - wgs84, но похоже, что вы пометили ее как веб-меркатор, что неверно и почему преобразование ничего не делает для вас.

Приведенное ниже должно исправить все эти проблемы:

ALTER TABLE point_route ALTER COLUMN geom type geometry (POINT, 900913) USING ST_Transform (ST_SetSRID (ST_FlipCoordinates (geom), 4326), 900913);

Обратитесь к руководству для получения подробной информации:

http://postgis.net/docs/ST_FlipCoordinates.html

http://postgis.net/docs/ST_Transform.html

http://postgis.net/docs/ST_SetSRID.html

http://postgis.net/docs/UpdateGeometrySRID.html