При импорте данных моего шейп-файла в PostGIS я не выбрал правильную проекцию.
Как мне теперь изменить SRID данных, не трансформируя Координаты?
При импорте данных моего шейп-файла в PostGIS я не выбрал правильную проекцию.
Как мне теперь изменить SRID данных, не трансформируя Координаты?
Ответы:
Есть функция с одной строкой, которая делает это для вас. Просто используйте следующий запрос SQL:
select UpdateGeometrySRID('Schema Name', 'mytable', 'the_geom', newSRID) ;
Но, если вы похожи на меня, вас заинтересуют миниатюрные ступени низкого уровня. Логически говоря, вышеуказанная функция эквивалентна следующему четырехэтапному процессу:
В таблице geometry_columns обновите SRID до требуемого значения.
Удалите ограничение на таблицу, используя следующую инструкцию SQL
ALTER TABLE mytable DROP CONSTRAINT enforce_srid_the_geom;
Обновите SRID для геометрии, используя следующую инструкцию SQL
UPDATE mytable SET the_geom = ST_SetSRID(the_geom, newSRID);
Добавьте обратно ограничение, используя следующую инструкцию SQL
ALTER TABLE mytable
ADD CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = (newSRID));
В PostGIS 2.x геометрические столбцы обычно используют typemods, например 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, но не преобразует данные координат.
UpdateGeometrySRID
не поддерживаются.