`
poson
  • 浏览: 357818 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Oracle Spatial详解

阅读更多

 

Step1. 创建一张表,其中shape用来存放空间数据 CREATE TABLE mylake ( feature_id NUMBER PRIMARY KEY, name VARCHAR2(32), shape MDSYS.SDO_GEOMETRY);

Step2. 在user_sdo_geom_metadata 表中插入新记录,用于描述空间字段 INSERT INTO user_sdo_geom_metadata VALUES ( 'mylake',//---表名 'shape',//---字段名 MDSYS.SDO_DIM_ARRAY( MDSYS.SDO_DIM_ELEMENT('X', 0, 100, 0.05),//---X维最小,最大值和容忍度。 MDSYS.SDO_DIM_ELEMENT('Y', 0, 100, 0.05)//---Y维最小,最大值和容忍度 ), NULL//---坐标系,缺省为笛卡尔坐标系 );

Step3. 创建空间索引 CREATE INDEX mylake_idx ON mylake(shape) INDEXTYPE IS MDSYS.SPATIAL_INDEX

Step4. 插入空间数据 Oracle Spatial用MDSYS.SDO_GEOMETRY来存储空间数据,定义为:CREATE TYPE sdo_geometry AS OBJECT ( SDO_GTYPE NUMBER, SDO_SRID NUMBER, SDO_POINT SDO_POINT_TYPE, SDO_ELEM_INFO MDSYS.SDO_ELEM_INFO_ARRAY, SDO_ORDINATES MDSYS.SDO_ORDINATE_ARRAY); SDO_GTYPE:用四个数字定义了所有的形状 第一位:维数 第二位:线性表示。用于3,4维数据,二维为0 最后两位:

Value Geometry Description
00 UNKNOWN_GEOMETRY Spatial ignores this value
01 POINT A single point element
02 LINE or CURVE Contains one line string element that may be linear, curved or both
03 POLYGON Contains one polygon element with or without other polygon elements in it
04 COLLECTION A heterogeneous collection of elements
05 MULTIPOINT Contains one or more points
06 MULTILINE or MULTICURVE Contains one or more line string elements
07 MULTIPOLYGON Contains multiple polygon elements that maybe disjoint

SDO_SRID:坐标系,NULL为笛卡尔坐标系。 SDO_POINT:Oracle Spatial也可定义单个的点,SDO_POINT的定义: CREATE TYPE sdo_point_type AS OBJECT (X NUMBER,Y NUMBER,Z NUMBER); 如果是二维,Z为NULL。 SDO_ELEM_INFO:每三个值描述一个元素。 第一个值:第一个顶点在SDO_ORDINATES_ARR开始位置 第二个值:元素类型 第三个值:顶点连接方式:1-通过直线连接,2-通过圆弧连接 定义为 CREATE TYPE sdo_elem_info_array AS VARRAY (1048576) of NUMBER; SDO_ORDINATES:几何图形所有顶点列表。定义为 CREATE TYPE sdo_ordinate_array AS VARRAY (1048576) of NUMBER;

FONT color=#003366>// 插入包含一个岛屿的湖泊 INSERT INTO mylake VALUES( 10, 'Lake Calhoun', MDSYS.SDO_GEOMETRY( 2003, NULL, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1, 19,2003,1), MDSYS.SDO_ORDINATE_ARRAY(0,0, 10,0, 10,10, 0,10, 0,0, 4,4, 6,4, 6,6, 4,6, 4,4) ));

// 插入两艘小船 INSERT INTO mylake VALUES( 11, 'The Windswept', MDSYS.SDO_GEOMETRY( 2003, NULL, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1), MDSYS.SDO_ORDINATE_ARRAY(2,2, 3,2, 3,2, 2,3, 2,2) ) ); INSERT INTO mylake VALUES( 12, 'Blue Crest', MDSYS.SDO_GEOMETRY( 2003, NULL, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1), MDSYS.SDO_ORDINATE_ARRAY(7,7, 8,7, 8,7, 7,8, 7,7) ) );

Step4. 查询 Oracle Spatial查询数据包括二个处理过程: 1.只通过索引查询候选项。通过函数SDO_FILTER实现: SDO_FILTER(geometry1 MDSYS.SDO_GEOMETRY,geometry2 MDSYS.SDO_GEOMETRY, params VARCHAR2) geometry1: 必须是被索引的几何数据 geometry2:不一定是表中的空间字段,也不要求被索引 params:Filter类型 querytype=WINDOW:geometry2不要求来自表 querytype=JOIN:geometry2必须来自表

SELECT name boat_name FROM mylake t WHERE feature_id = 12 AND SDO_FILTER(t.shape, mdsys.sdo_geometry(2003,NULL,NULL, mdsys.sdo_elem_info_array(1,1003,1), mdsys.sdo_ordinate_array(2,2, 5,2, 5,5, 2,5, 2,2)), 'querytype=WINDOW') = 'TRUE'; 2.再检查每个候选项是否和条件精确匹配。通过函数SDO_RELATE实现: SDO_RELATE(geometry1 MDSYS.SDO_GEOMETRY, geometry2 MDSYS.SDO_GEOMETRY, params VARCHAR2) params:masktype类型

  • DISJOINT — the boundaries and interiors do not intersect
  • TOUCH — the boundaries intersect but the interiors do not intersect
  • OVERLAPBDYDISJOINT — the interior of one object intersects the boundary and interior of the other object, but the two boundaries do not intersect. This relationship occurs, for example, when a line originates outside a polygon and ends inside that polygon.
  • OVERLAPBDYINTERSECT — the boundaries and interiors of the two objects intersect
  • EQUAL — the two objects have the same boundary and interior
  • CONTAINS — the interior and boundary of one object is completely contained in the interior of the other object
  • COVERS — the interior of one object is completely contained in the interior of the other object and their boundaries intersect
  • INSIDE — the opposite of CONTAINS. A INSIDE B implies B CONTAINS A.
  • COVEREDBY — the opposite of COVERS. A COVEREDBY B implies B COVERS A.
  • ON — the interior and boundary of one object is on the boundary of the other object (and the second object covers the first object). This relationship occurs, for example, when a line is on the boundary of a polygon.
  • ANYINTERACT — the objects are non-disjoint.

    // 选择在定义矩形内的所有小船 SELECT name boat_name FROM mylake t WHERE feature_id = 12 AND SDO_FILTER(t.shape, mdsys.sdo_geometry(2003,NULL,NULL, mdsys.sdo_elem_info_array(1,1003,1), mdsys.sdo_ordinate_array(2,2, 5,2, 5,5, 2,5, 2,2)), 'querytype=WINDOW') = 'TRUE' AND SDO_RELATE(t.shape, mdsys.sdo_geometry(2003,NULL,NULL, mdsys.sdo_elem_info_array(1,1003,1), mdsys.sdo_ordinate_array(2,2, 5,2, 5,5, 2,5, 2,2)), 'masktype=INSIDE querytype=WINDOW') = 'TRUE'

    // masktype可联合使用 SELECT feature_id id FROM mylake t WHERE feature_id = 12 AND SDO_FILTER(t.shape, mdsys.sdo_geometry(2003,NULL,NULL, mdsys.sdo_elem_info_array(1,1003,1), mdsys.sdo_ordinate_array(2,2, 5,2, 5,5, 2,5, 2,2)), 'querytype=WINDOW') = 'TRUE' AND SDO_RELATE(t.shape, mdsys.sdo_geometry(2003,NULL,NULL, mdsys.sdo_elem_info_array(1,1003,1), mdsys.sdo_ordinate_array(2,2, 5,2, 5,5, 2,5, 2,2)), 'masktype=INSIDE+TOUCH querytype=WINDOW') = 'TRUE'

    Oracle Spatial 提供的其他查询函数:

    Query Description
    SDO_NN Nearest neighbor
    SDO_SDO_WITHIN_DISTANCE All geometries with a certain distance
     
    Functions Description
    SDO_GEOM.SDO_MBR The minimum bounding rectangle for a geometry
    SDO_GEOM.SDO_DISTANCE The distance between two geometries
    SDO_GEOM.SDO_INTERSECTION Provides the intersection point of two geometries

    OracleSpatial初探http://blog.sina.com.cn/s/blog_439d2cef01009c4a.html

    http://www.oracle.com/technology/products/spatial/htdocs/data_sheet_9i/9iR2_spatial_ds.html

  • 分享到:
    评论

    相关推荐

      Oracle Spatial 和MapViewer 新特性

      ### Oracle Spatial 与 MapViewer 新特性详解 #### 一、Oracle Spatial 11g 新特性概览 **Oracle Spatial 11g** 是 Oracle 数据库 11g 的一个重要组成部分,它引入了一系列重要的新特性,并对现有的特性和 API ...

      Oracle Spatial 中的SDO_GEOMETRY类型

      Oracle Spatial 中的 SDO_GEOMETRY 类型详解 Oracle Spatial 中的 SDO_GEOMETRY 类型是对空间对象的几何描述,定义了空间对象的形状和位置。SDO_GEOMETRY 类型是 Oracle Spatial 的核心数据类型,用于存储和处理...

      Oracle Spatial 11g Developer's Guide.pdf

      ### Oracle Spatial 11g 开发者指南知识点详解 #### 一、概述 《Oracle Spatial 11g 开发者指南》是Oracle公司为开发者提供的一本关于如何使用Oracle Spatial和Oracle Locator进行空间数据索引与存储以及开发空间...

      mapxtreme for java manager 测试oracle spatial 连接简单图解

      ### MapXtreme for Java Manager 测试Oracle Spatial连接简明指南 #### 一、概述 在GIS(地理信息系统)领域,Oracle Spatial是一个广泛使用的空间数据管理解决方案,它为存储、管理和查询空间数据提供了强大的...

      Oracle Spatial最佳实践

      ### Oracle Spatial最佳实践详解 #### 一、概述 Oracle Spatial 是 Oracle 数据库中一项重要的功能,主要用于处理地理空间数据。随着地理信息系统 (GIS) 的普及和技术的发展,Oracle Spatial 已经成为了众多 GIS ...

      基于Oracle Spatial的环境应急数据库设计.pdf

      【Oracle Spatial技术详解】 Oracle Spatial是Oracle数据库的一个扩展模块,专门用于处理和管理地理空间数据。它提供了一套全面的空间数据管理和分析功能,使得在关系型数据库中存储、查询、分析和可视化空间信息变...

      基于Oracle Spatial和GIS的煤炭矿产资源潜力数据库系统.pdf

      【文章摘要】本文介绍了基于Oracle Spatial和GIS技术构建的煤炭矿产资源潜力数据库系统。该系统设计了功能模型,考虑了全国煤炭矿产资源潜力数据库的建设需求,并且兼顾其他矿种的数据处理。通过使用Oracle Spatial...

      MAPGIS与Oracle数据库空间数据格式的转换

      《MAPGIS与Oracle数据库空间数据格式的转换》一文探讨了如何将MAPGIS中的空间数据转换到Oracle Spatial数据库中。 #### 关键概念 - **地理信息系统(GIS)**:一种用于采集、存储、管理、分析和展示与地理位置相关...

      sdoapi-11.2.0.jar

      《Oracle Special空间数据库与Java ORM工具包:sdoapi-11.2.0.jar详解》 Oracle数据库作为全球广泛使用的数据库系统之一,其在处理地理空间数据方面也有着强大的功能。Oracle Spatial(也称为Oracle Special)是...

      easyloader9

      【文件列表详解】 1. EasyLoader.cnt:这可能是程序的配置文件,包含了EasyLoader的设置信息,如连接参数、数据转换规则等。 2. ROBOEX32.DLL:这是一个动态链接库文件,可能包含了一些与数据交互或界面操作相关的...

      geoserver-1.6.5-oracle-plugin.zip

      《GeoServer 1.6.5与Oracle插件详解》 GeoServer是一款开源的地理信息系统(GIS)服务器,它能够发布地图数据并提供WMS、WFS等OGC标准服务。GeoServer 1.6.5是其历史版本,虽然较新版本功能更加强大,但在某些特定...

      Oracle默认账号信息

      ### Oracle 默认账号信息详解 #### 一、引言 在Oracle数据库系统中,存在一系列预定义的用户账户,这些账户通常被用于特定的功能或管理任务。了解这些默认账户的信息对于数据库管理员(DBA)来说至关重要,这不仅能...

      Oracle_默认用户名密码及解锁

      - **描述**: 用于存储 Geocoder 和 router 数据的 Oracle Spatial 方案。 - **参考文档**: Oracle Spatial User’s Guide and Reference 5. **MDSYS** - **用户名**: MDSYS - **密码**: MDSYS - **描述**: ...

      ArcSDE连接Oracle配置

      ### ArcSDE 连接 Oracle 配置详解 #### 一、ArcSDE与Oracle数据库的集成概述 ArcSDE是Esri推出的一款用于管理地理空间数据的企业级解决方案,能够支持多种数据库管理系统(DBMS)。当ArcSDE与Oracle数据库进行集成...

      shp导入oracle

      `shp2sdo`是Oracle提供的一款用于将Shapefile转换为Oracle Spatial数据格式的命令行工具。首先,你需要从Oracle官网下载该工具,并将其放到PATH环境变量所包含的目录下,比如Oracle客户端的bin目录。然后,运行`shp...

      oracal 10g连接数据库

      ### Oracle 10g连接数据库及OEM企业管理器使用详解 #### 一、登录Oracle 10g数据库 ##### 1.1 解决登录问题 安装好Oracle 10g之后,连接数据库是首要的任务。如果遇到登录问题,可以通过以下步骤解决: - **解锁...

      oracle 11g 简介

      - **Spatial Web Services**:通过集成Web服务,Oracle 11g 可以更好地与其他应用程序进行交互,实现了空间数据的共享与交换。 - **Network Data Model**:网络数据模型的引入使得用户能够更有效地管理和分析网络...

    Global site tag (gtag.js) - Google Analytics