Alterando SRID dos dados existentes no PostGIS?

50

Ao importar meus dados do shapefile para o PostGIS, não selecionei a Projeção adequada.

Como agora altero o SRID dos dados, sem transformar as coordenadas?

Devdatta Tengshe
fonte

Respostas:

84

Existe uma função de linha única que faz isso por você. Basta usar a seguinte consulta SQL:

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

Mas, se você é como eu, estaria interessado nas etapas em miniatura e de baixo nível. Logicamente falando, a função acima é equivalente ao seguinte processo de quatro etapas:

  1. Na tabela geometry_columns, atualize o SRID para o valor necessário.

  2. Solte o contraint na tabela, usando a seguinte instrução SQL

    ALTER TABLE mytable DROP CONSTRAINT enforce_srid_the_geom;

  3. Atualize o SRID da geometria usando a seguinte instrução SQL

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

  4. Adicione a contraint novamente usando a seguinte instrução SQL

    ALTER TABLE mytable

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

Devdatta Tengshe
fonte
11
Veja postgis.org/docs/ST_SetSRID.html para obter mais informações e links
BradHards
13

Com o PostGIS 2.x, as colunas de geometria geralmente usam tipos como geometry(Point, 1234). Para isso, você pode usar ALTER TABLE para modificar diretamente o tipo de coluna geométrica em uma etapa.

Por exemplo, para definir o SRID de geomem mytablepara WGS84, use ST_SetSRID :

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

Observe que isso alterará apenas o SRID, mas não transformará os dados das coordenadas.

Mike T
fonte
11
Com uma alteração trivial, isso também funcionará com colunas geográficas , que UpdateGeometrySRIDnão suportam.
dsz 31/01