Зміна SRID існуючих даних у PostGIS?


50

Під час імпорту моїх даних з формату до PostGIS я не вибрав належну проекцію.

Як зараз змінити SRID даних, не перетворюючи координати?

Відповіді:


83

Існує функція єдиного рядка, яка робить це для вас. Просто використовуйте наступний запит SQL:

select UpdateGeometrySRID('Schema Name', 'mytable', 'the_geom', newSRID) ;

Але, якщо ти такий, як я, тебе зацікавили б мініатюрні кроки низького рівня. Логічно кажучи, зазначена вище функція еквівалентна наступним чотирьохшаговим процесам:

  1. У таблиці geometry_column оновіть SRID до необхідного значення.

  2. Опустіть контрагент на стіл, скориставшись наступним оператором SQL

    ALTER TABLE mytable DROP CONSTRAINT enforce_srid_the_geom;

  3. Оновіть SRID'd геометрії за допомогою наступного оператора SQL

    UPDATE mytable SET the_geom = ST_SetSRID(the_geom, newSRID);

  4. Додайте контрант назад за допомогою наступного оператора SQL

    ALTER TABLE mytable

    ADD CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = (newSRID));


1
Дивіться postgis.org/docs/ST_SetSRID.html для отримання додаткової інформації та посилань
BradHards

13

У PostGIS 2.x стовпці геометрії зазвичай використовують типові типи geometry(Point, 1234). Для цього ви можете використовувати ALTER TABLE, щоб безпосередньо змінити тип стовпця геометрії за один крок.

Наприклад, для встановлення SRID geomу mytableв WGS84, використовуйте ST_SetSRID :

ALTER TABLE mytable
  ALTER COLUMN geom
    TYPE geometry(Point, 4326)
    USING ST_SetSRID(geom, 4326);

Зауважте, що це лише змінить SRID, але не перетворить дані координат.


1
З тривіальною зміною це також буде працювати з географічними стовпцями, що UpdateGeometrySRIDне підтримує.
dsz
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.