Создание геометрии из широты / долготы в таблице с помощью PostGIS?

15

У меня есть таблица с более чем 800 000 записей, включая лат и длинный столбец. Источник данных не создавал геометрии, поэтому я искал, как это сделать. Я знаю, что есть ST_MakePoint (x, y, SRID), но вся документация и другие потоки показывают, как создавать отдельные точки. Как создать тип геометрии, используя эти столбцы?

dknuth
источник
1
Вы имеете в виду создать линии из этих точек? Поскольку точки - это геометрия, также как линии и многоугольники ... Итак, если вы хотите создать линии из этих точек, посмотрите это недавнее сообщение в блоге Пола Рэмси: blog.cleverelephant.ca/2015/03/making-lines-from -points.html
DPSSpatial
Нет. Я хотел преобразовать их в типы геометрии, которые будут использоваться в пространственных запросах. Похоже, на мой вопрос ответили, так что спасибо!
dknuth

Ответы:

32

Более новые версии PostGIS допускают следующий, несколько более распространенный синтаксис:

ALTER TABLE your_table ADD COLUMN geom geometry(Point, 4326);

Затем используйте ST_SetSrid и ST_MakePoint для заполнения столбца:

UPDATE your_table SET geom = ST_SetSRID(ST_MakePoint(longitude, latitude), 4326);

Смотрите документацию здесь:

anneb
источник
14

Если вы еще не добавили столбец геометрии (при условии, что EPSG: 4326 здесь):

SELECT AddGeometryColumn ('your_table','geom',4326,'POINT',2);

Затем UPDATE, передавая имена ваших полей x и y:

UPDATE yourtable SET geom = ST_SetSRID(ST_MakePoint(longitude, latitude), 4326);

Это обновит всю таблицу, если вы не включите WHEREпункт

Ссылка на ST_SetSrid: https://postgis.net/docs/ST_SetSRID.html

томы
источник
2
Я думаю, что ST_SRID должен быть ST_SetSRID. Я получил ошибку при использовании ST_SRID
Гупта