标签: oracle-spatial

Hibernate空间索引注释

我使用jts几何对象将我的几何对象存储为Oracle SDO_Geometry.但是,当我想使用SDO_GEOM.RELATE方法时,它们无法正常工作,我意识到我需要创建一个空间索引,但不知道如何处理hibernate.你知道这个问题的任何注释吗?

@Type(type="org.hibernate.spatial.GeometryType")
 private Geometry area;
Run Code Online (Sandbox Code Playgroud)

java annotations hibernate oracle-spatial spatial-index

10
推荐指数
1
解决办法
654
查看次数

如何更改Oracle SDO_GEOMETRY的SRID

我有空间数据,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)
Run Code Online (Sandbox Code Playgroud)

我需要把它改成:

MDSYS.SDO_GEOMETRY(2001,27700,MDSYS.SDO_POINT_TYPE(420531.663898,268911.956161,NULL),NULL,NULL)
Run Code Online (Sandbox Code Playgroud)

对于表中的所有行.但我不知道如何自动更改SDO_GEOMETRY中的单个元素,同时保持数组的其他方面不变.

任何人都能指出我的方向吗?谢谢.

oracle oracle-spatial

9
推荐指数
1
解决办法
2万
查看次数

在 Oracle 11g 中使用 SDO 几何创建物化视图时无法使用 ORDER BY

我在客户端上使用带有 Spatial 和 Oracle SQL Developer 的 Oracle 11g 2.0.1.0。我有一个Places带有主键的表ID和一个Coordinates带有 tw 列的视图:ID引用中的帖子Places和 SDO geometry Point

我想使用以下 SQL 创建一个物化视图:

CREATE MATERIALIZED VIEW PlaceCoordinates
NOCACHE NOPARALLEL BUILD IMMEDIATE
USING INDEX
REFRESH ON DEMAND COMPLETE 
DISABLE QUERY REWRITE  AS
SELECT Places.ID, Coordinates.Point
FROM Places
LEFT OUTER JOIN Coordinates ON Places.ID = Coordinates.ID
ORDER BY Places.ID
Run Code Online (Sandbox Code Playgroud)

这给了我这个错误:

ORA-30373: 在此上下文中不支持对象数据类型

无论我对什么进行排序(即使它只是一些愚蠢的东西1),我都会遇到同样的错误。但是,如果我删除该ORDER BY语句,它就可以正常工作。如果我只是做一个普通的事情SELECT而不创建一个物化视图,它也可以很好地进行排序。

为什么我不能排序?反正有这个问题吗?

sql sorting oracle oracle-spatial oracle11g

6
推荐指数
1
解决办法
4201
查看次数

oracle DB中具有纬度和经度的两点之间的距离

我需要通过 Pl SQL Query 计算两个位置之间的距离。我试过一些 Qry 但没有得到它。

为此,我们在 SQL 中使用 Query 如下

SELECT ROUND(geography::Point(cast('19.2806118' as float),cast('72.8757395' as float) , 
4326).STDistance(geography::Point(cast('19.4482006' as float),
cast('72.7912511' as float), 4326))/1000,1) DIST
Run Code Online (Sandbox Code Playgroud)

结果:20.6

为了在 ORACLE Db 中计算相同的值,我在互联网上找到了一个解决方案,如下所示

select sdo_geom.sdo_distance(sdo_geometry(2001,4326,null,sdo_elem_info_array(1, 1, 1),
sdo_ordinate_array( 19.2806118,72.8757395)),sdo_geometry(2001,4326, null,sdo_elem_info_array(1, 1, 
1),sdo_ordinate_array( 19.4482006,72.7912511)),1,'unit=KM') distance_km from dual
Run Code Online (Sandbox Code Playgroud)

结果:10.9271..

请建议在我获得 MS SQL 时会给我结果的方法

oracle geometry oracle-spatial

6
推荐指数
1
解决办法
116
查看次数

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

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

oracle gis postgresql postgis oracle-spatial

5
推荐指数
1
解决办法
3228
查看次数

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

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

典型的实现如下:

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

尽管Oracle Spatial Indexes引起了我很大的痛苦。

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

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

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

在XE上:

  • 从mdsys.user_sdo_geom_metadata删除
  • 从mdsys.sdo_index_metadata_table删除,其中sdo_index_owner = USER
  • 从user_objects中选择object_type,object_name,而object_type ='TABLE'
  • 删除* table_name *级联约束清除/ *对于所有表* /

在Oracle 10g上:

  • 从mdsys.user_sdo_geom_metadata删除
  • 从user_objects中选择object_type,object_name,而object_type ='TABLE'和object_name不像'MDRT _%$'
  • 删除* table_name *级联约束清除/ *对于所有表* /

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

XE没有。

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

sql database oracle oracle-xe oracle-spatial

5
推荐指数
1
解决办法
8903
查看次数

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

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

示例代码:

CREATE TABLE cola_markets (
mkt_id NUMBER PRIMARY KEY,
name VARCHAR2(32),
shape SDO_GEOMETRY);

INSERT INTO cola_markets VALUES(
1,
'cola_a',
SDO_GEOMETRY(
  2003,  -- two-dimensional polygon
  NULL,
  NULL,
  SDO_ELEM_INFO_ARRAY(1,1003,3), -- one rectangle (1003 = exterior)
  SDO_ORDINATE_ARRAY(1,1, 5,7) -- only 2 points needed to
      -- define rectangle (lower left and upper right) with
      -- Cartesian-coordinate data
));

INSERT INTO user_sdo_geom_metadata
(TABLE_NAME,
 COLUMN_NAME,
 DIMINFO,
 SRID)
