第5章-空间数据查询、访问课件2.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第5章-空间数据查询、访问课件2.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 空间 数据 查询 访问 课件
- 资源描述:
-
1、1 空间数据库 杨 勇地理信息系统课程河南财经政法大学资源与环境学院2第五章第五章 空间数据查询、访问空间数据查询、访问标准数据库查询语言空间查询语言35.2 空间查询语言为什么使用空间查询语言空间查询语言的实现PostgreSQL/PostGIS介绍空间查询语言应用实例4n例1:列出日销售额超过万元的超市名称列出财经政法大学方圆500m内的超市名称5n例2:L6 为什么使用空间查询语言(为什么使用空间查询语言(SSQL)?标准 SQL通常只提供简单的数据类型,如整型、日期型等,空间数据库的应用必须能够处理空间数据库的应用必须能够处理像点、线、面这样复杂的数据类型像点、线、面这样复杂的数据类型
2、;空间数据库管理系统作为一种扩展的DBMS,应该既可以处理空间数据,也可以处理非空间数据,所以,应当对SQL进行扩展,使它支持空间数据。75.2.1 5.2.1 关系模型的扩展关系模型的扩展对关系模型进行扩展:对关系模型进行扩展:(1)突破第一范式的限制,允许定义层次关系和嵌套关系 (2)增加抽象数据类型如点、线、面、栅格、图像等和用户自定义数据类型 (3)增加空间谓词,包括空间关系谓词(如相交、包含(如相交、包含等)等)以及空间操作谓词(如叠加、缓冲区等)(如叠加、缓冲区等)(4)增加适用于空间数据的索引技术,如如R树、四叉树树、四叉树等等85.2.2 OGIS5.2.2 OGIS标准的标准
3、的SQLSQL扩展扩展nOGIS OpenGIS(open geodata interoperation specification,OGIS,开放的地理数据互操作规范):一些主要软件供应商组成的联盟,负责制定与GIS互操作相关的行业标准9n扩展的扩展的SQL提供了:提供了:针对所有几何类型的基本操作;如spatial reference返回所定义几何体采用的基础坐标系统。描述空间对象间拓扑关系的函数;如Touch用来返回几何体之间是否相接。空间分析的一般操作。如difference用来返回几何体与给定几何体不相交的部分。10 OGIS利用其自定义函数来支持空间关系,进而基于空间关系来实现空间
4、查询。其具有的各种函数包括:n基本函数:Dimension(),GeometryType(),SRID(),Envelope(),.n拓扑/集合运算函数:Equals(),Disjoint(),Intersects(),Touches(),Crosses(),Within(),Contains(),Overlap(),Relate()11n空间分析函数:Distance(),Buffer(),ConvexHull(),Intersection(),Union(),Difference(),SymDifference()n空间数据转换函数:GeoFromBin(),AsBinary()12131
5、4 5.2.3 5.2.3 对象关系对象关系SQLSQL3/SQL99SQLSQL3/SQL99u面向对象技术非常适合处理空间数据。u面向对象技术与传统关系数据库系统相结合产生了对象关系数据库管理系统(ORDBMS),ORDBMS对传统SQL进行扩展,产生了SQL在ORDBMS上的标准SQL3/SQL99。u典型的对象-关系型数据库管理系统(ORDBMS):PostgreSQL 15PostgreSQL/PostGIS:nPostgreSQL 是一种对象-关系型数据库管理系统(ORDBMS),也是目前功能最强大、特性最丰富和最复杂的自由软件数据库系统。n起源于伯克利(BSD)的数据库研究计划,
6、目前最重要的开源数据库产品开发项目之一,有着非常广泛的用户。nPostGIS 在对象关系型数据库PostgreSQL 上增加了存储管理空间数据的能力。nPostGIS 最大的特点是符合并且实现了OpenGIS 的一些 规范,是最著名的开源GIS 数据库161.SQL3概述概述 SQL3不仅对SQL的语法作了更详细和准确的定义,而且对空间数据的支持作出统一的描述。它详细描述了空间数据类型点、线、面在数据库中的存储方式,并且能够定义操作空间数据的空间运算符。17SQL3定义了0维的点、一维的环和曲线、二维的面。18 SQL3可使用户在关系数据库的框架内定义自己的数据类型,可以支持抽象数据类型(Ab
7、stract Data Type,ADT)和其它数据结构。如:如:点的定义:ST_Point 线的定义:ST_LineString 面的定义:ST_Polygon192.SSQL2.SSQL查询实例查询实例 (1 1)选择湖北省的所有城市及其人口。)选择湖北省的所有城市及其人口。Select Select 城市名,城市名,人口人口 From From 城市城市 Where Center Where Center(城市地图)(城市地图)Inside Inside 湖北;湖北;20(2)选择流经湖北省的所有河流名及其在湖北省内的长度)选择流经湖北省的所有河流名及其在湖北省内的长度 Select 河
8、流名河流名,Length(Intersection(Route(河流流河流流域图域图),湖北),湖北)FROM 河流河流 WHERE Route(河流流域图河流流域图)Intersects 湖北湖北 这里:这里:Inside 用来判断一个空间实体是否在另一个空间实用来判断一个空间实体是否在另一个空间实体的内部,体的内部,Route用来计算河流、道路等的中心线,用来计算河流、道路等的中心线,Intersection 用来返回由两个实体的交集构成的几何体。用来返回由两个实体的交集构成的几何体。Intersects判断相交不相交。判断相交不相交。Center用来判断一个实体的用来判断一个实体的中心是
9、否在另一个实体的内部。中心是否在另一个实体的内部。213.2.4 基于PostGIS的空间查询语言应用示例n示例数据介绍以下为虚构的、蓝湖地区的整饰地图22建表的SQL语句n湖泊:create table lakes (fid integer not null primary key,name varchar(64),shore geometry);n路段:create table road_segments (fid integer not null primary key,name varchar(64),aliases varchar(64),num_lanes integer,cent
10、erline geometry);23n组合路create table divided_routes(fid integer not null primary key,name varchar(64),aliases varchar(64),num_lanes integer,centerline geometry);n桥Create table bridges(fid integer not null primary key,name varchar(64),roadseg1id integer references road_segments,roadseg2id integer refe
11、rences road_segments,positon geometry);24n河流create table streams(fid integer not null primary key,name varchar(64),fromlakeid integer references lakes,tolakeid integer references lakes,centerline geometry);n建筑物create table buildings(fid integer not null primary key,address varchar(64),position geome
12、try,footprint geometry);25n池塘create table ponds(fid integer not null primary key,name varchar(64),type varchar(64),shores geometry);n岛create table island(fid integer not null primary key,name varchar(64),lakeid integer references lakes,boundary geometry);26n区域create table zone(fid integer not null p
13、rimary key,name varchar(64),boundary geometry);27n空间数据的插入 湖泊:insert into lakes values(101,蓝湖,ST_GeomFROMText(MULTIPOLYGON(52 18,66 23,73 9,48 6,52 18),(59 18,67 18,67 13,59 13,59 18),101);insert into lakes values(0,图外其他湖泊);28路段:insert into road_segments values(102,路5,NULL,2,ST_GeomFromText(LINESTRIN
14、G(0 18,10 21,16 23,28 26,44 31),101);insert into road_segments values(103,路5,主街,4,ST_GeomFromText(LINESTRING(44 31,56 34,70 38),101);insert into road_segments values(104,路5,NULL,2,ST_GeomFromText(LINESTRING(70 38,72 48),101);insert into road_segments values(105,主街,NULL,4,ST_GeomFromText(LINESTRING(7
展开阅读全文