Oracle Spatial空间数据库简介_第1页
Oracle Spatial空间数据库简介_第2页
Oracle Spatial空间数据库简介_第3页
Oracle Spatial空间数据库简介_第4页
Oracle Spatial空间数据库简介_第5页
已阅读5页,还剩79页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、空间数据库Spatial Database Oracle Spatial概述本章内容1 Oracle Spatial简介2 数据类型和元数据3 索引和查询空间数据4 坐标系统教学目标掌握以下内容:了解ORACLE Spatial的功能ORACLE Spatial存储空间数据的特点绪论空间数据库是某一区域内关于一定地理要素特征的数据集合地理数据:描述地理要素特征(空间实体)的数据地理信息系统如何处理数据的?空间数据模型点:位置:(x,y) 属性:符号线:位置: (x1,y1),(x2,y2),(xn,yn) 属性:符号形状、颜色、尺寸面:位置:(x1,y1),(x2,y2),(xi,yi),(x

2、n,yn) 属性:符号变化 等值线 (1).矢量结构模型空间数据模型遥感传感器平台传感器(2).栅格结构模型空间数据模型 2.几何对象点:空间的一个坐标点;线:多个点组成的弧段;面:多个弧段组成的封闭多边形;图层按 “主题,” 分层真实世界空间数据模型按 数据类型分层G空间数据属性数据空间数据和属性数据的综合体Name Address Town St. Zip GIS是IS空间数据模型分类:每层地理数据空间数据属性数据;全部地理数据全部图层空间数据全部图层属性数据;空间数据库管理方案基于文件与关系式数据库的空间数据混合管理方案基于关系式数据库的空间数据管理方案基于对象关系式数据库的空间数据管理

3、方案。文件关系数据库混合管理方案属性数据建立在RDBMS上,数据存储和检索比较可靠、有效;几何数据采用图形文件管理,功能较弱,特别是在数据的安全性、一致性、完整性、并发控制方面,比商用数据库要逊色得多。空间数据分开存储,数据的完整性有可能遭到破坏。GIS软件:Supermap,Arc/Info,MGE,GenMap等几何数据属性数据ID数据文件数据库早期图形用户界面图形处理DBMS属性用户界面图形文件库属性数据库GIS用户界面图形处理DBMS图形文件库属性数据库高级语言ODBC协议GIS用户界面图形处理DBMS图形文件库属性数据库高级语言数据库开发语言数据库开发数据库开发全关系式数据库管理方案

4、属性数据、几何数据同时采用关系式数据库进行管理空间数据和属性数据不必进行烦琐的连接,数据存取较快属于间接存取方式,效率比DBMS的直接存取慢,特别是涉及空间查询、对象嵌套等复杂的空间操作GIS软件:supermap ,System9,Small World、Geovision等GIS界面属性数据(定长记录)空间数据(变长记录)DBMS空间数据库关系表二进制块对象关系数据库管理方案对现有的关系数据库进行扩展,增加空间数据类型解决了空间数据变长记录的存储问题,由数据库软件商开发,效率较高用户不能根据GIS要求进行空间对象的再定义,因而不能将设计的拓扑结构进行存储,没有解决数据的嵌套纪录问题 GIS

5、软件:supermap,TIGER,Geo+、Geo Tropics等GIS界面空间数据处理DBMS空间数据库扩充实体类型(点、线、面、圆等)1 Oracle Spatial概念Oracle Spatial是什么Oracle Spatial功能 数据模型查询模型空间数据索引空间关系和条件空间聚集函数地理编码Geocoding1.1 Oracle SpatialOracle Spatial是什么?Oracle Spatial 是 Oracle 数据库企业版的空间数据处理一个选件。Oracle Spatial能够在一个多用户环境中部署地理信息系统(GIS),并且与其它企业数据有机结合起来,统一部署

6、电子商务、政务。1.1 Oracle SpatialOracle Spatial功能Oracle Spatial 实现了对空间信息的存储、访问和分析。传统的 GIS 技术已达到其本身的极限,用户越来越多地转向以数据库为中心的空间计算。 Oracle Spatial将空间过程和操作直接转移到数据库内核中,从而提高了性能和安全性。Oracle Spatial将所有的地理空间数据类型(矢量、栅格、网格、影像、网络、拓扑)统一在单一、开放的、基于标准的数据管理环境中, 减少了管理单独、分离的专用系统的成本、复杂性和开销。1.1 Oracle SpatialOracle Spatial功能Oracle

