Oracle Spatial基本操作

  Oracle Spatial主要通过元数据表、空间数据字段(即sdo_Geometry字段)和空间索引来管理空间数据,并在此基础上提供一系列空间查询和空间分析的程序包,让用户进行更深层次的GIS应用开发。Oracle Spatial使用空间字段sdo_Geometry存储空间数据,用元数据表来管理具有sdo_Geometry字段的空间数据表,并采用R树索引和四叉树索引技术来提高空间查询和空间分析的速度。

  1、元数据表说明

  Oracle Spatial的元数据表存储了有空间数据的数据表名称、空间字段名称、空间数据的坐标范围、坐标系以及坐标维数说明等信息。用户必须通过元数据表才能知道Oracle数据库中是否有Oracle Spatial的空间数据信息。通过元数据视图(USER_SDO_GEOM_METADATA)访问元数据表。元数据视图的基本定义为:

       

  2、空间字段解析

  Oracle Spatial的空间数据都存储在空间字段sdo_Geometry中,理解sdo_Geometry是编写Oracle Spatial程序的关键。sdo_Geometry是按照Open GIS规范定义的一个对象,其原始的创建方式如下所示。

         

  ① sdo_Gtype

  是一个NUMBER型的数值,用来定义存储几何对象的类型。sdo_Gtype是一个4个数字的整数,其格式为dltt,其中d表示几何对象的维数;l表示三维线性参考系统中的线性参考值,当d为3维或者4维时需要设置该值,一般情况下为空;tt为几何对象的类型,Oracle Spatial定义了7种类型的几何类型,目前,tt使用了00到07,其中08到99是Oracle Spatial保留的数字,以备将来几何对象扩展所用。

        

   ② sdo_Srid

  sdo_Srid也是一个NUMBER型的数值,它用于标识与几何对象相关的空间坐标系。如果sdo_Srid为空(null),则表示没有坐标系与该几何对象相关;如果该值不为空,则该值必须为MDSYS.CS_SRS表中SRID字段的一个值,在创建含有几何对象的表时,这个值必须加入到描述空间数据表元数据的USER_SDO_GEOM_METADATA视图的SRID字段中。对于我们通常使用国际标准的Longitude/Latitude(8307),Oracle Spatial规定,一个几何字段中的所有几何对象都必须为相同的sdo_Srid值。

  ③ sdo_Point

   sdo_Point是一个包含三维坐标X,Y,Z数值信息的对象,用于表示几何类型为点的几何对象。如果sdo_Elem_Info和SDO_ORDINATES数组都为空,则sdo_Point中的X,Y,Z为点对象的坐标值,否则,sdo_Point的值将被忽略(用NULL表示)。Oracle Spatial强烈要求用sdo_Point存储空间实体为点类型空间数据,这样可以极大的优化Oracle Spatial的存储性能和查询效率。

  ④ sdo_Elem_Info

  sdo_Elem_Info是一个可变长度的数组,每3个数作为一个元素单位,用于表示坐标是如何存储在SDO_ORDINATES数组中的。本文把组成一个元素的3个数称为3元组。一个3元组包含以下3部分的内容:
  
  ◇ SDO_STARTING_OFFSET

  SDO_STARTING_OFFSET 表明每个几何元素的第一个坐标在SDO_ORDINATES数组中的存储位置。它的值从1开始,逐渐增加。

  ◇ SDO_ETYPE

  SDO_ETYPE 用于表示几何对象中每个组成元素的几何类型。当它的值为1, 2, 1003和2003时,表明这个几何元素为简单元素。如果SDO_ETYPE为1003,表明该多边形为外环(第一个数为1表示外环),坐标值以逆时针存储;如果SDO_ETYPE为2003,表明该多边形为内环(第一个数为2表示内环),坐标值以顺时针存储。当SDO_ETYPE为4, 1005和2005时,表明这个几何元素为复杂元素。它至少包含一个3元组用以说明该复杂元素具有多少个几何简单元素。同样,1005表示多边形为外环,坐标值以逆时针存储;2005表示多边形为内环,坐标值以顺时针存储。

  ◇ SDO_INTERPRETATION

  SDO_INTERPRETATION具有两层含义,具体的作用由SDO_ETYPE是否为复杂元素决定。如果SDO_ETYPE是复杂元素(4, 1005和2005),则SDO_INTERPRETATION表示它后面有几个子3元组属于这个复杂元素。如果SDO_ETYPE是简单元素(1, 2, 1003和2003),则SDO_INTERPRETATION表示该元素的坐标值在SDO_ORDINATES中是如何排列的。

  需要注意的是,对于复杂元素来说,组成它的子元素是连续的,一个子元素的最后一个点是下一个子元素的起点。最后一个子元素的最后一个坐标要么与下一个元素的SDO_STARTING_OFFSET值减1所对应的坐标相同,要么是整个SDO_ORDINATES数组的最后一个坐标。

        

  ⑤ sdo_Ordinates

  SDO_ORDINATES是一个可变长度的数组,用于存储几何对象的实际坐标,是一个最大长度为1048576,类型为Number的数组。
 
  SDO_ORDINATES必须与sdo_Elem_Info数组配合使用,才具有实际意义。SDO_ORDINATES的坐标存储方式由几何对象的维数决定,如果几何对象为二维,则SDO_ORDINATES的坐标以{ x1, y1, x2, y2, …}顺序排列,如果几何对象为三维,则SDO_ORDINATES的坐标以{x1, y1, z1, x2, y2, z2, …}的顺序排列。

  3、空间索引技术:

  Oracle Spatial提供R树索引和四叉树索引两种索引机制来提高空间查询和空间分析的速度。用户需要根据不同空间数据类型创建不同的索引,当空间数据类型比较复杂时,如果选择索引类型不当,将使Oracle Spatial创建索引的过程变得非常慢。

