2013-02-05 16 views
8

SRIDがに割り当てられている空間データがあります。 に変更したいのですが、どちらも同じ座標系であり、そのOracleだけが独自のSRIDを使用しています。再投影は必要ありません(SDO_CS.TRANSFORMは実際には座標を変更するので動作しませんが、これは嫌です)。Oracle SDO_GEOMETRYのSRIDを変更する方法

私はUSER_SDO_GEOM_METADATAを簡単に更新しましたが、データ自体を含むSDO_GEOMETRYにもSRIDがあり、これを変更する方法はわかりません。

だから例えば私の現在のデータは、次のようになります。

MDSYS.SDO_GEOMETRY(2001,81989,MDSYS.SDO_POINT_TYPE(420531.663898,268911.956161,NULL),NULL,NULL) 

と私はそれを変更する移動する必要があります:表のすべての行について

MDSYS.SDO_GEOMETRY(2001,27700,MDSYS.SDO_POINT_TYPE(420531.663898,268911.956161,NULL),NULL,NULL) 

。しかし、私はSDO_GEOMETRY内の単一の要素を自動的に変更する方法を知らず、配列の他の要素は変更しません。

誰も私の方向を指摘できますか?ありがとう。

答えて

16

SRIDを更新するには、あなたはこのようなもの使用することがあります:(この例では、Tのような)表の別名の使用が必要であること

UPDATE YOUR_TABLE T 
SET T.YOUR_SDO_GEOMETRY_COLUMN.SDO_SRID = 27700 
WHERE T.YOUR_SDO_GEOMETRY_COLUMN IS NOT NULL 

は注意を。

+0

驚くばかりです。ありがとうございます。 –

+9

実際にこれを行うには、まず空間インデックスを削除し、メタデータテーブルを更新してから、sridアップデートを実行してから、空間インデックスを再追加する必要があります – chrismarx

関連する問題