VALUES (
'cola_markets',
'shape',
SDO_DIM_ARRAY( …
Run Code Online (Sandbox Code Playgroud)

oracle oracle-spatial oracle11g

5
推荐指数
1
解决办法
5374
查看次数

Hibernate Spatial创建几何对象

我正在使用Java中的oracle spatial开发一个位置应用程序.我正在为orm层使用hibernate 4.0空间.我是空间新手,我无法找到休眠空间的最佳实践.我的数据库模型如下;

CREATE TABLE SYSTEM.POI  (
    POI_ID          INTEGER,
    SERVICE_ID      INTEGER,
    POI_NAME        VARCHAR2(255 CHAR),
    DESCRIPTION     VARCHAR2(1023 CHAR),
    CATEGORY        VARCHAR2(127 CHAR),
    ADDRESS         VARCHAR2(4000 CHAR),
    MOBILE_PHONE    VARCHAR2(15 CHAR),
    FIXED_PHONE     VARCHAR2(15 CHAR),
    BUSINESS_HOURS  VARCHAR2(1023 CHAR),
    SHAPE           SDO_GEOMETRY  
)
Run Code Online (Sandbox Code Playgroud)

insert语句如下;

INSERT INTO SYSTEM.POI (SERVICE_ID, POI_NAME, DESCRIPTION, CATEGORY, ADDRESS, MOBILE_PHONE, FIXED_PHONE, BUSINESS_HOURS, SHAPE)
VALUES(
        '1320',
        'PO-Kral Petrol Ürünleri San ve Tic. Ltd. ?ti.',
        'Camilerimiz',
        'CAMI',
        '?SL?CE MAHALLES? DERE SOKAK NO:5',
        '2762151093',
        '5552552343',
        'Hafta içi  09:00 - 17:00, haftasonu 09:00 - 13:00 aç?k',
        SDO_GEOMETRY(
            2001, 
            3785, …
Run Code Online (Sandbox Code Playgroud)

java hibernate oracle-spatial hibernate-spatial

5
推荐指数
1
解决办法
3197
查看次数

Oracle-将SDO_GEOMETRY转换为WKT吗?

我对oracle空间非常陌生。

我有一个带有SDO_GEOMETRY列的空间表。在此表中插入POINT数据后,我想以WKT格式检索数据。

这是我所做的:

插入数据-

INSERT INTO new_test (name, geom) VALUES (
'Test', 
SDO_GEOMETRY(
             2001,
             4326, 
             SDO_POINT_TYPE(12,14,NULL), 
             NULL, 
             NULL));
Run Code Online (Sandbox Code Playgroud)

提取数据-

SELECT NAME, SDO_UTIL.TO_WKTGEOMETRY(GEOM) AS point FROM NEW_TEST;
Run Code Online (Sandbox Code Playgroud)

输出-

NAME | POINT
-------------
Test | (null)
Run Code Online (Sandbox Code Playgroud)

为什么我在这里变成空?它不应该显示坐标点吗?

oracle oracle-spatial

5
推荐指数
1
解决办法
9973
查看次数

Yarn上的Oracle PGX-WebService上的404

我在Oracle BDA X7-2上运行Yarn,规格为:

  • Cloudera Enterprise 5.14.3
  • Java 1.8.0_171
  • PGX 2.7.1

我正在尝试按照以下手册在Yarn上运行PGX:https : //docs.oracle.com/cd/E56133_01/2.5.0/tutorials/yarn.html

托管运行安装脚本,并使用以下命令完成了它提供的配置文件:

{
  "pgx_yarn_jar_hdfs_path": "hdfs:/user/pgx/pgx-yarn-2.7.1.jar",
  "pgx_war_hdfs_path": "hdfs:/user/pgx/pgx-webapp-2.7.1.war",
  "pgx_conf_hdfs_path": "hdfs:/user/pgx/pgx.conf",
  "pgx_log4j_conf_hdfs_path": "hdfs:/user/pgx/log4j2.xml",
  "pgx_dist_log4j_conf_hdfs_path": "hdfs:/user/pgx/dist_log4j.xml",
  "pgx_cluster_host_hdfs_path": "hdfs:/user/pgx/cluster-host.tgz",
  "zookeeper_connect_string": "bda1node05,bda1node06,bda1node07",
  "standard_library_path": "/usr/lib64/gcc/4.8.2",
  "min_heap_size": "512m",
  "max_heap_size": "12g",
  "container_cores": 9,
  "container_memory": 0,
  "container_priority": 0,
  "num_machines": 1
}
Run Code Online (Sandbox Code Playgroud)

Yarn的pgx-service应用程序处于RUNNING状态,stderr中没有错误,日志显示该服务正在该地址运行:

http://bda1node06:7007

并通过以下命令运行linux Java进程:

/usr/java/default/bin/java -Xms512m -Xmx12g oracle.pgx.yarn.PgxService bda1node06 /u11/hadoop/yarn/nm/usercache/root/appcache/application_1539869144089_2070/container_e22_1539869144089_2070_01_000002/pgx-server.war 7007 bda1node05,bda1node06,bda1node07 /pgx-8eef44e2-1657-403a-8193-0102f5266680

出于测试目的,在执行PGX客户端后:

$PGX_HOME/bin/pgx --base_url http://bda1node06:7007

我得到:

java.util.concurrent.ExecutionException: java.lang.IllegalStateException: cannot connect to server; requested http://bda1node06:7007/version?extendedInfo=true and expected status 200, got …
Run Code Online (Sandbox Code Playgroud)

oracle-spatial bigdata cloudera hadoop-yarn cloudera-manager

5
推荐指数
1
解决办法
144
查看次数