`
泡沫之夏520
  • 浏览: 20490 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

利用Oracle Spatial实现位置服务

阅读更多

一、引言 

  基于位置服务LBS(Location-Based Services)包括紧急救助、跟踪服务、交通导航、城市地图、基于位置信息的定点内容广播等。美国日本先后在2001年涉足这一业务的服务,而且市场前景非常广阔。

  由于完整的基于位置的服务需要将无线网络基础设施、具有定位功能的设备、灵活的平台以及各种与确定位置有关的应用程序和内容都结合在一起,因而这个市场的参与者正在与基于位置的服务价值链中关键的厂商建立最好的合作伙伴关系。语音指路辅助服务、寻找朋友和移动看门服务等面向消费者的应用将为采用基于位置的服务提供最初的动力。此外,商业部门也已经在研究石油、电信、公安、水利、交通等行业的专用解决方案,如跟踪服务、劳动力管理和安全应用等。


  Oracle Spatial是Oracle公司推出的空间数据库组件,通过Oracle数据库系统存储和管理空间数据。 Oracle从9i开始对空间数据提供了较为完备的支持,尤其在10g又添加了很多功能。
本文介绍Oracle Spatial的基本实用方法,然后根据经、纬度坐标结合Oracle Spatial空间信息转化对应的电子地图地址。

  二、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车载终端,mobile定位等移动设备,系统通过一定的技术算法可以将其转化成具体的地名或附近的地标。或根据需要返回当前位置用户关心的周边信息:如医院、宾馆、加油站、公交车站等内容。

   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等方式返回到移动终端。

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

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

四、结束语

   采用Oracle Spatial 存储、管理空间数据,易于解决数据共享、分布式处理、网络通信、开放式开发、并发控制、网络化集成、跨平台运行及数据安全恢复机制等方面的难题。

  可以直接通过Oracle Spatial 具有强大空间分析 进行空间分析:最短路径分析、连通性分析、交通系统中最少换乘算法及其实现等。

  LBS业务具有广阔的发展前景,目前商用的LBS业争也达到了相当程度的渗透率。LBS业务涉及的领域很多,需要移动通信领域与GIS领域相结合来共同实现。我国目前很重视GIS领域的发展,国内已经有相当多具有一定实力和发展潜力的GIS厂商。相信随着今后LBS业务需求的不断增长,以及我国GIS领域的不断发展完善,LBS业务将得到更广泛的应用

分享到:
评论

相关推荐

    Oracle Spatial与ArcGIS连接

    ### Oracle Spatial与ArcGIS连接知识点解析 #### 一、引言 随着信息技术的发展,空间数据管理变得...对于希望利用Oracle Spatial的强大功能来管理和分析空间数据的组织来说,这种集成方式无疑是一种高效且实用的选择。

    Oracle Spatial9i介绍

    通过Oracle Spatial9i,GIS开发者能够更加便捷地管理空间数据,并利用Oracle数据库的强大功能来实现高效的查询和分析。对于需要处理大量空间数据的应用场景来说,Oracle Spatial9i无疑是一个非常有价值的选择。

    Oracle Spatial Developer's Guide

    在本指南中,开发者可以学习到如何有效地利用Oracle Spatial来管理和操作地理信息。 Oracle Spatial的核心功能包括: 1. 数据存储:Oracle Spatial支持多种空间数据格式,如Shapefile、GML、KML等,可将这些数据...

    Oracle Spatial用户指南

    本用户指南详细介绍了如何有效地利用Oracle Spatial的功能。 一、Oracle Spatial概述 Oracle Spatial支持多种空间数据模型,包括点、线、面等基本几何类型,以及更复杂的空间对象,如多边形和几何集合。它集成在...

    Oracle Spatial学生指导

    在“Oracle Spatial学生指导”中,你将深入理解如何利用这个强大的工具进行地理信息系统(GIS)的工作。 首先,Oracle Spatial的核心概念包括空间数据类型、空间索引和空间操作。空间数据类型如MDSYS.SDO_GEOMETRY...

    Oracle Spatial空间索引 解析

    Oracle Spatial是甲骨文公司推出的空间数据管理解决方案,其核心是一组专门针对Oracle数据库中空间元素的SQL模式...对于希望利用Oracle数据库处理空间信息的专业人士来说,掌握Oracle Spatial的相关知识是必不可少的。

    oracleSpatial java Api lib

    标题 "oracleSpatial java Api lib" 指的是一个包含了 Oracle Spatial 的 Java 库,这些库文件主要服务于在 Oracle 10g 数据库环境中进行地理空间数据操作的应用程序。这个库可能包含了一系列的类和方法,用于创建、...

    使用Oracle Spatial对ArcSDE中的SDO_GEOMETRY类型数据进行空间操作

    本文介绍了如何使用 Oracle Spatial 对 ArcSDE 中的 SDO_GEOMETRY 类型数据进行空间操作,包括建立 SDO_GEOMETRY 类型图层、利用 ArcSDE 导入空间数据、空间查询等步骤。通过这些步骤,可以实现对空间数据的存储、...

    基于Oracle Spatial实现多源空间数据集成.pdf

    同时,利用Oracle Spatial的Java类库,可以设计出基于XML的信息交换系统,将不同来源的空间数据转换并集成到Oracle Spatial中,实现数据的统一管理和高效查询。 Oracle Spatial的这一特性解决了GIS系统间数据格式不...

    Oracle Spatial User's Guide and Reference

    - **地理位置服务**:集成 Oracle Locator 以支持地理位置相关的服务。 #### 三、Oracle Spatial 的架构 Oracle Spatial 的核心组件包括: - **SDO_GEOMETRY 类型**:用于表示空间数据的基本类型。 - **SDO_TOPO_...

    扩展Oracle Spatial实现跨服务器的空间数据管理.pdf

    为了解决这些问题,文章提出了一种方法,利用远程内嵌过程和触发器等技术来扩展Oracle Spatial的功能,以实现基于Oracle的空间数据跨服务器分布式管理。远程内嵌过程允许在不同服务器之间执行存储过程,而触发器则...

    用oracleSpatial实现分布式空间数据传输.pdf

    标题《用oracleSpatial实现分布式空间数据传输.pdf》表明本文讨论了利用Oracle数据库中的Oracle Spatial组件来实现空间数据在分布式系统中的高效传输。Oracle Spatial是一个数据库扩展模块,专门用于空间数据管理,...

    Oracle Spatial 拓扑和网络数据模型

    - **城市规划**:利用拓扑数据模型可以精确地描述建筑物之间的关系,帮助城市规划师更好地设计街道布局和公共设施位置。 - **交通管理**:网络数据模型可以用来优化公交线路的设计,减少拥堵,并提高公共交通系统的...

    利用工具将shp文件导入到oracle spatial中

    本篇文章将详细探讨如何利用工具将SHP文件导入到Oracle Spatial中。 首先,我们需要了解SHP文件的结构。SHP文件由多个关联文件组成,包括.shp(几何数据),.shx(形状索引),.dbf(属性数据)等。这些文件共同...

    xtreme for java连接oracle spatial 空间数据库.doc

    对于Oracle Spatial,URL可能类似于`jdbc:oracle:thin:@//hostname:port/service_name`,其中`hostname`是数据库服务器的地址,`port`是监听的端口,`service_name`是Oracle服务名。 3. **建立连接**:使用xtreme ...

    Oracle Spatial9i用户手册

    这使得Oracle数据库能够用于地理信息系统(GIS)和位置服务。 2. **数据模型**:手册会介绍Oracle Spatial所采用的空间数据模型,如Simple Features for SQL标准,这是GIS领域广泛接受的数据表示方式。它支持多种...

    基于J2EE和Oracle Spatial构建LBS地图服务.pdf

    总的来说,基于J2EE和Oracle Spatial的LBS地图服务结合了两者的优势,既具备了J2EE的可扩展性和可移植性,又利用了Oracle Spatial的空间处理能力,为实现高效、灵活的地理位置信息服务提供了坚实的基础。随着技术的...

    e10777_oracle_OracleSpatial_

    在学习和使用Oracle Spatial时,阅读这份全英文用户手册是必不可少的步骤,尽管语言可能构成一定的挑战,但通过深入学习,可以掌握Oracle Spatial的强大功能,从而在地理信息系统、位置服务等领域发挥重要作用。

Global site tag (gtag.js) - Google Analytics