Створення геометрії з lat / lon в таблиці за допомогою PostGIS?


16

У мене є таблиця з понад 800 000 записів, включаючи лат і довгу колонку. Джерело даних не створювало геометрії, тому я роздивлявся, як це зробити. Я знаю, що існує ST_MakePoint (x, y, SRID), але вся документація та інші теми показують, як створити окремі точки. Як створити тип геометрії за допомогою цих стовпців?


1
ти маєш на увазі створити лінії з цих точок? Тому що точки - це геометрія так само, як і лінії та багатокутники ... Тож якщо ви дивитесь на створення ліній з цих точок, перегляньте це нещодавнє повідомлення в блозі від Paul Ramsey: blog.cleverelephant.ca/2015/03/making-lines-from -points.html
DPSSpatial

Ні. Я мав на увазі як перетворення їх на типи геометрії, які будуть використовуватися в просторових запитах. Схоже, на моє запитання відповіли, хоча так дякую!
dknuth

Відповіді:


33

Новіші версії 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);

Дивіться документацію тут:


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
Gupta
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.