三、将经纬度转化成地名

  目前各类位置服务LBS最终返回的都是误差允许范围内的经纬度,如GPS车载终端,手机定位等移动设备,系统通过一定的技术算法可以将其转化成具体的地名或附近的地标。或根据需要返回当前位置用户关心的周边信息:如医院、宾馆、加油站、公交车站等内容。

   1、空间数据到Oracle Spatial的导入

  当前专题空间数据库建立的过程包括技术设计、资料准备、数据获取和数据入库等内容。数据的获取常可利用现有的GIS 专业软件如GeoStar、MAPGIS、SUPERMAP、ARCGIS 等来实现,获得的数据通过某一空间数据引擎(如Easyloader)上载到Oracle 数据库中,实现利用Oracle Spatial 存储、管理空间数据。MAPORA 引擎是把MAPGIS 的明码格式通过编程实现空间数据上载Oracle Spatial 的一种方法。

  2、定位服务的整个流程

        

  3、Oracle Spatial关联用到的程序包:

  ◆ sdo_Geom.Relate(sdo_Geometry1, ‘MASK’, sod_Geometry2, tolerance ):用于判断一个几何体与另一个几何体的关系,我们用于判断当前点是否在某一个面(省份面、县市面、乡镇面)上。

  ◇ sdo_Geometry1,sdo_Geometry2为空间数据对应的几何对象。

  ◇ Tolerance: 容许的精度范围;

  ◇ MASK=Anyinteract/Contains/Coveredby/Covers/Disjoint/

    ○ Anyinteract: sdo_Geometry2落在sdo_Geometry1面上包括在边上。

    ○ Contains: sdo_Geometry2完全包含在sdo_Geometry1几何对象中,并且两个几何对象的边没有交叉。

    ○ Coveredby: sdo_Geometry1完全包含在sdo_Geometry2中,并且这两个几何对象的边有一个或多个点相互重叠。

    ○ Covers: sdo_Geometry2完全包含在sdo_Geometry1中,并且这两个几何对象的边有一个或多个点相互重叠。

    ○ Disjoint: 两个几何没有重叠交叉点,也没有共同的边。

    ○ Equal: 两个几何是相等的。

    ○ Inside: sdo_Geometry1完全包含在sdo_Geometry2几何对象中,并且两个几何对象的边没有交叉。

    ○ On: sdo_Geometry1的边和内部的线完全在sdo_Geometry2上。

    ○ Overlapbdydisjoint: 两个几何对象交迭,但是边没有交叉。

    ○ Overlapbdyintersect: 两个几何对象交迭,并且边有部分交叉。

    ○ Touch: 两个几何对象有共同的边,但没有交叉。

  ◆ sdo_nn( sdo_Geometry1, sdo_Geometry2, ‘sdo_num_res’, Tolerance ):用于返回几何体sdo_Geometry2周边附近有什么其他几何体集。

  ◇ sdo_Geometry1,sdo_Geometry2为空间数据对应的几何对象。

  ◇ Tolerance: 容许的精度范围;

  ◇ sdo_num_res=n: 表示返回n个几何体,=1表示只返回一个。

  ◆ sdo_Geom.Within_Distance(sdo_Geometry1, Distance, sdo_Geometry2, Tolerance, 'unit' )用于判断几何体sdo_Geometry2在指定的距离Distance内周边附近有什么其他几何体集。

  ◇ sdo_Geometry1,sdo_Geometry2为空间数据对应的几何对象。

  ◇ Tolerance: 容许的精度范围;

  ◇ Distance: 指定的距离;

  ◇ Unit: 用于表示距离的单位,可能是Unit=M/ Unit=KM等长度单位,但必须是SDO_DIST_UNITS表中列举出来的单位之一。

  4、返回的信息:

  返回的信息根据业务需要可以返回空间信息关联到的所有信息,然后用三段论方式组合成一段话,通过SMS等方式返回到移动终端。

  ◆ 可以是当前位置的地名、城市地标、自定义地标、道路名称等位置信息;

  ◆ 可以是当前位置的周边信息:医院、宾馆、加油站、公交车站等;

