空间数据库试验指导书_第1页
空间数据库试验指导书_第2页
空间数据库试验指导书_第3页
空间数据库试验指导书_第4页
空间数据库试验指导书_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、空间数据库实验指导书班级学号姓名评分表实验一实验二实验三总评空间数据库实验预备知识一一Oracle Spatial简介Oracle Spatial 主要通过元数据表、空间数据字段 (即sdo_Geometry 字段)和空间 索引来管理空间数据,并在此基础上提供一系列 空间查询和空间分析的程序包,让用户进行 更深层次的GIS应用开发。Oracle Spatial 使用空间字段sdo_Geometry 存储空间数据, 用元数据表来管理具有sdo_Geometry 字段的空间数据表,并采用 R树索引和四叉树索引 技术来提高空间查询和空间分析的速度。、元数据表说明Oracle Spatial的元数据表

2、存储了有空间数据的 数据表名称、空间字段名称、空间数据的坐标范围、坐标系 以及坐标维数说明等信息。用户必须通过元数据表才能知道Oracle数据库中是否有 Oracle Spatial 的空间数据信息。通过元数据视图 (USER_SDO_GEOM_METADATA )访问元数据表。元数据视图的基本定义为:字段名艇Table NameVarcrar2(32)表名Column_NaineVarcrar2(1024)字段名Diminfo1一J-.Mdsys.sdo dim array 一/空间信息的坐标靶围,用于定于所操作的空间 信息的 MBR(Minimum bounding rectangles)

3、# 小座盖的矩形框大小Sria空间坐标参萼系字葭名碗是空间维名称(匚叨盘)Sdo_LBNumberMBK的左下角更标Sdo,UBNumberMB艮的右上角坐标Sdo ToleranceNumber容忍的精度I其中,TABLE_NAME 为含有空间数据字段的表名, COLUMN_NAME 为空间数据表中的空 问字段名称,DIMINFO 是一个按照空间维顺序排列的 SDO_DIM_ARRAY 对象的动态数组, SRID则用于标识与几何对象相关的空间坐标参考系。 SDO_DIM_ELEMENT 对象的定义如 下所示:Create Type SDO_DIM_ARRAY as OBJECT (SDO_D

4、IMNAME VARCHAR2(64),SDO_LB NUMBER,SDO_UB NUMBER,SDO_TOLERANCE NUMBER);其中,SDO_DIMNAME 是空间维名称,SDO_LB为该空间维的左下角坐标,SDO_UB 为该空间维的右上角坐标,SDO_TOLERANCE为几何对象的表示精度。二、空间字段解析字浮名翱簸Sdo GtypeNumber几何对象的类型Sdo SridNumber几何对象的坐标系Sdo PointSdo Point Type表示几何类型为点的几何对象Sdo_ElemJnfoS do_Ele m_lnro_Array是一个可变长度的效俎,S 3个数作为一个元

5、 素单位,用于解释坐标是如何存储在 SDO_ORDINATES 中国Sdo_Ordi natesS do_0 rdi n atE_Anray是一个可变长度的数蛆,用于存储几何对象的 克网坐标,该数组的类型为NUMBER型Oracle Spatial 的空 间数据都存储在空间 字段sdo_Geometry 中,理解 sdo_Geometry 是编写 Oracle Spatial 程序的关键。sdo_Geometry 是按照 Open GIS 规范定义的一个对象,其原始的创建方式如下所示。sdo_Gtype是一个NUMBER型的数值,用来定义存储几何对象的类型。sdo_Gtype 是一个4个数 字

6、的整数,其格式为dltt ,其中d表示几何对象的维数;l表示三维线性参考系统中的线性参 考值,当d为3维或者4维时需要设置该值,一般情况下为空;tt为几何对象的类型,Oracle Spatial定义了 7种类型的几何类型,目前,tt使用了 00到07 ,其中08到99是Oracle Spatial保留的数字,以备将来几何对象扩展所用。数值几何类型指述DLD0用于存放自定义类型的几何对象.DL01点几何对象包含一个点DL02直线或曲线几何对象由直线段或曲线殿组成DL03多边形几何对象由一个多边先.该多边形可能内部含有洞DLM复合形状集几何对象由点、线、变边形组成的复合集DL05复合点几何对象由一

