【问题标题】:How do I change the SRID's for Oracle SDO_GEOMETRY如何更改 Oracle SDO_GEOMETRY 的 SRID
【发布时间】:2013-02-05 22:44:02
【问题描述】:

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

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

【问题讨论】:

    标签: oracle oracle-spatial


    【解决方案1】:

    要更新 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 更新,然后重新添加空间索引
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-19
    • 1970-01-01
    相关资源
    最近更新 更多