11

我有 Oracle 分配了 SRID 81989的空间数据。我想将其更改为27700 - 它们都是相同的坐标系,只是 Oracle 使用自己的 SRID;所以不需要重新投影(SDO_CS.TRANSFORM因为它实际上也改变了坐标,所以这不起作用,我不想要))。

我已经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 中的单个元素,同时保持数组的其他方面不变。

谁能指出我的方向?谢谢。

4

1 回答 1

25

要更新 SRID,您可以使用以下内容:

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

请注意,必须使用表别名(如本例中的 T)。

于 2013-02-05T14:44:02.393 回答