7、Spatial可用标准的 SQL 查询管理空间数据。提供了SQL模式和函数来实现Feature Collection的存储、检索、更新和查询。 Oracle Spatial不但具有传统GIS的所有特性,而且还具有关系数据库的特性,这些特性扩展了应用程序开发人员的工作范围并提供了生产率,因而能支持更广泛的应用程序并提高性能。 1.1 Oracle SpatialOracle Spatial的组成实现模式(MDSYS)规定了支持的几何数据类型的存储、语法和语义空间索引机制一套运算符和函数进行感兴趣区域查询,空间连接查询和其它空间分析操作管理工具1.1 Oracle Spatial对象关系模型Obj

8、ect Relational ModelSpatial采用对象关系模型表示几何对象定义类型为MDSYS.SDO_GEOMETRY的字段每个几何对象无需占用多行存储对应OpenGIS Feature实现规范中的“SQL92+Geometry”Feature实现方案1.1 Oracle Spatial对象关系模型的优势支持丰富的几何对象类型包括圆弧arc ,圆circle, 混合多边形compound polygon, 混合折线段compound line string, 以及优化的矩形易于创建和维护空间索引以及构造空间查询空间索引由Oracle9i数据库服务器自动维护几何对象可以保存在单条记录的

9、单个字段优化的性能1.1 Oracle SpatialSpatial支持的几何对象类型Point, point clusterLine stringPolygonArc line stringArc polygonCompound polygonCompound line stringCircleRectangle1.1 Oracle SpatialSpatial支持3维和4维几何对象类型仅实现存储和索引空间函数仅对前两维坐标操作空间运算符对多于两维的对象无效Spatial的层次结构数据模型高层次的对象由低一层次的对象构成包括元素element,几何形geometry和图层layer三个层次1

10、.2 数据模型元素Element构成几何形对象的零件,包括点、折线段和多边形多边形按照顶点排列顺序分为外部多边形和内部多边形,顺时针为内,逆时针为外一个内多边形和若干外多边形组成带洞的多边形几何形GeometryGeometry代表一个地物,由若干顺序排列的元素构成构成元素可以是单个、多个同类型或者多个不同类型1.2 数据模型图层Layer图层是若干具有相同属性的几何形的集合人口密度、道路桥梁网络等图层的几何形和相关的空间索引都保存在标准的数据库表中坐标系Coordinate System(空间参照系)空间数据都具有坐标系属性,坐标系可以是地理相关的,也可以和地理无关地理相关的坐标数据有长度单

11、位地理无关即平面直角坐标(笛卡尔坐标)1.2 数据模型坐标系Coordinate System(空间参照系)Spatial支持四种坐标笛卡尔坐标Cartesian coordinate平面直角坐标,是几何形的缺省坐标系地理坐标geodetic coordinate经纬度坐标,与大地基准点相关投影坐标projected coordinate对应不同的应用目的,有多种投影方式局部坐标local coordinate非地理应用,如CAD等1.2 数据模型容差Tolerance容差值用来设定空间数据在运算时的精度反映了两个分离的点被考虑为重合的距离对于地理数据,容差值的单位是米对于非地理数据,容差值的

12、单位和坐标系的单位一致越小的容差值对应越高的运算精度可以在图层元数据和某些空间运算参数中设定容差值,地理数据的容差值和具体的应用相关对于非地理数据,容差值可以设定为数据最高精度的0.5倍1.2 数据模型容差Tolerance在地理数据中设定过大的容差可能引起多边形相对边重合而错误容差示例a,b的实际距离为0.846049894,应用距离函数SDO_GEOMETRY.DISTANCE如果图层容差为0.005,返回0.846049894如果容差设定为0.5,返回00.51.3 查询模型Spatial采用两级查询模型来实现空间查询和空间连接空间查询分为两个独立的操作,两次操作的结果合成为最终结果两个

13、操作分别称为主过滤Primary filter和次过滤Secondary filter主过滤先进行粗略的比较,快速生成查询结果的候选几何对象集合,计算代价小次过滤对来自主过滤的候选集合进行精确的匹配,生成精确的最终结果,计算代价高,但主过滤大大降低了计算复杂度1.3 查询模型Spatial采用空间索引来实现主过滤,快速从大量数据集中找出查询结果的候选集某些操作可以只进行代价低的主过滤,如地图显示的缩放所需进行的查询1.4 空间索引Oracle Spatial的两种空间索引R树R-tree四叉树quadtree分别适合不同的应用场合可以在一个几何字段上同时创建两种索引使用ALTER INDEX的

