您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > OracleSpatial介绍
主要参考资料《Oracle9iSpatial培训资料》《OracleSpatial9i》《OracleSpatial10g》OracleSpatial主要内容概述(1)数据库系统(3)空间数据库基础(3)OracleSpatial简介(1)课程重点OracleSpatial简介1-OracleSpatial概念2-数据类型和元数据3-索引和查询空间数据4-坐标系统1OracleSpatial概念OracleSpatial数据模型查询模型空间数据索引空间关系和条件空间聚集函数地理编码Geocoding1.1OracleSpatialOracleSpatial是什么?一系列函数和过程的集合,在Oracle9i数据库中实现了对空间信息的存储、访问和分析提供了SQL模式和函数来实现FeatureCollection的存储、检索、更新和查询OracleSpatial的组成实现模式(MDSYS)规定了支持的几何数据类型的存储、语法和语义空间索引机制1.1OracleSpatialOracleSpatial的组成一套运算符和函数进行感兴趣区域查询,空间连接查询和其它空间分析操作管理工具对象关系模型ObjectRelationalModelSpatial采用对象关系模型表示几何对象定义类型为MDSYS.SDO_GEOMETRY的字段每个几何对象无需占用多行存储对应OpenGISFeature实现规范中的“SQL92+Geometry”Feature实现方案1.1OracleSpatial对象关系模型的优势支持丰富的几何对象类型包括圆弧arc,圆circle,混合多边形compoundpolygon,混合折线段compoundlinestring,以及优化的矩形易于创建和维护空间索引以及构造空间查询空间索引由Oracle9i数据库服务器自动维护几何对象可以保存在单条记录的单个字段优化的性能1.1OracleSpatialSpatial支持的几何对象类型Point,pointclusterLinestringPolygonArclinestringArcpolygonCompoundpolygonCompoundlinestringCircleRectangle1.1OracleSpatialSpatial支持3维和4维几何对象类型仅实现存储和索引空间函数仅对前两维坐标操作空间运算符对多于两维的对象无效Spatial的层次结构数据模型高层次的对象由低一层次的对象构成包括元素element,几何形geometry和图层layer三个层次1.2数据模型元素Element构成几何形对象的零件,包括点、折线段和多边形多边形按照顶点排列顺序分为外部多边形和内部多边形,顺时针为内,逆时针为外一个内多边形和若干外多边形组成带洞的多边形几何形GeometryGeometry代表一个地物,由若干顺序排列的元素构成构成元素可以是单个、多个同类型或者多个不同类型1.2数据模型图层Layer图层是若干具有相同属性的几何形的集合人口密度、道路桥梁网络等图层的几何形和相关的空间索引都保存在标准的数据库表中坐标系CoordinateSystem(空间参照系)空间数据都具有坐标系属性,坐标系可以是地理相关的,也可以和地理无关地理相关的坐标数据有长度单位地理无关即平面直角坐标(笛卡尔坐标)1.2数据模型坐标系CoordinateSystem(空间参照系)Spatial支持四种坐标笛卡尔坐标Cartesiancoordinate平面直角坐标,是几何形的缺省坐标系地理坐标geodeticcoordinate经纬度坐标,与大地基准点相关投影坐标projectedcoordinate对应不同的应用目的,有多种投影方式局部坐标localcoordinate非地理应用,如CAD等1.2数据模型容差Tolerance容差值用来设定空间数据在运算时的精度反映了两个分离的点被考虑为重合的距离对于地理数据,容差值的单位是米对于非地理数据,容差值的单位和坐标系的单位一致越小的容差值对应越高的运算精度可以在图层元数据和某些空间运算参数中设定容差值,地理数据的容差值和具体的应用相关对于非地理数据,容差值可以设定为数据最高精度的0.5倍1.2数据模型容差Tolerance在地理数据中设定过大的容差可能引起多边形相对边重合而错误容差示例a,b的实际距离为0.846049894,应用距离函数SDO_GEOMETRY.DISTANCE如果图层容差为0.005,返回0.846049894如果容差设定为0.5,返回00.51.3查询模型Spatial采用两级查询模型来实现空间查询和空间连接空间查询分为两个独立的操作,两次操作的结果合成为最终结果两个操作分别称为主过滤Primaryfilter和次过滤Secondaryfilter主过滤先进行粗略的比较,快速生成查询结果的候选几何对象集合,计算代价小次过滤对来自主过滤的候选集合进行精确的匹配,生成精确的最终结果,计算代价高,但主过滤大大降低了计算复杂度1.3查询模型Spatial采用空间索引来实现主过滤,快速从大量数据集中找出查询结果的候选集某些操作可以只进行代价低的主过滤,如地图显示的缩放所需进行的查询1.4空间索引OracleSpatial的两种空间索引R树R-tree四叉树quadtree分别适合不同的应用场合可以在一个几何字段上同时创建两种索引使用ALTERINDEX的add_index参数在空间运算中可以指定使用哪个索引如SDO_RELATE的idx_tab1/idx_tab2选项1.4空间索引R-tree和quadtree比较R-treeQuadtree几何形的近似形不可调节,采用最小包围盒可以通过设定分片级别和数量来调节几何形的近似形索引的创建和调整容易调整较复杂,会显著影响性能相对较少的存储空间相对较大对最近邻居SDO_NN查询较快对最近邻居查询较慢更新数据的效率较低频繁更新数据不会影响索引的性能可以多到四维空间索引只能在二维空间索引SDO_WITHIN_DISTANCE查询效率高能够实现全球的索引1.5空间关系和条件Spatial在次过滤中实现几何形之间的空间关系运算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对象示例:返回查询结果的最小包围盒selectSDO_AGGR_MBR(shape)fromcola_marketSDOAGGRTYPE类型多数空间聚集函数以SDOAGGRTYPE类型为参数CREATETYPEsdoaggrtypeASOBJECT(geometryMDSYS.SDO_GEOMETRY,toleranceNUMBER);1.6空间聚集函数SDOAGGRTYPE类型示例SELECTSDO_AGGR_UNION(MDSYS.SDOAGGRTYPE(c.shape,0.005))FROMcola_marketscWHEREc.name’cola_d’;容差值确定了进行聚集操作时的精确度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表“可乐市场”createtablecola_markets(mkt_idnumberprimarykey,namevarchar(32),shapeMDSYS.SDO_GEOMETRY)2.1示例:插入/索引/查询插入记录insertintocola_marketsvalues(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)--顶点数据));insertintocola_marketsvalues(......2.1示例:插入/索引/查询更新元数据视图创建空间索引前必需工作,相当于创建图层insertintoUSER_SDO_GEOM_METADATAvalues(‘cola_markets’,‘shape’,MDSYS.SDO_DIM_ARRAY(--20x20网格MDSYS.SDO_DIM_ELEMENT(‘X’,0,20,0.005),MDSYS.SDO_DIM_ELEMENT(‘Y’,0,20,0.005)),NULL--SRID);2.1示例:插入/索引/查询创建空间索引createindexcola_spatial_idxoncola_markets(shape)indextypeisMDSYS.SPATIAL_INDEX;--建立r-tree索引--下面的语句建立quadtree索引--parameters(‘SDO_LEVEL=8’);2.1示例:插入/索引/查询查询示例返回a/c市场的交selectSDO_GEOM.SDO_INTERSECTION(c_a.shape,c_c.shape,0.005)fromcola_marketsc_a,cola_marketsc_cwherec_a.name=‘cola_a’andc_c.name=‘cola_c’;返回所有市场的面积selectname,SDO_GEOM.SDO_AREA(shape,0.005)fromcola_markets2.2SDO_GEOMETRY类型定义createtypeSDO_GEOMETRYasobject(SDO_GTYPEnumber,SDO_SRIDnumber,SDO_POINTSDO_POINT_TYPE,SDO_ELEM_INFOMDSYS.SDO_ELEM_INFO_ARRAY,SDO_ORDINATESMDSYS.SDO_ORDINATE_ARRAY);createtypeSDO_POINT_TYPEasobject(Xnumber,ynumber,znumber);createtypeSDO_ELEM_INFO_ARRAYasvarray(1048576)ofnumber;createtypeSDO_ORDINATE_ARRAYasvarray(1048576)ofnumber;2.2SDO_GEOMETRY类型SDO_GTYPE指明了geometry的类型,对应OGIS几何对象模型中的类型是一个4位数字,格式为dltt,其中:d代表geometry的维数:2,3,4l代表线性参照系LRS测量维度,非LRS为0tt指明了geometry的类型,0
本文标题:OracleSpatial介绍
链接地址:https://www.777doc.com/doc-5329023 .html