7、个点或多个点组成DL06复合域或曲续几何对象由一条续或多条线组成DL07复合多边形几何对象包含多个外环、多个不相交的多边形DL08-99Oracle Spatial 暂且保凿sdo_Sridsdo_Srid也是一个NUMBER型的数值,它用于标识与几何对象相关的空间坐标系。如果sdo_Srid为空(null ),则表示没有坐标系与该几何对象相关;如果该值不为空,则该值 必须为MDSYS.CS_SRS 表中SRID字段的一个值,在创建含有几何对象的表时,这个值必 须力口入至IJ描述空间数据表元数据的 USER_SDO_GEOM_METADATA 视图的SRID字段中。 对于我们通常使用国际标准的

8、 Longitude/Latitude(8307) , Oracle Spatial 规定,一个几 何字段中的所有几何对象都必须为相同的 sdo_Srid值。sdo_Pointsdo_Point是一个包含三维坐标 X,Y,Z数值信息的对象,用于表示几何类型为点的几 何对象。如果sdo_Elem_Info和SDO_ORDINATES 数组都为空,则sdo_Point中的X,Y,Z为点对象的坐标值,否则,sdo_Point的值将被忽略(用 NULL表示)。Oracle Spatial强 烈要求用sdo_Point存储空间实体为点类型空间数据,这样可以极大的优化Oracle Spatial 的存储性

9、能和查询效率。sdo_Elem_Infosdo_Elem_Info 是一个可变长度的数组,每3个数作为一个元素单位,用于表示坐标 是如何存储在SDO_ORDINATES 数组中的。本文把组成一个元素的3个数称为3元组。一 个3元组包含以下3部分的内容: SDO_STARTING_OFFSETSDO_STARTING_OFFSET 表明每个几何元素的第一个坐标在 SDO_ORDINATES 数组中的存储位置。它的值从1开始,逐渐增加。 SDO_ETYPESDO_ETYPE用于表示几何对象中每个组成元素的几何类型。当它的值为 1, 2, 1003和2003时,表明这个几何元素为简单元素。如果 SD

10、O_ETYPE为1003 ,表明 该多边形为外环(第一个数为1表示外环),坐标值以逆时针存储;如果 SDO_ETYPE 为2003 ,表明该多边形为内环(第一个数为 2表示内环),坐标值以顺时针存储。当 SDO_ETYPE为4, 1005和2005时,表明这个几何元素为复杂元素。它至少包含一 个3元组用以说明该复杂元素具有多少个几何简单元素。同样,1005表示多边形为外环,坐标值以逆时针存储;2005表示多边形为内环,坐标值以顺时针存储。 SDO_INTERPRETATIONWOJTYPESmjNTEGPmAIION含义0任意值用于为0皿k即毗d不支持的几何类型建模11点1 1nl具有II个点

11、的点集21由直纥麴成峨串,一 W段由搦艘翻成22螂线蝴微黑MS由起点,弧比盍一点 以及终点组成.楙两段弧的接点不慧低存储,1眼或20好1由直魅就边形,起点与终点必须相同1MB 典 MB2由峨麴成海边形,超点与终点必须相同.WK 线段由起点、弧E任意一点以及终蠲成.相邻两段弧的 接点不需要重复存储lonsUMB3痔弗由左下角和右上翩点确定1003 爽 0034圆,由圆周上的不同三点确定4nl由直线段和玉纥段连成的复合线,逋表示组成复合线 的相邻子元素的个我,子元素的SDOTYPE必须为 2, 一个子元素的最后一点是下一个子元素的第一个 点,并且该点不能重氮1005或加05nl由直线段和瞒段连成的

12、复合多边捌n新躯复 合多边形的相邻子元素的个数,子元素的 SDOJTYH必须为3 一个子元素的最后一点是下 一个子元素的第一个点,并且该点不能重复.多边形 的起点和终点必须相比SDO_INTERPRETATION 具有两层含义,具体的作用由SDO_ETYPE是否为复杂元素 决定。如果 SDO_ETYPE 是复杂元素(4, 1005 和 2005 ),贝U SDO_INTERPRETATION 表示它后面有几个子3元组属于这个复杂元素。如果SDO_ETYPE是简单元素(1,2, 1003 和2003 ),贝U SDO_INTERPRETATION 表示该元素的坐标值在 SDO_ORDINATES

