如何更改Oracle SDO_GEOMETRY的SRID

时间:2013-02-05 12:21:19

标签: oracle oracle-spatial

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

有人能指出我的方向吗?感谢。

1 个答案:

答案 0 :(得分:19)

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

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

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