当前位置: 首页 > 知识库问答 >
问题:

如何更改 Oracle 的 SRID SDO_GEOMETRY

穆俊名
2023-03-14

我有Oracle分配了81989的SRID的空间数据。我想将其更改为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个答案

彭宏义
2023-03-14

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

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

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

 类似资料:
  • 我有打开jdk 1.7.0和甲骨文jdk1.8.0。我已经设置了JDK1.8.0的环境变量https://askubuntu.com/questions/175514/how-to-set-java-home-for-java但是当我下载打开JDK1.7.0时,它会自动使用。当我键入: 只有一种配置:/usr/lib/jvm/java-7-openjdk-amd64/jr/bin/java,不需要

  • 问题内容: 我正在尝试使用与表相同的命令来更改视图的列大小: 但是它的投掷错误 SQL错误:ORA-00942:表或视图不存在 那么如何改变视图的列大小呢? 问题答案: 这是我遵循的过程: 1-首先通过运行以下查询找到该视图的基表 2-上面的查询将为您提供一个表,您将在该表中找到列名“ REFERENCED_NAME”下的基表。 3-现在更改该基础表的列大小。 注意:该视图可以由1个或多个1个表组

  • 问题内容: 我有一个Java应用程序连接到远程Oracle数据库上的视图。 有谁知道Java中监视此表更改的方法吗?即,如果有更新的插入等,我需要做出反应。 问题答案: 您可以在表上放置INSERT / UPDATE / DELETE触发器,以在对表进行“数据”更改时执行某些操作。(而不是更改表的结构) 我相信10g也支持视图触发器。 但是我不确定您如何通过轮询来通知其他Java进程。 抱歉。 您

  • 问题内容: 每次更新Oracle DB的特定表(任何类型的更新,包括记录的添加,删除和修改)时,我都需要在Java中运行一个方法。 对具有良好性能且不会对数据库造成太大压力的Java更改表进行“轮询”的最有效方法是什么? 不幸的是,我有很多限制: 我无法创建其他表,触发器,存储过程等,因为我无法控制数据库管理/设计。 我宁愿避免使用该职位中建议的Oracle Change Notification

  • 我有一个 ASP.NET Core应用程序,它使用nuget包 v2.19.80和连接到Oracle数据库。根据请求数据,可能需要每次连接到不同的数据库。 连接发生字符串是这样创建的: 运行以下查询时 响应是< code>tcp。如何配置连接或连接字符串,或者如何将协议从< code>tcp更改为< code > TCP 。 根据这里的留档,这是支持的2种类型。我想确保我的连接是安全的(SSL/T

  • 我正在使用RHEL8,它安装了默认的OpenJDK。哪个java命令指向/usr/bin/java。java-version提供openjdk版本“1.8.0_252” 已在/u01/app/java/location中安装java。修改了。如下图所示 现在JAVA_HOME指向/u01/app/JAVA/jdk1。8.0_241/但哪种java或java版本仍然指向OpenJDK。 bash_p