13、 中是 如何排列的。需要注意的是,对于复杂元素来说,组成它的子元素是连续的,一个子元素的最后一个 点是下一个子元素的起点。最后一个子元素的最后一个坐标要么与下一个元素的 SDO_STARTING_OFFSET 值减1所对应的坐标相同,要么是整个 SDO_ORDINATES 数 组的最后一个坐标。 sdo_OrdinatesSDO_ORDINATES 是一个可变长度的数组,用于存储几何对象的实际坐标,是一个最 大长度为1048576 ,类型为Number的数组。SDO_ORDINATES 必须与sdo_Elem_Info数组配合使用,才具有实际意义。SDO_ORDINATES的坐标存储方式由几何

14、对象的维数决定,如果几何对象为二维,则SDO_ORDINATES 的坐标以 x1, y1, x2, y2,顺序排列,如果几何对象为三维,则 SDO_ORDINATES 的坐标以x1, y1, z1, x2, y2, z2,的顺序排列。三、空间索引技术Oracle Spatial提供R树索引和四叉树索引两种索引机制来提高空间查询和空间分析的 速度。用户需要根据不同空间数据类型创建不同的索引,当空间数据类型比较复杂时,如果 选择索引类型不当,将使 Oracle Spatial创建索引的过程变得非常慢。实验一 认识Oracle Spatial的主要数据库对象、实验目的了解Oracle数据库中MDSY

15、S方案的空间元数据表 的结构及用途;了解对象类型MDSYS.SDO_DIM_ARRAY以及和空间元数据表的关系;掌握通过元数据视图USER_SDO_GEOM_METADATA 查看空间元数据表 的内容;了解对象类型MDSYS.SDO_GEOMETRY的结构及用途;了解数组类型MDSYS.SDO_DIM_ELEMENT结构及用途;了解数组类型MDSYS.SDO_ORDINATE_ARRAY结构及用途;、实验环境在 Oracle 的 Enterprise Manager Console中进行实当打开 Enterprise Manager Console的 方法:开始一程序一 Oracle - or

16、a92-Enterprise Manager Console出现如下登录界面:选择“独立启动”选择按钮,点击确定进入Enterprise Manager Console#面如下图所示:U 咄!1*iJrii: flinifc 4. 0run|忆 X看关匚5齿已N的号祖-右W阜由速选修* VHkOrachs Entorpflso MiinagerOracle E -Lerpris.e hlzriEiqti 毫.F五 if U i I marirTirlP-肉植柄册诉JTBJW幅攻印役事任10 E- .咖事.修部汽优上图,1押厘置 13=f i1不沉上 后手 FIE叶司两隔,一事度p匕网电濯加晅辜

17、许. H国丰口许室L2酹立 i-F拈.占同雇 不小苴化管理品型享任第r聘制美511他里告*-44.*十:Ama.CrazlB和叁三方工面:Ofucl Enitehprise ManagehI不杵加本地苜选白府证蚂用户名fU): 口令旧: 服寻.连接身精因 (确定:即消格助填入正确的用户名和口令,”连接身份(A)”选择SYSDBA ,如下图:点击数据库中的实例(上图中实例为 ORACLE01),进行连接,出现如下图所示的连接界连接后实例名将改变为下图所示:网络lj翻格库口门八CL匚口1 oytom AC CYQDDA*号例程方案中备史主性 中戮存绪 s马身分用数据仓库+ 4 -r作三问菖XIUt

18、L数福库三、实验步骤及分析(2课时)1. 了解Oracle数据库中MDSYS方案的空间元数据。(1)打开MDSYS. SDO_GEOM_METADATA_TABLE空间元数据表,并记录表结构下来,同时给出每个属性代表的实际意义:(2) MDSYS. SDO_GEOM_METADATA_TABLE 空间元数据表中的 SDO_DIMINFO 属性的 类型是SDO_DIM_ARRAY ,在用户类型.数组类型中查看 SDO_DIM_ARRAY的一般信息, SDO_DIM_ARRAY这个数组的元素是什么类型?(3)查看用户类型 SDO_DIM_ELEMENT的结构并记录下来并说明每个属性代表的实际意 义

19、。它和元数据表中的SDO_DIMINFO属性有何关系?(4)打开SQL-Plus (以后步骤中的SQL都在此程序中执行),并运行如下SQL语句,建立一个包含 MDSYS . SDO_GEOMETRY属性的表:CREATE TABLESPATIALTEST (IDNAMEADDRESSTELEPHONEVARCHAR2(20) PRIMARY KEY ,VARCHAR2(100),VARCHAR2(200),VARCHAR2(50),LOCMDSYS . SDO_GEOMETRY);在对应方案中找到数据表 SPATIALTEST,双击查看表结构,可以看到 LOCATION的数据类型是MDSYS

20、. SDO_GEOMETRY ,所以,LOCATION需要在元数据表中填写一条相关记录。(5)根据用户表填写空间元数据,并说明其实际意义。INSERT INTO USER_SDO_GEOM_METADATA VALUES(SPATIALTEST, LOC,MDSYS.SDO_DIM_ARRAY(MDSYS.SDO_DIM_ELEMENTLongitude ,-180,180,10), MDSYS.SDO_DIM_ELEMENTLatitude -90,90,10) ), 8307 );(6)禾1J用USER_SDO_GEOM_METADATA视图查看元数据表并记录内容:SELECT * FRO

