欢迎来到天天文库
浏览记录
ID:26386488
大小:1.03 MB
页数:15页
时间:2018-11-26
《空间数据库实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、空间数据查询摘要:SQL通常只提供简单的数据类型,如整型、日期型等。空间数据库的应用,必须能够处理像点、线、面这样的复杂的数据类型。空间数据库管理系统作为一种扩展的DBMS,应该既可以处理空间数据,也可以处理非空间数据,所以应当对SQL进行扩展,使它支持空间数据。空间数据库查询语句是空间数据库不可缺少的重要组成部分,如何将关系数据库查询语句进行适当扩展,以适应空间数据的需求,是目前亟待研究的课题。一、空间关系算子和空间分析算子空间算子一般按操作对象的数目分为一元空间算子和二元空间算子。一元空间算子主要用于计算空
2、间对象的几何特征。二元空间算子主要表达空间关系以及空间分析。空间关系的表达有拓扑和非拓扑之分,在基于九交模型的512种二元拓扑关系中,有8中是可以实现的,并且彼此互斥且完全覆盖。算子的返回值为逻辑true或false。函数名称含义返回值Equals()判断两个几何体是否相等Integer(True返回1,False返回0)Disjoint()判断两个几何体是否相交IntegerIntersects()判断两个几何体是否相交IntegerTouches()判断两个几何体是否相交IntegerCrosses()判断
3、两个几何体是否相交IntegerWithin()判断一个几何体是否在另一个几何体里面IntegerContains()判断一个几何体是否包含另一个几何体IntegerOverlaps()判断两个几何体是否交叠Integer非拓扑的空间几何运算主要指空间方位的判断,目前还没有比较规范的算子定义。函数名称含义返回值Distance()返回两个几何体之间最小距离DoubleBuffer()返回几何体给定范围的缓冲区GeometryConvexHull()返回几何体的最小闭包GeometryIntersection()
4、返回几何体交集构成的几何体GeometryUnion()Geometry返回几何体并集构成的几何体Difference()返回几何体与给定几何体不相交的部分GeometrySymDiffference()返回几何体与对方互不相交的部分Geometry一、MakeValid(geometry数据类型)将无效 geometry 实例转换为具有有效开放地理空间联盟(OGC)类型的 geometry 实例。语法为:.MakeValid()二、实现流程1)导入数据1、打开SQLServer并登陆。2、打开文件夹SqlSp
5、atialTools_build3759,点选Shape2Sql.exe。3、在跳出窗口选择cities.shp文件,选择Set复选框,点击UploadtoDatabase加载。4、重复步骤3,依次加载countries.shp和Rivers.shp。加载好后,在SQLServer对象资源管理器中可以看到对应的表。5、打开文件夹内SqlSpatialTools_build3759中SqlSpatialQuery.exe,打开查询界面。6、点击Database后的空白处,选择连接的数据库。7、在空白框内输入查询语
6、句,点击进行查询。以下为简单示例:2)查询实例我自己试验的SELECTC1.LONG_NAMEFROMcountriesC1,countriesC2WHEREC1.geom.STTouches(C2.geom)=1AndC2.LONG_NAME='CHINA'出现的错误:1、查询:列出countries中所有与中国相邻的国家的名字。查询语句如下:SELECTC1.LONG_NAMEAS'国家名称',C1.geomFROMcountriesC1,countriesC2WHEREC1.geom.MakeValid(
7、).STTouches(C2.geom)=1AndC2.LONG_NAME='CHINA'查询结果如下:1、查询:找出rivers表中所列出地的河流流经的国家。查询语句如下:SELECTR1.NAMEas'河流名称',C1.LONG_NAMEas'国家名称',C1.geom,R1.geomFROMRiversR1,countriesC1whereR1.geom.MakeValid().STIntersects(C1.geom.MakeValid())=1查询结果如下:空间结果:1、查询:对于rivers表中列出
8、的河流,在cities表中找到距离其最近的城市。此处注意:如果按照书上给出的语句用加载的原数据库查询耗时太久,于是在ArcMap中对原数据进行处理,提取出中国的城市Chcities.shp和河流(黄河)信息Chriver.shp,再加载到SQL中进行查询,得出结果更快速。查询语句如下:SELECTC1.CITY_NAME,R1.NAMEFROMChriverR1,ChcitiesC1W
此文档下载收益归作者所有