Changer le SRID des données existantes dans PostGIS?


50

Lors de l'importation de mes données de fichier de formes dans PostGIS, je n'avais pas sélectionné la projection appropriée.

Comment est-ce que je change maintenant le SRID des données, sans transformer les coordonnées?

Réponses:


84

Il existe une fonction de ligne unique qui le fait pour vous. Il suffit d'utiliser la requête SQL suivante:

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

Mais, si vous êtes comme moi, les marches miniatures basses vous intéresseront. Logiquement parlant, la fonction ci-dessus est équivalente au processus en quatre étapes suivant:

  1. Dans la table geometry_columns, mettez à jour le SRID avec la valeur requise.

  2. Supprimez la contrainte sur la table à l'aide de l'instruction SQL suivante

    ALTER TABLE mytable DROP CONSTRAINT enforce_srid_the_geom;

  3. Mettre à jour le SRID de la géométrie à l'aide de l'instruction SQL suivante

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

  4. Ajoute la contrainte en utilisant l'instruction SQL suivante

    ALTER TABLE mytable

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


1
Voir postgis.org/docs/ST_SetSRID.html pour plus d'informations et des liens
BradHards

13

Avec PostGIS 2.x, les colonnes de géométrie utilisent généralement des typmods geometry(Point, 1234). Pour ceux-ci, vous pouvez utiliser ALTER TABLE pour modifier directement le type de colonne de géométrie en une étape.

Par exemple, pour définir le SRID de geomdans mytablesur WGS84, utilisez ST_SetSRID :

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

Notez que cela ne modifiera que le SRID, mais ne transformera pas les données de coordonnées.


1
Avec un changement trivial, cela fonctionnera également avec les colonnes géographiques , ce qui UpdateGeometrySRIDne prend pas en charge.
DSZ
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.