查询:SELECT c.geometry.SDO_GTYPE,c.geometry.SDO_ORDINATES,
c.geometry.SDO_ELEM_INFO,c.geometry.SDO_SRID,c.geometry.SDO_POINT.X,
c.geometry.SDO_POINT.Y,c.geometry.SDO_POINT.Z FROM xz_chengshi c

Oracle Spatial基本操作相关推荐

  1. oracle spatial 数据导入_【转】 Oracle Spatial 基本操作

    原文链接: http://www.cnblogs.com/frogbag/archive/2007/10/17/926870.html,感谢作者. 基本操作比较全面,包括建表.建索引和查询. Step ...

  2. ORACLE SPATIAL介绍

    一. ORACLE SPATIAL 简介 ORACLE SPATIAL 是Oracle 的支持GIS数据存储的空间数据处理系统,是 Oracle 数据库强大的核心特性,包含了用于存储矢量数据类型.栅格 ...

  3. oracle和arcgis优势,Oracle spatial 使用的一些感受

    最近由于项目需求,要实现Oracle数据源,主要是Oracle Spatial .虽然之前写过PostGIS和Sqlite的,但是对Oracle基本上算一无所知.刚开始接触的那几天,头都大了,Orac ...

  4. shp转oracle spatial

    2010年12月1日 终于搞定了shp到oracle spatial,说下步骤和感受吧! 1 XP系统:转换工具的下载(shp2sdo.exe ):下载后把此文件复制到PATH变量包含的目录下(E:\ ...

  5. oracle spatial(一)开端

    如今的互联网时代,貌似人和人之间,商业活动之间的交流受地理位置的限制越来越小.但实质上,互联网使数字世界和地理世界联系的越来越紧密.跟踪业务的组成部分和分析它们已成为更为重要的事情.地理空间位置信息是 ...

  6. OCCI读写Oracle Spatial的SDO_Geometry

    1.使用Oracle OTT工具生成对应的C++类. 1.1设置ORACLE_HOME:服务器端安装目录. 设置客户端安装目录,提示什么java错误. 暂时不管了. 1.2写一个intype文件tes ...

  7. Oracle spatial 周边查询SQL

    查询距某一点某一距离的所有要素(即我们通常说的周边查询)sql: select t.objectid,t.comp_type,t.datatype,t.comp_name,t.health_lic,t ...

  8. 链接oracle spatial,oracle spatial初试

    一.下载shp2sdo 工具,将工具放在 oracle按照目录下的bin目录下 oracle的bin目录一般为:D:\app\***\product\11.2.0\dbhome_2\BIN 或者:在开 ...

  9. oracle 空间数据字段,Oracle spatial创建空间数据的字段详解

    Oracle spatial Oracle spatial主要通过sdo_geometry来储存空间信息,主要有五个参数 SDO_GTYPE    number SDO_SRID number SDO ...

  10. Oracle Spatial 翻译第一漳

    叶科峰本科毕业设计的翻译部分,我稍微改了一下,也放进来.内容是Oracle Spatial 文档的第一部分,<基本概念>,也可能是最重要的部分. 空间概念<?xml:namespac ...

最新文章

  1. 微服务实践(五):微服务的事件驱动数据管理
  2. 阿里云IoT Studio升级版新增解决方案引擎 大幅提升方案交付效率
  3. sql查询出的字段切割_SPL 简化 SQL 案例详解:多层固定分组
  4. [Luogu 1730]最小密度路径
  5. 《电子基础与维修工具核心教程》——第2章 电阻2.1 电阻器介绍
  6. 贺利坚老师汇编课程55笔记:带借位减法指令SBB
  7. 数学之路(3)-机器学习(3)-机器学习算法-欧氏距离(3)
  8. 【BZOJ 3652】大新闻 数位dp+期望概率dp
  9. Python安装教程:
  10. 段码液晶屏实现原理和需要注意的事项
  11. rocketmq获取消息id_贞炸了!上线之后,消息收不到了
  12. Prism4学习笔记(六):UI Composition
  13. 关于pend post 与 accept
  14. 故障电路指示灯行业研究及十四五规划分析报告
  15. Scala之函数式编程
  16. 网贷风控体系之-决策引擎
  17. c语言编程题 8.在一个笼子里同时养着一些鸡和兔子,你想了解有多少只鸡和多少只兔,主人对你说:我只告诉你鸡和兔的总头数是16和总脚数是40,你能不能自己计算有多少只鸡和多少只兔?
  18. ABtest如何确定样本量?
  19. matlab的gui界面怎么用,MATLAB的GUI界面基础操作
  20. macos软件_为什么有时macOS软件有时被标记为“达尔文”?

热门文章

  1. [COGS2479]偏序
  2. 深股通,沪股通,港股通
  3. Adobe PhotoShop V8.0
  4. python s append_详细介绍pandas的DataFrame的append方法使用
  5. charles+安卓模拟器采集豆果美食app
  6. python金融编程入门_python金融实务从入门到精通完整版
  7. JAVA 实现《JAVA打砖块》游戏
  8. 3d红苹果html,青苹果红苹果食疗功效大不同
  9. 只因写了一段爬虫,公司200多人被抓!
  10. gis热力专题图制作