PostGISの既存データのSRIDを変更しますか?


50

シェープファイルデータをPostGISにインポートしているときに、適切な投影法を選択しませんでした。

座標を変換せずに、データのSRIDを変更するにはどうすればよいですか?

回答:


83

これを行う1行の関数があります。次のSQLクエリを使用するだけです。

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

しかし、あなたが私のようであれば、低レベルのミニチュアステップに興味があります。論理的には、上記の機能は次の4つのステッププロセスと同等です。

  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では、ジオメトリ列は通常のようなtypmodを使用しますgeometry(Point, 1234)。これらの場合、ALTER TABLEを使用して、ジオメトリ列のタイプを1ステップで直接変更できます。

たとえば、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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.