问题标签 [oracle-spatial]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4604 浏览

oracle - 在 Oracle Spatial (SDO) 中,有没有办法获取多边形表面所包含的多边形的质心点?

我需要在多边形本身内部的 Oracle Spatial 中找到多边形的质心。我不能使用 sdo_geom.sdo_centroid 方法,因为如果形状类似于马蹄形,这将返回形状之外的一个点。

我找到了 sdo_geom.sdo_pointonsurface 方法,但它返回的点恰好位于多边形的边缘。虽然这在数学上可行,但在我们的环境中并不安全,因为所有多边形都与其他多边形共享一个边界,有时数据中会有轻微的重叠。此重叠不能包括计算点。

是否有另一种方法可以在不编写自定义代码的情况下找到这一点?我不反对为此编写自定义代码,但如果它已经存在,我想使用一些预先构建的东西。

谢谢!

0 投票
2 回答
2024 浏览

oracle10g - 如何强制 Oracle Spatial 选择“可执行”执行计划

Oracle 10g 中的(空间)查询仅根据参数值获得不同的执行计划。遗憾的是,甲骨文根本无法执行其中一个计划,从而出现错误。更改值(低于 282 到 284)或运算符(= 到 <)给出结果。为什么计划不同?为什么 oracle 选择一个不可执行的计划?怎么做才能强制Oracle选择一个可执行的执行计划?

查询:

给出错误:

不执行的计划:

执行并给出结果的计划

0 投票
1 回答
1101 浏览

oracle - 在视图中使用 Oracle SDO_POINT 时丢失小数

我们有一个表格,其中包含坐标等。我们曾经将它们存储在两个数字字段(x 和 y)中,但现在我们已将其替换为 SDO_GEOMETRY 字段。为了向后兼容,我们创建了一个视图(与以前的表同名),我们在其中执行以下操作:

创建或替换视图 meas_pnt 为 select ..., m.position.SDO_POINT.X x_coordinate, m.position.SDO_POINT.Y y_coordinate from meas_pnt_tab m;

这适用于读取和写入,但是在将小数写入视图时,小数会丢失。我不知道为什么。有人可以帮忙吗?下图说明了问题:

更新 meas_pnt_tab m 设置 m.position.SDO_POINT.x = 2.3 where meas_key=1; 从 meas_pnt_tab m 中选择 m.position.SDO_POINT.X,其中 meas_key=1;-> x 是 2.3。好的!

更新 meas_pnt 设置 x_coordinate = 2.3 where meas_key=1; 从 meas_pnt_tab m 中选择 m.position.SDO_POINT.X,其中 meas_key=1;-> x 是 2。

0 投票
2 回答
762 浏览

oracle - oracle空间趣味练习?

  1. 请帮我将空间连接到 oracle 10g XE
  2. 我在哪里可以找到与 oracle spatial 相关的有趣事情?
0 投票
3 回答
3781 浏览

oracle - 如何将空间数据从 Oracle 移动到 Postgres

有没有人有关于如何将 Oracle Spatial 数据移动到 Postgres 的明确文档(社区版和企业数据库......谢谢

0 投票
2 回答
2555 浏览

c# - 只知道三个非共线点时如何确定圆的半径和圆心?

我正在开发一个处理 Oracle Spatial 几何的 C# 程序。当圆数据存储在几何字段中时,仅存储三个非共线点来表示圆。问题是我需要在谷歌地图网页上使用这些数据并且需要圆的中心点和半径(因为我的圆绘图功能使用了这些信息)。

任何人都可以帮助解决所涉及的数学并将所述数学转换为 C# 吗?我认为 这个页面可能有答案,但我很难理解它。给定三个点,有半径和中心的公式,但是他们将变量定义为矩阵,我在那个点迷路了。我将如何在代码中解决这个问题?

0 投票
1 回答
669 浏览

oracle - 在 Oracle 中查询最短路径

我开始研究 Oracle 11g 空间数据库,我想知道是否有查询返回两点之间或点和线串之间的最短路径(或路径)。

我有一张带有一些线串(远足小径)和多边形(地理事故)的地图,我想在避免事故的同时找到我现在所在的位置和最近的小径之间的最短路线。我已经有一个查询返回最近的路径,但没有勾勒出事故的轮廓。

非常感谢你。

0 投票
1 回答
1266 浏览

oracle-spatial - sql查询判断oracle空间表是否包含曲线

我一直在努力创建一个 Oracle SQL 查询,它会告诉我我的 SDO 表是否包含曲线或圆弧。我知道 sdo_elem_info 包含我需要的信息,但我不知道如何使用 SQL 从 sdo_elem_info 中分离出 etype 和解释。

到目前为止,我所拥有的只是:从 my_table tbl 中选择 tbl.shape.sdo_elem_info

0 投票
2 回答
9801 浏览

sql - 如何可靠地列出和删除 Oracle 中的所有空间索引?

在我的开源数据库迁移项目Flyway中,我有一个功能可以清除当前数据库架构中的所有对象,而不会删除架构本身。

典型的实现工作如下:

  • 列出所有对象
  • 为这些对象生成 drop 语句

不过, Oracle 空间索引让我很伤心。

如何可靠地枚举它们以生成 DROP INDEX xyz 语句?

注意:这必须适用于XE、10g 和 11g。MDSYS 模式中的所有引用都必须消失。

我目前的解决方案如下所示:

在 XE 上:

  • 从 mdsys.user_sdo_geom_metadata 中删除
  • 从 mdsys.sdo_index_metadata_table 删除其中 sdo_index_owner = USER
  • SELECT object_type, object_name FROM user_objects WHERE object_type = 'TABLE'
  • DROP *table_name* CASCADE CONSTRAINTS PURGE /* 用于所有表 */

在 Oracle 10g 上:

  • 从 mdsys.user_sdo_geom_metadata 中删除
  • SELECT object_type, object_name FROM user_objects WHERE object_type = 'TABLE' and object_name not like 'MDRT_%$'
  • DROP *table_name* CASCADE CONSTRAINTS PURGE /* 用于所有表 */

10g 似乎级联了 MDSYS.sdo_index_metadata_table 中元数据的删除和空间索引表(MDRT_1234$ 等)的删除。

XE没有。

10g 和 XE 都不会级联删除 MDSYS.user_sdo_geom_metadata 中的元数据

0 投票
1 回答
13146 浏览

geolocation - 地理围栏:如何使用 oracle 空间查找点或形状是否在多边形内

如何使用 Oracle 空间 SQL 查询查找点或多边形是否在另一个多边形内

这是场景;

我有一个表(STATE_TABLE),其中包含一个空间类型(sdo_geometry),它是一个多边形(比如说一个州),我有另一个表(UNIVERSITY_TABLE),其中包含空间数据(sdo_geometry)(点/多边形),其中包含大学;

现在我如何使用 SQL 选择语句查找选定的大学是否处于给定状态。

首先,我想在地理围栏中定位给定对象的存在。

谢谢。