如何更改SRID';用于Oracle SDO_几何体的s
我有Oracle分配的SRID为81989的空间数据。我想把它改成27700——它们都是相同的坐标系,只是Oracle使用了自己的SRID;因此不需要重新投影(例如,如何更改SRID';用于Oracle SDO_几何体的s,oracle,oracle-spatial,Oracle,Oracle Spatial,我有Oracle分配的SRID为81989的空间数据。我想把它改成27700——它们都是相同的坐标系,只是Oracle使用了自己的SRID;因此不需要重新投影(例如,SDO_CS.TRANSFORM不起作用,因为它实际上也改变了坐标,这是我不想要的) 我已经很容易地更新了USER\u SDO\u GEOM\u元数据,但是包含数据本身的SDO\u几何体也有SRID,我不知道如何更改它 例如,我当前的数据如下所示: MDSYS.SDO_GEOMETRY(2001,81989,MDSYS.SDO_PO
SDO_CS.TRANSFORM
不起作用,因为它实际上也改变了坐标,这是我不想要的)
我已经很容易地更新了USER\u SDO\u GEOM\u元数据
,但是包含数据本身的SDO\u几何体
也有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_几何体中的单个元素,同时保持阵列的其他方面不变
有人能给我指一下方向吗?谢谢。要更新SRID,您可以使用以下方法:
UPDATE YOUR_TABLE T
SET T.YOUR_SDO_GEOMETRY_COLUMN.SDO_SRID = 27700
WHERE T.YOUR_SDO_GEOMETRY_COLUMN IS NOT NULL
请注意,使用表别名(如本例中的T)是必要的。对于其他人,可能需要注意的是,为了真正做到这一点,必须首先删除空间索引,更新元数据表,然后执行srid更新,然后重新添加空间索引