14、add_index参数在空间运算中可以指定使用哪个索引如SDO_RELATE的idx_tab1/idx_tab2选项1.4 空间索引R-tree和quadtree比较R-treeQuadtree几何形的近似形不可调节,采用最小包围盒可以通过设定分片级别和数量来调节几何形的近似形索引的创建和调整容易调整较复杂,会显著影响性能相对较少的存储空间相对较大对最近邻居SDO_NN查询较快对最近邻居查询较慢更新数据的效率较低频繁更新数据不会影响索引的性能可以多到四维空间索引只能在二维空间索引SDO_WITHIN_DISTANCE查询效率高能够实现全球的索引1.5 空间关系和条件Spatial在次过滤中实现

15、几何形之间的空间关系运算Spatial提供了几个次过滤方法实现空间关系SDO_RELATE测试拓扑关系SDO_WITHIN_DISTANCE测试两个空间对象是否在指定的距离范围内SDO_NN确定一个空间对象的最近邻居SDO_RELATE采用9交叉模型来表达点线面之间的空间关系空间关系可以进行组合1.5 空间关系和条件SDO_RELATE1.5 空间关系和条件SDO_WITHIN_DISTANCE先创建B的缓冲区D,再判定A和D是否相离SDO_NN返回指定个数的距离A最近的对象1.6 空间聚集函数定义空间聚集函数作用于包含若干几何对象的查询结果,返回单个SDO_GEOMETRY对象示例:返回查询

