问题标签 [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 回答
357 浏览

mybatis - mybatis中动态构造SQL请求参数

以下是我的查询

在上面的查询中,距离的值将发生变化。'SDO_BATCH_SIZE=0 距离=60 单位=英里'

那么我可以通过使用 mybatis/ibatis 将值例如 60 添加到参数来动态构造请求参数吗?

0 投票
2 回答
1134 浏览

oracle - Oracle SDO_JOIN,需要多长时间?

我想使用 SDO_JOIN-Operator 来 selfJoin 一个表。该表具有以下结构: ID VARCHAR2(20)
SHAPE SDO_GEOMETRY()

该表有 25778 行。

以下 SDO_JOIN-Statement 需要 90 秒:

90 秒是正常时间还是太高。我不知道什么是执行的好时机。

再见,安德烈

0 投票
1 回答
146 浏览

sql - SEM_MATCH 调用返回 ORA-00902:无效数据类型

当尝试从 http://docs.oracle.com/cd/E11882_01/appdev.112/e25609/sem_apis_ref.htm运行示例时,除了最重要的 SPARQL 查询调用之外,一切都很好。这是示例“家庭”脚本的缩短版本:

SQLPLUS 输出:

这些示例中的所有类似调用都失败并出现相同的错误。有任何想法吗?

0 投票
3 回答
1035 浏览

sql - Can Oracle be forced to use the spatial index for sdo_filter in combination with an or clause?

I have a table MY_TABLE in oracle with a Spatial index MY_IDX and about 22000 rows. The following query runs in less than ~500 ms and returns ~2600 results.

When I add an "OR" clause with another spatial filter, the query takes ~30 seconds to run, consuming vastly more CPU than it should:

The explain plans of the queries are very different - the first shows table access is "BY INDEX ROWID", where as the second is "FULL". Is there a way I can get the second query to perform in a manner similar to the first?

v$version returns:

On a side note, a different db running oracle enterprise edition produces a plan in which the index is used and the results merged. Can this be done with standard edition?

0 投票
1 回答
489 浏览

oracle - SDO_GEOM.SDO_INTERSECTION 给出奇怪的结果

我正在使用 oracle 空间分析来计算两个几何的交集,但我得到了非常奇怪的结果。

  • 黄色是几何1
  • 蓝色是几何2
  • 红色是路口:SDO_GEOM.SDO_INTERSECTION(geometry1,geometry2, 0.00005);

在此处输入图像描述

这怎么可能呢?我应该使用其他功能吗?

0 投票
2 回答
2248 浏览

java - 如何访问 JPA 转换器中的 jdbc 连接?

我正在使用 Oracle Spatial,并且我有一个带有 SDO_GEOMETRY 字段的表。该表映射到 JPA 实体。我想让 SDO_GEOMETRY 字段映射到 javaoracle.spatial.geometry.JGeometry类型。

我想我应该使用 JPA转换器并在java.sql.Struct(或可能oracle.sql.STRUCT)之间进行转换。

问题是转换为 Struct 的 JGeometry 方法JGeometry.storeJS(Connection conn, JGeometry geom)需要 jdbc 连接作为参数。

springEntityManagerFactory配置了持久化单元名称,持久化单元包含数据源jndi名称,数据源定义在tomcat中,作为连接池。

关于如何获得Connection转换器的任何想法?

这是我想要实现的:

我正在使用 Spring 4、spring-data-jpa 1.6、Hibernate 4、Tomcat 8、Oracle 12c。

更新了更多信息

弹簧配置:

0 投票
1 回答
726 浏览

sql - Oracle 中基于 SRID 的地理或投影数据

背景: 我的应用程序需要显示存储在 Oracle 中的空间数据(几何)的 MBR。为此,我目前正在使用 Oracle 的 SDO_AGGR_MBR() 函数,但速度很慢。经过一番研究,我发现了一个函数 SDO_TUNE.EXTENT_OF(),它也计算 MBR,并且比 SDO_AGGR_MBR 快得多。它有两个问题。它仅适用于投影坐标中的 2D 数据。为了利用 EXTENT_OF 的性能优势,我决定将其用于投影数据并回退到 SDO_AGGR_MBR 用于地理数据。

问题: 我一开始假设所有 SRID 介于 4000 到 5000 之间的数据都是地理数据,但这并不完全正确。我找到了一个名为 MDSYS.CS_SRS 的表/视图,它存储了坐标系信息。

我打算使用查询找到 SRID:

然后使用此 SRID 查询 MDSYS.CS_SRS 以查明数据是地理数据还是投影数据。它有名为 WKTEXT 的列,其行以 PROJCS 或 GEOGCS 开头。

我可以对此进行原型制作,它似乎可以工作,但完全相信这是正确的方法。上面的查询获取数据第一行的 SRID。我不知道 SRID 在单个列中是否可以不同。我所做的另一个假设是 WKTEXT 列中的文本。如果在所有情况下都不是 PROJCS/GEOGCS 并且值在不同版本的 Oracle 之间发生变化,我会遇到很多麻烦。事实上,现在,我只是假设 PROJCS 表示投影 CS,GEOGCS 表示地理 CS,我不确定它是否正确..

我想知道是否有更简单的方法来确定 Oracle DB 中的空间数据是投影还是地理数据。

0 投票
1 回答
355 浏览

java - 是否可以使用 Hibernate-Spatial over Oracle 读取 SDO_POINT 的 Z 组件?

我正在使用 Hibernate-Spatial 将com.vividsolutions.jts.geom.Point实体中的SDO_POINT字段映射到我的 Oracle 11g 表中的字段。

表中的列定义为:

该列映射为:

@QueryType注释来自 QueryDSL,因此可能不相关,但为了完整起见,我将其包括在内)

以下是 SDO_POINT 列的内容示例(如 SQLDeveloper 中所示):

一切正常,只是我无法读取 point 的 Z 分量。该类Point只有getX()getY()访问器。

我试图org.hibernate.spatial.jts.mgeom.MCoordinate通过方法访问底层对象,getCoordinate()但 Z 值等于 Y 值。

任何人都可以帮助我使用 Hibernate-Spatial 获得 Z 值吗?还是只是不支持?

0 投票
3 回答
2732 浏览

oracle11g - Oracle SQL Developer 创建 SDO_GEOMETRY 无效数据类型

我正在尝试在 SQL Developer 中创建一个空间数据库,该数据库连接到 AWS 上的 Oracle 11g 第 2 版。

当我这样做时

并编译,我总是得到这个:

SQL Developer 似乎找不到sdo_geometry数据类型。我该如何解决这个问题?

0 投票
1 回答
7006 浏览

oracle - 在 oracle 中创建空间数据库时无法更新 user_sdo_geom_metadata

我正在使用 oracle 11g 并尝试创建一个空间数据库,我只是从oracle 文档中复制了示例代码, 但是在更新元数据部分时,它给出了重复输入错误,我尝试delete from user_sdo_geom_metadata了它并没有给出任何错误,然后尝试再次插入,仍然出现重复输入错误。我也尝试过select * from user_sdo_geom_metadata,但一无所获。有人知道为什么吗?谢谢

示例代码:

错误原因:user_sdo_geom_metadata 视图中的给定表和列值对存在重复条目。