Cambiare SRID di dati esistenti in PostGIS?


50

Durante l'importazione dei dati del mio file di forma in PostGIS, non ho selezionato la proiezione corretta.

Come posso ora cambiare il SRID dei dati, senza trasformare le coordinate?

Risposte:


84

C'è una funzione a linea singola che fa questo per te. Usa la seguente query SQL:

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

Ma, se sei come me, ti interesserebbero i passaggi di basso livello in miniatura. Logicamente parlando, la funzione sopra è equivalente al seguente processo in quattro fasi:

  1. Nella tabella geometry_columns, aggiorna l'SRID al valore richiesto.

  2. Rilasciare il contrappunto sulla tabella, utilizzando la seguente istruzione SQL

    ALTER TABLE mytable DROP CONSTRAINT enforce_srid_the_geom;

  3. Aggiorna il SRID della geometria usando la seguente istruzione SQL

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

  4. Aggiungi nuovamente il contrappunto utilizzando la seguente istruzione SQL

    ALTER TABLE mytable

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


1
Vedi postgis.org/docs/ST_SetSRID.html per maggiori informazioni e collegamenti
BradHards,

13

Con PostGIS 2.x, le colonne geometriche in genere usano typmods come geometry(Point, 1234). Per questi è possibile utilizzare ALTER TABLE per modificare direttamente il tipo di colonna della geometria in un solo passaggio.

Ad esempio, per impostare SRID di geomin mytablesu WGS84, utilizzare ST_SetSRID :

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

Si noti che ciò modificherà solo l'SRID, ma non trasformerà i dati delle coordinate.


1
Con una banale modifica, questo funzionerà anche con colonne geografiche , che UpdateGeometrySRIDnon supportano.
dsz
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.