空间数据库报告
- 格式:doc
- 大小:537.00 KB
- 文档页数:11
空间数据库学习报告在当今数字化的时代,数据的管理和处理变得愈发重要。
空间数据库作为一种专门用于存储和管理空间数据的数据库系统,在地理信息系统、城市规划、环境保护等众多领域发挥着关键作用。
通过对空间数据库的学习,我不仅深入了解了其基本概念和原理,还掌握了相关的技术和应用。
一、空间数据库的基本概念空间数据库是一种能够有效存储、管理和查询空间数据的数据库系统。
空间数据与传统的非空间数据不同,它具有空间位置、几何形状、拓扑关系等特性。
例如,地图上的点、线、面等要素,以及它们之间的相邻、包含等关系,都属于空间数据的范畴。
为了准确地表示和处理空间数据,空间数据库采用了特定的数据模型和结构。
常见的空间数据模型包括矢量数据模型和栅格数据模型。
矢量数据模型通过点、线、面等几何对象来描述空间实体,而栅格数据模型则将空间划分为规则的网格单元,并为每个单元赋予相应的值。
二、空间数据库的关键技术1、空间索引空间索引是提高空间数据查询效率的重要技术。
常见的空间索引方法有 R 树、四叉树、KD 树等。
这些索引结构能够快速定位和筛选出与查询条件相关的空间数据,从而大大减少数据检索的时间和开销。
2、空间查询语言为了方便用户对空间数据进行查询和操作,空间数据库提供了专门的查询语言,如 SQL 的空间扩展(如 PostGIS 中的空间查询函数)。
这些查询语言支持空间关系的判断、空间数据的过滤和聚合等操作,使得用户能够灵活地获取所需的空间信息。
3、空间数据的存储管理空间数据的存储方式直接影响着数据库的性能和效率。
在空间数据库中,通常采用优化的存储策略来减少数据冗余、提高存储空间利用率,并保证数据的一致性和完整性。
三、空间数据库的应用领域1、地理信息系统(GIS)GIS 是空间数据库应用最为广泛的领域之一。
通过将地理空间数据存储在空间数据库中,GIS 能够实现地图的绘制、空间分析、路径规划等功能,为城市规划、资源管理、交通运输等提供决策支持。
实验一、空间数据库建立一、实验目的1。
利用影像配准(Georeferencing) 工具进行影像数据的地理配准2. 编辑器的使用(点要素、线要素、多边形要素的数字化)。
3 。
利用ArcCatalog建立个人数据库及数据集,导入SHP 格式数据,4 。
利用ArcCatalog的Topoloy工具,进行悬挂点伪节点检查;5 . 利用ArcMap高级编辑工具(Trim,Extend)对问题数据记性修改;6 利用。
ArcCatalog的Polygon Featue Class From L ines工具建立多边形数据层.二、实验准备数据:昆明市西山区普吉地形图1:10000地形图――70011—1.Tif ,昆明市旅游休闲图。
jpg 软件准备:ArcGIS Desktop —-—ArcMap三、实验内容及步骤步骤1 :地形图的配准-加载数据和影像配准工具所有图件扫描后都必须经过扫描配准,对扫描后的栅格图进行检查,以确保矢量化工作顺利进行。
z 打开ArcMap,添加影像配准工具栏。
“"z 把需要进行配准的影像—70011—1。
TIF增加到ArcMap,会发现影像配准工具栏中“" 的工具被激活.步骤2 :输入控制点在配准中我们需要知道一些特殊点的坐标。
通过读图,我们可以得到一些控件点――公里网格的交点,我们可以从图中均匀的取几个点。
一般在实际中,这些点应该能够均匀分布。
z 在影像配准工具栏上,点击添加控制点按钮。
””“”z 使用该工具在扫描图上精确到找一个控制点点击,然后鼠标右击输入该点实际的坐标位置,如下图所示:步骤3 :矫正并重采样栅格生成新的栅格文件z 在影像配准菜单下,点击矫正,对配准的影像根据设定的变换公式重新采样, ”" “”另存为一个新的影像文件.z 加载重新采样后得到的栅格文件,并将原始的栅格文件从数据框中删除。
后面我们的数字化工作是对这个配准和重新采样后的影像进行操作的。
主要内容索引:一、实验名称二、实验目的三、实验注意事项四、实验数据描述五、实验步骤六、实验结果一、实验名称空间数据库创建二、实验目的* 巩固空间数据库所学知识,并学会用其解决实际问题* 安装并摸索PostGIS、QGIS等软件的基础操作三、实验内容(1)通过OpenStreetMap网站()下载你的家乡数据,导入到PostGIS数据库,并利用QGIS显示数据库中点、线和面图层。
(2)FlightAware网站(/)提供了全球航班的实时追踪和历史记录。
航班飞行轨迹包括Code, Time, Position (Latitude, Longitude),Height等信息。
抓取一个武汉出发或到达的航班飞行轨迹,导入到PostGIS数据库中,并利用QGIS显示数据库中的数据。
(3)提交实验报告。
四、实验数据描述1. 通过OpenStreetMap网站下载家乡数据,本实验选择的区域为在北纬28.6966°-28.7166°、在东经115.8197°-115.8596°之间的江西省南昌市青山湖区与新建区交界的一小块区域。
2.在提供全球航班的实时追踪和历史记录FlightAware网站下载航班数据。
本次航班实验数据为CSN3367号航班(2019年12月12日20:53从广州白云国际机场到22:06于武汉天河国际机场)。
五、实验步骤步骤一:下载并安装PostgreSQL步骤二:安装PostGIS和pgRouting步骤三:安装pgAdmin 交互界面PostgreSQL数据库提供pgAdmin交互界面,在程序-->PostgreSQL 9.5-->pgAdmin III。
输入数据库用户postgres密码登录后,可创建数据库,点击菜单栏SQL 图标,可输入SQL语句,创建表格、插入数据、构造查询语句等,按F5 执行SQL 语句,可在数据输出栏查看执行结果。
一、实习背景与目的随着我国地理信息产业的快速发展,地理空间数据库技术作为地理信息系统(GIS)的核心组成部分,其重要性日益凸显。
为了提高学生对地理空间数据库技术的实际操作能力,本实训旨在通过实际操作,让学生熟悉地理空间数据库的基本概念、设计、管理和应用,培养学生的空间数据处理和分析能力。
二、实习内容1. 实训环境本次实习采用ArcGIS软件进行地理空间数据库的创建、管理和应用。
ArcGIS是一款功能强大的地理信息系统软件,具有丰富的空间数据处理和分析功能。
2. 实训内容(1)地理空间数据库的基本概念实习首先介绍了地理空间数据库的基本概念,包括空间数据、属性数据、地理空间数据库、空间数据模型等。
(2)地理空间数据库设计实习重点讲解了地理空间数据库的设计方法,包括ER模型设计、空间数据模型设计、数据字典编制等。
(3)地理空间数据库创建实习指导学生使用ArcGIS软件创建地理空间数据库,包括数据库的创建、要素类的创建、字段属性的设置等。
(4)地理空间数据库管理实习指导学生进行地理空间数据库的管理,包括数据的导入导出、数据编辑、数据查询、空间分析等。
(5)地理空间数据库应用实习引导学生利用地理空间数据库进行实际应用,如制作地图、空间分析、决策支持等。
三、实习步骤1. 准备工作(1)安装ArcGIS软件,确保软件运行正常。
(2)收集实习所需的空间数据和属性数据。
2. 实训过程(1)地理空间数据库设计根据实习所需的数据,设计地理空间数据库的ER模型,并绘制ER图。
(2)地理空间数据库创建使用ArcGIS软件创建地理空间数据库,包括数据库的创建、要素类的创建、字段属性的设置等。
(3)地理空间数据库管理导入实习所需的数据,进行数据编辑、数据查询、空间分析等操作。
(4)地理空间数据库应用利用地理空间数据库进行实际应用,如制作地图、空间分析、决策支持等。
3. 实习总结实习结束后,学生需撰写实习报告,总结实习过程中的收获和体会。
一、建立Geodatabase数据文件1、新建一个Geodatabase:如图1.1所示:在ArcCatalog环境下新建一个名为“Personal Geodatabase”的数据文件。
1.1 建好的Geodatabase数据文件2、新建要素集:在Personal Geodatabase下,新建一个shanghai要素集,定义坐标系统为高斯投影(如图 1.2所示),单位为米,精度为1。
1.2 创建要素数据集3、新建要素类:在shanghai要素集中,新建一个parcel和pole要素类,parcle的Shape字段类型为polygon,新增字段parcel_name(文本型)、owner_name (文本型);pole的Shape 字段类型为点类型,新增三个字段:类型(短整型)、高度(短整型)和管理部门(文本型)。
1.3 创建parcel要素类1.4 创建pole要素类4、新建表:如图1.5所示,在Personal Geodatabase下,新建一个owner表,新增字段name (文本型)、age (短整型)1.5 创建owner表二、创建子类1、新建子类:单击鼠标右键,打开pole要素类的属性表,选择子类选项卡,根据type字段创建pole类型子类,包括Wood、Steel和Cement。
图2.1 pole要素类新建子类2、对子类赋值:如图2.2所示,在ArcMap环境下通过列表框选择对要素子类进行赋值。
图2.2 pole要素类赋值三、按子类定义pole要素类的域:1、打开Geodatabase的属性表,定义三个域:Wood_pole高度域(短整型),20—30ft;Steel_pole的高度域(短整型),30—50ft;pole的管理部门域(文本),市管,区县管。
图3.1 按子类定义pole要素类的域2、打开pole要素类属性表,定义高度和管理部门字段的域,其中,高度按子类定义。
图3.3 定义高度和管理部门字段的域3、检查输入的要素的有效性:在ArcMap环境下,对选中点进行属性编辑,其中管理部门只能在市管和区县管两个值中选择;输入的高度值是否有效,通过Validation(验证要素)命令对选中的要素进行有效性检验。
地理信息系统实验报告书姓名:班级:指导教师:2012年11月目录实验一:空间数据库的建立------------------------------------------3 实验目的---------------------------------------------3实验原理---------------------------------------------3 实验软件---------------------------------------------3 实验内容与步骤---------------------------------------3实验二:地图可视化----------------------------------------------------9 实验目的---------------------------------------------9实验原理---------------------------------------------9 实验软件---------------------------------------------9 实验内容与步骤---------------------------------------9实验三:空间分析-------------------------------------------------------16 实验目的---------------------------------------------16实验原理---------------------------------------------16 实验软件---------------------------------------------16 实验内容与步骤---------------------------------------16总结-------------------------------------------------------------------------22实验一:空间数据库的建立一、实验目的通过实例,让读者掌握创建一个要素数据集的拓扑关系的整个流程,并实施创建。
一、实验目的1. 了解空间数据库的基本概念和原理;2. 掌握空间数据库的建立、管理和使用方法;3. 熟悉空间数据库的查询和操作;4. 提高空间数据处理和分析能力。
二、实验环境1. 操作系统:Windows 102. 数据库管理系统:MySQL 5.73. 开发工具:Visual Studio Code4. 空间数据库驱动:MySQL Spatial Extension三、实验内容1. 空间数据库的建立与配置(1)创建数据库打开Visual Studio Code,连接到MySQL数据库服务器,执行以下SQL语句创建空间数据库:CREATE DATABASE IF NOT EXISTS spatial_db;(2)创建空间表在空间数据库中创建空间表,使用以下SQL语句:CREATE TABLE IF NOT EXISTS cities (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50),geom GEOMETRY NOT NULL,INDEX geom_idx (geom));2. 空间数据的插入与查询(1)插入空间数据使用以下SQL语句插入空间数据:INSERT INTO cities (name, geom) VALUES ('Beijing',ST_GeomFromText('POINT(116.4074 39.9042)'));INSERT INTO cities (name, geom) VALUES ('Shanghai',ST_GeomFromText('POINT(121.4737 31.2381)'));(2)查询空间数据查询与给定坐标点距离小于10公里的城市:SELECT name FROM cities WHERE ST_Distance(geom,ST_GeomFromText('POINT(116.4074 39.9042)')) < 10000;3. 空间数据的更新与删除(1)更新空间数据使用以下SQL语句更新城市名称:UPDATE cities SET name = 'Beijing New City' WHERE name = 'Beijing';(2)删除空间数据使用以下SQL语句删除城市:DELETE FROM cities WHERE name = 'Beijing New City';4. 空间数据的聚合与分析(1)计算所有城市的面积SELECT name, ST_Area(geom) AS area FROM cities;(2)计算相邻城市的距离SELECT name, name AS neighbor, ST_Distance(geom,ST_GeomFromText('POINT(116.4074 39.9042)')) AS distanceFROM cities, cities AS neighborWHERE <> AND ST_Distance(geom, neighbor.geom) < 10000;四、实验结果与分析1. 成功创建空间数据库和空间表,并插入、查询、更新和删除空间数据;2. 空间查询和分析功能正常,可以计算城市面积和相邻城市距离;3. 实验过程中未出现异常,空间数据库运行稳定。
一、实验目的与要求1、对数字地图制图有初步的认识2、掌握了解符号化、注记标注、格网绘制以及地图整饰的意义3、掌握MAPGIS工程文件、点、线、面文件创建及保存方法4、掌握基本的符号化方法、自动标注操作以及相关地图的整饰和数据的操作通过综合实验,加深理解地理信息系统基本理论、核心技术,掌握GIS 图形输入、编辑、数据库建立、空间分析、地学分析、统计分析、专题图制作、制图输出等基本应用技能,结合环规专业进行开发区建设规划,为GIS 在资源环境与城乡规划管理中应用打下基础。
二、实验准备阅读PPT严格按照下面的符号特征要求来做:1 数据符号化显示A.地图中共有6个区,将这6个区按照ID字段来用分类色彩表示;B.将道路按class字段分类:分为1~4级道路,并采用不同的颜色表示;C.地铁线符号Color:深蓝色,Width:1.0;D.区县界线Color:橘黄色,Width:1.0 ;E.区县政府Color:红色,Size:10,样式:Star3;F.市政府符号在区县政府基础上改为大小182注记标记A.对地图中6个区的Name字段使用自动标注,标注统一使用Country2样式,大小:16;B.手动标注黄浦江(双线河),使用宋体、斜体、16号字,字体方向为纵向,使用曲线注记;C.地铁线使用自动标注,采用Country3样式;D.道路中,对道路的Class字段为GL03的道路进行标注,字体:宋体,大小:10;E.区县政府使用自动标注,字体:宋体,大小:10;F.市政府使用自动标注,字体:楷体,大小:143绘制格网采用索引参考格网,使用默认设置。
4 添加图幅整饰要素A.添加图例,包括所有字段;B.添加指北针,选择ESRI North 3样式;C.添加比例尺,选择Alternating Scale Bar 1样式三、实验内容与主要过程制作上海市行政区划图(一)数据符号化首先我们打开ArcMap,点击Add Data添加各数据,选取数据层所在位置,添加各图层。
空间数据库的建立实验报告空间数据库是一种用于存储和管理空间数据的数据库系统。
它具有将空间数据与地理位置进行关联的能力,能够有效地存储和查询地理信息。
本文将介绍空间数据库的建立实验报告。
一、引言空间数据库是地理信息系统(Geographic Information System,GIS)中的重要组成部分,它可以存储和管理地理空间数据,如地图、遥感图像等。
在实际应用中,空间数据库可以广泛应用于城市规划、环境监测、交通管理等领域。
本实验旨在通过建立一个空间数据库,探索其在地理信息管理中的应用。
二、实验目的1.了解空间数据库的基本概念和原理;2.掌握空间数据库的建立方法;3.熟悉空间数据库的查询与分析功能;4.实践运用空间数据库解决实际问题。
三、实验步骤1.选择合适的空间数据库管理系统(Spatial Database Management System,SDMS),如PostgreSQL+PostGIS;2.安装和配置SDMS,确保系统正常运行;3.创建数据库,并设计空间数据表结构;4.导入地理空间数据,如地图数据、遥感图像等;5.进行数据查询和分析,验证空间数据库的功能。
四、实验结果与分析在实验中,我们选择了PostgreSQL作为SDMS,并通过PostGIS 扩展实现空间数据的存储和管理。
首先,我们创建了一个名为"gis"的数据库,并设计了三个表:地图表、地点表、线路表。
地图表存储了各个地图的名称、边界等信息;地点表存储了各个地点的名称、经纬度等信息;线路表存储了各个线路的起点、终点、长度等信息。
然后,我们导入了一份城市地图数据,并进行了一些简单的查询和分析。
通过查询地点表,我们可以找到某个地点的经纬度;通过查询线路表,我们可以计算某条线路的长度。
此外,我们还可以通过空间查询,查找某个地点周围一定范围内的其他地点。
实验结果表明,空间数据库能够有效地存储和管理地理空间数据,并提供了丰富的查询和分析功能。
一、实习背景与目的随着地理信息技术的飞速发展,空间数据管理在各个领域都发挥着越来越重要的作用。
为了更好地掌握空间数据管理的基本原理和方法,提高自身的实践能力,我参加了本次空间数据管理实习。
通过实习,旨在提高我对空间数据组织、存储、处理和分析等方面的理解和应用能力。
二、实习内容与过程本次实习主要分为以下几个部分:1. 空间数据组织与管理实习- ArcGIS基本知识:首先,我们学习了ArcGIS的体系结构,了解了ArcGIS的基本操作,包括打开(新建)地图、数据加载、数据显示与地图布局以及数据输出等。
- 空间数据的表达:通过实习,我们初步熟悉了空间数据的矢量和栅格表达。
具体操作包括将矢量数据(点、线、面)和栅格数据按不同分辨率转换,以及将栅格数据按缺损值转换成矢量数据。
- ArcGIS中数据的表示:学习了ArcGIS的数据文件类型,包括矢量数据文件(shapefile、coverage)和栅格数据文件(grid、tif、jpg),并了解了在ArcGIS中查看空间数据和属性表的方法。
- 栅格像元的不同编码方法及误差比较:对土地利用数据按主要类型法进行栅格编码,通过Arctoolbox中的polygon to grid工具对话框进行栅格转换,并比较不同分辨率下的栅格数据误差。
2. 空间数据库实习- 空间数据库准备操作:熟悉Oracle数据库的基本操作,回顾空间数据库的相关知识,并完成II号宗地的建库和查询操作。
- 空间数据库建库:使用SQL语句创建用户和管理数据库权限,为用户授权,增加数据列等。
- 空间数据库查询:编写SQL语句,查询II号宗地中所有点的信息,并按点号排序。
三、实习收获与体会1. 提高了空间数据管理能力:通过实习,我掌握了空间数据的组织、存储、处理和分析等方面的基本原理和方法,提高了自身的空间数据管理能力。
2. 熟悉了ArcGIS和Oracle数据库:通过实习,我对ArcGIS和Oracle数据库的基本操作有了深入的了解,为今后在实际工作中应用这些软件奠定了基础。
空间数据库实验报告中国地质大学(武汉)实验名称:空间数据查询与访问实验环境:win7 64位系统,内存为2G,Oracle11g数据库实验者:实验时间:2013.12.09实验目的:(1)了解掌握Oracle Spatial中空间数据查询与访问的原理与方法;(2)掌握用PL/SQL访问Oracle Spatial数据库中几何数据,以及调用相关的空间分析函数对几何数据进行分析。
实验内容:将数据文件mvdemo.dmp导入到创建的用户中去,然后根据要求利用SQL语言进行编程实现相应的功能。
需要实现的功能如下:(1)输出数据库中所有州的多边形,采用WKT格式输出;(2)输出数据库中所有的城市的几何对象信息,采用GML格式输出;(3)给定点的经纬度坐标(40°43′N,74°00′W),查询该点是位于美国的哪个州?(4)给定一个矩形区域(35-45°N,90-100°W ),查询有哪些城市位于该区域内?哪些州与该区域相交?实验步骤及结果展示:(1)将mvdemo.dmp数据集导入到创建好的用户mvdemo中由于表空间和用户的创建过程我们已经展示过很多次,并且也尝试过很多次了,这里我们就直接跳过表空间和用户的创建过程,直接将数据集导入到创建好的用户中去,导入数据的具体过程如下:在C:\app\oracle\product\11.2.0\dbhome_1\BIN文件夹中打开imp.exe 文件,这个文件是用来将数据导入到数据库中的,因此我们利用这个文件将mvdemo.dmp文件导入到数据库中,进入后输入用户名和密码,在此之前我们已经创建建好了一个名为mvdemo的表空间和用户,密码也设置为mvdemo,输入后显示连接成功,然后按照提示进行数据的导入工作,如下图所示:按照要求填入适当的回答后,数据便开始导入,导入过程如下图所示:导入成功后对话框将会自动退出,此时我们进入到SQL Developer,进入后界面如下:此时我们连接刚刚创建好名为“mvdemo”的用户和表空间测试结果显示状态为成功,此时我们直接点击连接即可连接到数据库。
连接后我们查看表中的对象,发现mvdemo.dmp文件中的数据已经全部导入到mvdemo这个用户中去了,导入的表如下图所示:此时我们可以查看一下表“CITIES”中的数据,结果如下图所示:mvdemo用户中去了,因此接下来我们可以进行相应的编程来实现相应的功能。
(2)输出数据库中所有州的多边形,采用WKT格式输出我们首先定义一个clob类型的参数wkt_clob,clob是数据库中的一种保存文件所使用的类型,我们采用WKT格式输出的时候将会用到,然后定义一个mdsys.sdo_geometry类型的参数g,这是一个用来保存对象几何形状的参数,用来存储state的多边形信息,最终将其转化为wkt格式赋给wkt_clob,最后定义一个游标geomcursor指向states表中的geom这一列。
定义了以上的参数后,我们便开始编写具体的代码,首先 open geomcursor 打开游标,如果可以找到states中的几何数据,则将其赋给g,然后将g中的信息转化成为WKT格式并赋给wkt_clob,最终打印输出该信息,知道游标将states表中的几何信息提取完毕即退出,具体的代码如下:declarewkt_clob clob;g mdsys.sdo_geometry;cursor geomcursor is select t.GEOM from STATES t;beginopen geomcursor ;loopfetch geomcursor into g;if geomcursor%FOUND thenwkt_clob := g.get_wkt();dbms_output.put_line(sys.dbms_lob.substr(wkt_clob,256,1));elseexit;end if;end loop;close geomcursor;end;运行后输出的结果如下图所示:(3)输出数据库中所有的城市的几何对象信息,采用GML格式输出与(2)的方法基本类似,只是在定义的时候将游标指向cities表中的location这一列,然后打开游标,提取数据,将数据进行赋值和转化,基本思路相同,转化成GML格式与转化成WKT格式有小小的差异,这一点需要注意,具体的代码如下:declaregml_clob clob;g mdsys.sdo_geometry;cursor geomcursor is select t.LOCATION from CITIES t;beginopen geomcursor ;loopfetch geomcursor into g;if geomcursor%FOUND thengml_clob := mdsys.sdo_util.to_gmlgeometry(g);dbms_output.put_line(sys.dbms_lob.substr(gml_clob,256,1));elseexit;end if;end loop;close geomcursor;end;运行后输出的结果如下图所示:(4)给定点的经纬度坐标(40°43′N,74°00′W),查询该点是位于美国的哪个州?我们定义一个varchar2类型参数来记录点的信息,然后定义一个clob类型参数来将数据格式转化成WKT格式,并将其输出,一个用来保存state名称的varchar2类型,此外我们定义了两个几何类型的参数,g用来保存从游标中提取出来的数据,将gt存储传入的几何参数,定义的游标为带参数的游标,从states表中选择包含传递参数的state,设置mask=CONTAINS,表示前者要包含后者,打开游标后找到符合条件的数据,并将其进行一系列的转化和输出,主要是输出state的名称和它的几何信息,其中几何信息以WKT格式输出,具体代码如下:declarewkt varchar2(255);wkt_clob clob;g mdsys.sdo_geometry;gt mdsys.sdo_geometry;statename varchar2(255);cursor geomcursor (gm mdsys.sdo_geometry) isselect t.state, t.GEOM from states tWhere sdo_relate(t.geom, gm,'mask=CONTAINS')='TRUE'; beginwkt:='POINT (-100.0 40.0)';gt:=MDSYS.SDO_GEOMETRY(wkt,8307);open geomcursor (gt) ;loopfetch geomcursor into statename, g;if geomcursor%FOUND thenwkt_clob := g.get_wkt();dbms_output.put_line(statename);dbms_output.put_line(sys.dbms_lob.substr(wkt_clob,256,1));else exit; end if; end loop;close geomcursor;end;运行后的结果如下图所示:(5)给定一个矩形区域( 35-45°N,90-100°W ),查询有哪些城市位于该区域内?哪些州与该区域相交?选择哪些城市位于该区域内,哪些州与选择区域相交的算法与前面(4)中的步骤基本相同,在这里就不一一解释了,同样也是定义了一个带参数的游标,其中需要注意的就是这里设置的mask的值需要做相应的调整,表示选择数据时要保证几何信息位于给定的区域内或者是与给定的区域相交,在查询哪些城市位于该区域时,令mask=INSIDE,当选择哪些州与该区域相交时,令mask=ANYINTERACT,只是在这两个过程中分别是从cities表中选择相应的信息和从states表中选择相应的信息,因此我们在代码中定义了两个游标,分别从cities表和states表中选择则符合条件的城市和州的信息,并分别进行打印输出,先输出包含在该区域城市的基本信息,然后输出与该区域相交的州的基本信息,具体代码如下:declarewkt varchar2(255);wkt_clob clob;g mdsys.sdo_geometry;gt mdsys.sdo_geometry;cityname varchar2(255);stateyname varchar2(255);cursor geomcursor (gm mdsys.sdo_geometry) isselect t.CITY, t.LOCATION from CITIES twhere sdo_relate(t.LOCATION, gm,'mask=INSIDE')='TRUE';cursor geomcursor1 (gm mdsys.sdo_geometry) isselect t.state, t.geom from states twhere sdo_relate(t.geom, gm,'mask=ANYINTERACT')='TRUE'; begingt:=MDSYS.SDO_GEOMETRY(2003,8307,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,3),MDSYS.SDO_ORDINATE_ARRAY(-100.0,35.0,-90.0,45.0)); wkt_clob := gt.get_wkt();dbms_output.put_line(sys.dbms_lob.substr(wkt_clob,256,1));open geomcursor (gt) ;open geomcursor1(gt);dbms_output.put_line('输出包含在该区域城市的基本信息');loopfetch geomcursor into cityname, g;if geomcursor%FOUND thenwkt_clob := g.get_wkt();dbms_output.put_line(cityname);dbms_output.put_line(sys.dbms_lob.substr(wkt_clob,256,1));elseexit;end if;end loop;dbms_output.put_line('输出与该区域相交的州的基本信息');loopfetch geomcursor1 into stateyname, g;if geomcursor1%FOUND thenwkt_clob := g.get_wkt();dbms_output.put_line(stateyname);dbms_output.put_line(sys.dbms_lob.substr(wkt_clob,256,1)); elseexit;end if;end loop;close geomcursor;close geomcursor1;end;运行该代码的结果如下图所示:实验心得与结论:在本次实验过程中,同学们了解并掌握了Oracle Spatial中空间数据查询与访问的基本原理与方法,对空间数据的结构有了一定程度的了解,学会了空间数据的导入方法以及基本的空间信息查询和基本的空间分析方法,学会了用SQL 语言对空间对象信息进行基本的访问查询操作。