更改PostGIS中现有数据的SRID?


50

将我的shapefile数据导入PostGIS时,我没有选择正确的Projection。

现在如何在不转换坐标的情况下更改数据的SRID?

Answers:


83

有一个单行功能可以为您完成此任务。只需使用以下SQL查询:

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

但是,如果您像我一样,可能会对低级微型步骤感兴趣。从逻辑上讲,以上功能等效于以下四个步骤:

  1. 在geometry_columns表中,将SRID更新为所需值。

  2. 使用以下SQL语句将约束放置在表上

    ALTER TABLE mytable DROP CONSTRAINT enforce_srid_the_geom;

  3. 使用以下SQL语句更新几何的SRID

    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中,几何列通常使用typmods geometry(Point, 1234)。对于这些,您可以使用ALTER TABLE一步直接修改几何列类型。

例如,要将geomin 的SRID设置mytable为WGS84,请使用ST_SetSRID

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

请注意,这只会更改SRID,而不会转换坐标数据。


1
进行微小的更改后,这也适用于不支持的地理位置UpdateGeometrySRID
dsz
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.