16、结果的最小包围盒select SDO_AGGR_MBR(shape) from cola_marketSDOAGGRTYPE类型多数空间聚集函数以SDOAGGRTYPE类型为参数CREATE TYPE sdoaggrtype AS OBJECT (geometry MDSYS.SDO_GEOMETRY,tolerance NUMBER);1.6 空间聚集函数SDOAGGRTYPE类型示例SELECT SDO_AGGR_UNION (MDSYS.SDOAGGRTYPE(c.shape, 0.005) FROM cola_markets c WHERE cola_d;容差值确定了进行

17、聚集操作时的精确度1.6 空间聚集函数空间聚集函数包括了SDO_AGGR_CENTROIDSDO_AGGR_CONVEXHULLSDO_AGGR_LRS_CONCATSDO_AGGR_MBRSDO_AGGR_UNION1.7 地理编码geocoding定义将邮政地址转换为标准化的地址、坐标位置Spatial可以与地理编码服务供应上的软件集成,实现地理编码的功能2 数据类型和元数据示例:插入/索引/查询SDO_GEOMETRY对象类型Geometry示例Geometry元数据结构度量单位2.1 示例:插入/索引/查询可乐市场分析2.1 示例:插入/索引/查询创建Feature表“可乐市场”cre

18、ate table cola_markets ( mkt_id number primary key, name varchar(32), shape MDSYS.SDO_GEOMETRY)2.1 示例:插入/索引/查询插入记录insert into cola_markets values( 1, cola_a, MDSYS.SDO_GEOMETRY( 2003, - 2维多边形 NULL, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,3), -矩形,外部 MDSYS.SDO_ORDINATE_ARRAY(1,1, 5,7) -顶点数据 );insert in

19、to cola_markets values(. .2.1 示例:插入/索引/查询更新元数据视图创建空间索引前必需工作,相当于创建图层insert into USER_SDO_GEOM_METADATA values( cola_markets, shape, MDSYS.SDO_DIM_ARRAY( - 20 x20网格 MDSYS.SDO_DIM_ELEMENT(X, 0, 20, 0.005), MDSYS.SDO_DIM_ELEMENT(Y, 0, 20, 0.005) ), NULL - SRID);2.1 示例:插入/索引/查询创建空间索引create index cola_spa

20、tial_idxon cola_markets(shape)indextype is MDSYS.SPATIAL_INDEX;-建立r-tree索引-下面的语句建立quadtree索引-parameters(SDO_LEVEL=8);2.1 示例:插入/索引/查询查询示例返回a/c市场的交select SDO_GEOM.SDO_INTERSECTION(c_a.shape,c_c.shape,0.005)from cola_markets c_a, cola_markets c_cwhere c_=cola_a and c_=cola_c;返回所有市场的面积select

21、 name, SDO_GEOM.SDO_AREA(shape, 0.005) from cola_markets2.2 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);create type SDO_POINT_TYPE as object ( X numb

22、er, y number, z number);create type SDO_ELEM_INFO_ARRAY as varray(1048576) of number;create type SDO_ORDINATE_ARRAY as varray(1048576) of number;2.2 SDO_GEOMETRY类型SDO_GTYPE指明了geometry的类型,对应OGIS几何对象模型中的类型是一个4位数字,格式为dltt,其中:d代表geometry的维数:2,3,4l代表线性参照系LRS测量维度,非LRS为0tt指明了geometry的类型,00-07,08-99保留geomet

23、ry的几个方法可以返回类型值GET_DIMS, GET_LRS_DIM, GET_GTYPE2.2 SDO_GEOMETRY类型SDO_GTYPE值geometry类型说明dl00UNKNOWN_GEOMETRYSpatial忽略本类型dl01POINT点dl02LINE or CURVE折线或者带圆弧折线dl03POLYGON多边形dl04COLLECTION异质geometry集合dl05MULTIPOINT点集dl06MULTILINE or MULTICURVE线集dl07MULTIPOLYGON多边形集2.2 SDO_GEOMETRY类型SDO_SRIDSDO_SRID用来确定geo

24、metry所对应的空间参照系null代表不对应任何参照系非空值必需参照MDSYS.CS_SRS表的SRID字段,同时需要存入USER_SDO_GEOM_METADATA表的SRID字段在同一个字段里的所有geometry对象都必须具有相同的SRID2.2 SDO_GEOMETRY类型SDO_POINT为了性能优化而设置的如果SDO_ELEM_INFO和SDO_ORDINATES成员都为空的话,SDO_POINT就是一个POINT对象的坐标值,否则SDO_POINT被忽略如果图层中仅有POINT对象的话,强烈建议将坐标值存放在SDO_POINT中2.2 SDO_GEOMETRY类型SDO_ELE

25、M_INFO是一个变长的数值数组,说明SDO_ORDINATES成员中数值的意义每三个数值为一个单元,分别是:SDO_STARTING_OFFSET:元素坐标值从SDO_ORDINATES数组第几个数开始,=1SDO_ETYPE:说明元素的类型,1/21003/2003表明是一个简单元素;4/1005/2005表明是一个复合元素SDO_INTERPRETATION:当ETYPE=1003/2003,指明解释SDO_ORDINATES的方式;当ETYPE=1005/2005,指明后面的几个单元构成复合元素2.2 SDO_GEOMETRY类型SDO_ORDINATES存放坐标值,如何解释由SDO_

26、ELEM_INFO来指明有效性约束GTYPE=d001/d005(点),则ETYPE=1GTYPE=d002/d006(线),则ETYPE=2/4GTYPE=d003/d007(面),则ETYPE=3/5/1003/2003/1005/20052.3 geometry示例矩形rectangleSDO_GTYPE=2003SDO_SRID=NULLSDO_POINT=NULLSDO_ETYPE=(1,1003,3)1指明本元素坐标偏移量1003表明是简单元素,外部多边形3表明是rectangle,只需要两对坐标SDO_ORDINATES=(1,1,5,7)2.3 geometry示例带洞的多边形

27、polygon with a holeSDO_GTYPE=2003SDO_SRID=NULLSDO_POINT=NULLSDO_ETYPE=(1,1003,1,19,2003,1)1,1003,1:从1开始取坐标的外部多边形/直线连接19,2003,1:从19开始取坐标的内部多边形/直线连接SDO_ORDINATES=(2,4, 4,3, 10,3, 13,5, 13,9, 11,13, 5,13, 2,11, 2,4,7,5, 7,10, 10,10, 10,5, 7,5).2.3 geometry示例混合折线compound line stringSDO_GTYPE=2002 /线SDO_

28、SRID=NULLSDO_POINT=NULLSDO_ETYPE=(1,4,2, 1,2,1, 3,2,2)1,4,2:从1开始取坐标复合折线,2段构成1,2,1:从1开始取坐标简单线,直线,直到33,2,2:从3开始取坐标简单线,圆弧,直到最后SDO_ORDINATES=(10,10, 10,14, 6,10, 14,10)直线圆弧2.3 geometry示例混合多边形compound polygonSDO_GTYPE=2003 /面SDO_SRID=NULLSDO_POINT=NULLSDO_ETYPE=(1,1005,2, 1,2,1, 5,2,2)1,1005,2:从1开始取坐标复合多

29、边形,2段构成1,2,1:从1开始取坐标简单线,直线,直到55,2,2:从5开始取坐标简单线,圆弧,直到最后SDO_ORDINATES=(6,10, 10,1, 14,10, 10,14, 6,10)直线圆弧2.3 geometry示例点pointSDO_GTYPE=2001 /点SDO_SRID=NULLSDO_POINT=MDSYS.SDO_POINT_TYPE(12,14,NULL)SDO_ETYPE=NULLSDO_ORDINATES=NULL(12,14)2.4 geometry元数据结构geometry元数据内容每一维的名称、上下限和容差值存放在系统表中,用户不能直接访问,通过三个

30、视图来存取:USER_SDO_GEOM_METADATA,可以更新ALL_SDO_GEOM_METADATA,只可以查询DBA_SDO_GEOM_METADATA,DBA可查询对于每一个几何类型字段都应该相应更新USER_SDO_GEOM_METADATA视图2.4 geometry元数据结构元数据结构TABLE_NAME varchar2(32)记录几何字段所在的表名COLUMN_NAME varchar2(32)记录几何字段的名称DIMINFO MDSYS.SDO_DIM_ARRAY由最多4个SDO_DIM_ELEMENT组成,每个SDO_DIM_ELEMENT描述一个维度的信息SDO_D

31、IMNAME:维度名称,如“x”SDO_LB, SDO_UB:上下限SDO_TOLERANCE:容差值SRID number记录字段的空间参照系ID2.5 度量单位涉及测量的空间函数都包括单位选项对于地理相关的geometry,其缺省坐标值单位由SRID决定,大多数坐标系的单位是米对于SRID为NULL的geometry,没有单位Spatial通过两个系统表来判定单位是否有效MDSYS.SDO_DIST_UNITSSDO_UNIT:单位名称(km/mile/foot)UNIT_NAME:描述信息CONVERSION_FACTOR:和米的转换比MDSYS.SDO_AREA_UNITS结构同上,F

32、ACTOR是同平方米的转换比2.5 度量单位示例SELECT , SDO_GEOM.SDO_LENGTH(c.shape, m.diminfo, unit=KM)FROM cola_markets_cs c, user_sdo_geom_metadata mWHERE m.table_name = COLA_MARKETS_CS AND m.column_name = SHAPE;3 索引和查询空间数据创建空间索引查询空间数据空间查询空间连接3.1 创建空间索引为了高效访问空间数据,必须创建索引在数据装入后,创建索引可以是R-tree索引和quadtree索引如果创建过程中中止必须

33、用drop index删除创建R-tree索引如果create index语句没有指定quadtree的参数,则自动创建R-tree索引可以在2、3、4维几何类型字段上建立R-tree索引缺省是2维,3、4维需要通过sdo_index_dims参数来指定3.1 创建空间索引创建R-tree索引SQL语句create index country_idx on country(shape)indextype is MDSYS.SPATIAL_INDEX;如果在字段上创建了多于2维的索引,部分空间关系和空间操作将被限制SDO_RELATE, SDO_NN, SDO_WITHIN_DISTANCE失效

34、SDO_FILTER正常3.1 创建空间索引创建R-tree索引存储空间需求设需要索引的表有n条记录R-tree索引表本身需要占据70*n字节空间创建索引过程中需要200*n字节空间,随后释放超过1M条记录的大型表,还额外需要100*n字节的临时排序空间创建索引的参数(quadtree索引)SDO_LEVEL:固定尺寸分片索引的分片层次,Oracle Enterprise Manager中的Spatial Index Advisor可以用来确定创建索引需要的大约层次SDO_NUMTILES:动态尺寸分片索引对每个几何对象分片的数量,不建议使用动态分片3.1 创建空间索引创建索引的参数(quad

35、tree索引)SDO_COMMIT_INTERVAL:索引创建过程是一个事务,为了减少支持事务回滚所需要的空间,可以设定参数在索引了几个几何对象之后即提交一次事务索引地理数据geodetic data为了充分利用Spatial的特性,对于包含参照系的地理数据应该使用R-tree来创建地理索引quadtree索引只能索引非地理数据非地理索引在空间操作中无法使用度量单位和一些选项3.1 创建空间索引约束几何对象的类型可以在create index或者alter index rebuild语句中的layer_gtype参数限制创建索引的字段只能包含某类型的几何对象示例create index cou

36、ntry_idx on country(shape)indextype is MDSYS.SPATIAL_INDEXPARAMETERS (layer_gtype=POLYGON)3.2 查询空间数据主过滤Primary filter操作符SDO_FILTERSDO_FILTER只通过空间索引来判别两个几何对象是否相交不进行几何对象间的操作,只是空间分片进行相交判断得出的结果可能包含一些不相交的几何对象SDO_FILTER(g1, g2, params)g1是一个geometry类型字段g2是一个geometry对象,判别是否和g1中的对象相交params是过滤参数,包括querytype3.2 查询空间数据SDO_FILTERquerytype=window将返回1,2,3,43,4不符合相交3.2 查询空间数据SDO_FILTER示例3.2 查询空间数据主次过滤复合运算符SDO_RELATE综合了主次过滤两阶段,能返回准确的结果SDO_RELATE(g1, g2, params)g1是一个geometry类型字段g2是一个geometry对象,判定与g1的空间关系params包含查询参数,包括mask, querytype

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论