PostGisを使用したSRID 900913から4326への変換


8

SRIDが異なる2つのPostgresテーブルがあります。4326と900913です。後者を4326に変換します。最初にSRIDを変更しました。

Select UpdateGeometrySRID('table', 'geomcolumn', 4326).  

次に、以下を使用して参照データを変換しました。

update table set geomcolumn = ST_Transform (geomcolumn, 4326). 

これはうまくいったようです。しかし、TileMillの関連レイヤーのSRS設定をWGS84に変更すると、次のエラーが発生します。

地理的範囲を超えて検出されました。

おそらく変換は機能しませんでしたが、その理由は明らかではありません。


ない4236. 4326、:私はあなたがEPSGあるWGS84、したいと思います
アンドレイ

簡単な質問:ジオメトリがWGS84の場合、タイルミルの方が高速ですか?900913プロジェクションを使用する各レイヤーをWGS84に変換する価値はありますか?すみません。私はGIS初心者です;)
Georg

回答:


22

UpdateGeometrySRIDコマンドはメタデータを変更するだけで座標を変換しないため、変換が失敗しました。また、4326-> 4326から変換しようとすると、SRIDが等しいため変換は行われません。


次のようなテーブルを備えたPostGIS 2.xがある場合:

CREATE TABLE my_table (
  gid serial primary key,
  geom geometry(Point,900913),
  name text not null
);

ジオメトリ列の空間参照系を変換および変更する正しい方法は、ALTER TABLE DDL を使用することです。

ALTER TABLE my_table
    ALTER COLUMN geom TYPE geometry(Point,4326) USING ST_Transform(geom,4326);

同じことを実行しようとしていますが、このALTER TABLEコマンドを機能させることができません。ALTER TABLE Detail_Building_buildinglayer ALTER COLUMN Geometry TYPE geometry(Polygon、900913)USING ST_Transform(geom、2954); 発生するエラーは、リレーション「detail_building_buildinglayer」が存在しないことです。これはリレーションではなくテーブルの名前であるため、取得できません。
タイラーVeinot


ありがとう、それが問題でした。ジオメトリテーブルにgeomではなくGeometryという名前を付けたプログラム。その投稿を読んだ後、「Geometry」を探すために引用符を試してみましたが、それでも失敗しました。そのため、geometryカラム名をgeomに変更し、クエリを実行して機能しました。名前を「Geometry」に戻しただけです。名前と事件が問題を引き起こしていたと思います。
タイラーVeinot

1
SQLスクリプトの列名ではなく、データベースの列名を変更しましたか?イエス!
マグノC

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