21、M USER_SDO_GEOM_METADATA查看对象类型MDSYS.SDO_GEOMETRY的结构并记录下来,说明每个属性代表的实 际意义。(8 )查看数 组类型 MDSYS.SDO_ELEM_INFO_ARRAY 的结构 并记录 下来。它和MDSYS.SDO_GEOMETRY对象类型有何关系?(9)查看数组类型 MDSYS.SDO_ORDINATE_ARRAY 的结构并记录下来。它和 MDSYS.SDO_ELEM_INFO_ARRAY 数组类型有何关系?完成时间实验过程、结果及分析得分教师签名2080实验二空间查询一、实验目的.掌握空间数据表的建立的过程;.掌握空间数据的输入方法;.掌握

22、空间索引的建立方法;.掌握filter和related两个查询过程。二、实验环境实验中的SQL语句均在 SQL-PLUS中执行。三、实验步骤及内容(2课时)Stepl.创建一张表,其中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 AVLUES (mylake,

23、/-表名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打开创建的空间索引 mylake_idx,记录索引的一般信息。Step4,插入空间数据Ora

24、cle Spatial用 MDSYS.SDO_GEOM或RYW空间数据,/插入包含一个岛屿的湖泊INSERT INTO mylake VALUES(Lake Calhoun,MDSYS.SDO_GEOMETRY(2003,NULL,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1, 19,2003,1),MDSYS.SDO_ORDINATE_ARRAY(d,0,0, 10,10, 0,10, 0,0, 4,4, 6,4, 6,6, 4,6, 4,4) );/插入两艘小船INSERT INTO mylake VALUES(The Windswept,MDSYS.SD

25、O_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);运行SELECT * FROM MYLAK

26、讣记录运行结果,并说明每条记录代表什么Step5.查询Oracle Spatial查询数据包括二个处理过程:只通过索引查询候选项。通过函数 SDO_FILTE效现:SDO_FILTER(geometry1 MDSYS.SDO_GEOMETRY,ometry2 MDSYS.SDO_GEOMETRY, params VARCHAR2)geometry1 :必须是被索引的几何数据geometry2:不一定是表中的空间字段,也不要求被索引params: Filter 类型querytype=WINDOW geometry2 不要求来自表querytype=JOIN : geometry2 必须来自表运

27、行下列SQL语句,并记录结果,并说明这个结果这代表什么意义?SELECT name boatnameFROM mylake tWHERE featureid = 11AND 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;再检查每个候选项是否和条件精确匹配。通过函数SDO_RELA佞现:SDO_RELATE(ge

28、ometry1 MDSYS.SDO_GEOMETRY, geometry2 MDSYS.SDO_GEOMETRY, params VARCHAR2)params: masktypeDISJOINT the boundaries and interiors do not intersectTOUCH - the boundaries intersect but the interiors do not intersectOVERLAPBDYDISJOINT the interior of one object intersects the boundary and interior of the

29、 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 intersectEQUAL the two objects have the same boundary and interiorC

30、ONTAINS the interior and boundary of one object is completely contained in the interior of the other objectCOVERS the interior of one object is completely contained in the interior of the other object and their boundaries intersectINSIDE the opposite of CONTAINS. A INSIDE B implies B CONTAINS A.COVE

31、REDBK 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

32、 are non-disjoint.运行下列SQL语句,并记录结果,并说明这个结果这代表什么意义?/选择在定义矩形内的所有小船SELECT name boat_nameFROM mylake tWHERE feature_id = 12AND 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) = TRUEAND 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), mask=INSIDE querytype=WINDOW) = TRUE;运行结果和分析:/ masktype 可联合使用SELECT name boat_name FROM mylake tWHERE feature_id = 11AND SDO_FILTER(t.shape, mdsys.s

温馨提示

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

评论

0/150

提交评论