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?

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));


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.


11
Com uma alteração trivial, isso também funcionará com colunas geográficas , que UpdateGeometrySRIDnão suportam.
dsz 31/01
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.