第5章-空间数据查询、访问课件.ppt
《第5章-空间数据查询、访问课件.ppt》由会员分享,可在线阅读,更多相关《第5章-空间数据查询、访问课件.ppt(58页珍藏版)》请在三一办公上搜索。
1、1,空间数据库 杨 勇,地理信息系统课程,河南财经政法大学资源与环境学院,2,第五章 空间数据查询、访问,3,5.2 空间查询语言,为什么使用空间查询语言空间查询语言的实现PostgreSQL/PostGIS介绍空间查询语言应用实例,4,例1:列出日销售额超过万元的超市名称列出财经政法大学方圆500m内的超市名称,5,例2:,L,6,为什么使用空间查询语言(SSQL)?标准 SQL通常只提供简单的数据类型,如整型、日期型等,空间数据库的应用必须能够处理像点、线、面这样复杂的数据类型;空间数据库管理系统作为一种扩展的DBMS,应该既可以处理空间数据,也可以处理非空间数据,所以,应当对SQL进行扩
2、展,使它支持空间数据。,7,5.2.1 关系模型的扩展对关系模型进行扩展:(1)突破第一范式的限制,允许定义层次关系和嵌套关系(2)增加抽象数据类型如点、线、面、栅格、图像等和用户自定义数据类型(3)增加空间谓词,包括空间关系谓词(如相交、包含等)以及空间操作谓词(如叠加、缓冲区等)(4)增加适用于空间数据的索引技术,如R树、四叉树等,8,5.2.2 OGIS标准的SQL扩展OGIS OpenGIS(open geodata interoperation specification,OGIS,开放的地理数据互操作规范):一些主要软件供应商组成的联盟,负责制定与GIS互操作相关的行业标准,9,扩
3、展的SQL提供了:针对所有几何类型的基本操作;如spatial reference返回所定义几何体采用的基础坐标系统。描述空间对象间拓扑关系的函数;如Touch用来返回几何体之间是否相接。空间分析的一般操作。如difference用来返回几何体与给定几何体不相交的部分。,10,OGIS利用其自定义函数来支持空间关系,进而基于空间关系来实现空间查询。其具有的各种函数包括:基本函数:Dimension(),GeometryType(),SRID(),Envelope(),.拓扑/集合运算函数:Equals(),Disjoint(),Intersects(),Touches(),Crosses(),
4、Within(),Contains(),Overlap(),Relate(),11,空间分析函数:Distance(),Buffer(),ConvexHull(),Intersection(),Union(),Difference(),SymDifference()空间数据转换函数:GeoFromBin(),AsBinary(),12,13,14,5.2.3 对象关系SQLSQL3/SQL99面向对象技术非常适合处理空间数据。面向对象技术与传统关系数据库系统相结合产生了对象关系数据库管理系统(ORDBMS),ORDBMS对传统SQL进行扩展,产生了SQL在ORDBMS上的标准SQL3/SQL9
5、9。典型的对象-关系型数据库管理系统(ORDBMS):PostgreSQL,15,PostgreSQL/PostGIS:PostgreSQL 是一种对象-关系型数据库管理系统(ORDBMS),也是目前功能最强大、特性最丰富和最复杂的自由软件数据库系统。起源于伯克利(BSD)的数据库研究计划,目前最重要的开源数据库产品开发项目之一,有着非常广泛的用户。PostGIS 在对象关系型数据库PostgreSQL 上增加了存储管理空间数据的能力。PostGIS 最大的特点是符合并且实现了OpenGIS 的一些 规范,是最著名的开源GIS 数据库,16,1.SQL3概述 SQL3不仅对SQL的语法作了更详
6、细和准确的定义,而且对空间数据的支持作出统一的描述。它详细描述了空间数据类型点、线、面在数据库中的存储方式,并且能够定义操作空间数据的空间运算符。,17,SQL3定义了0维的点、一维的环和曲线、二维的面。,18,SQL3可使用户在关系数据库的框架内定义自己的数据类型,可以支持抽象数据类型(Abstract Data Type,ADT)和其它数据结构。如:点的定义:ST_Point 线的定义:ST_LineString 面的定义:ST_Polygon,19,2.SSQL查询实例(1)选择湖北省的所有城市及其人口。Select 城市名,人口 From 城市 Where Center(城市地图)In
7、side 湖北;,20,(2)选择流经湖北省的所有河流名及其在湖北省内的长度 Select 河流名,Length(Intersection(Route(河流流域图),湖北)FROM 河流 WHERE Route(河流流域图)Intersects 湖北 这里:Inside 用来判断一个空间实体是否在另一个空间实体的内部,Route用来计算河流、道路等的中心线,Intersection 用来返回由两个实体的交集构成的几何体。Intersects判断相交不相交。Center用来判断一个实体的中心是否在另一个实体的内部。,21,3.2.4 基于PostGIS的空间查询语言应用示例,示例数据介绍以下为虚
8、构的、蓝湖地区的整饰地图,22,建表的SQL语句,湖泊:create table lakes(fid integer not null primary key,name varchar(64),shore geometry);路段:create table road_segments(fid integer not null primary key,name varchar(64),aliases varchar(64),num_lanes integer,centerline geometry);,23,组合路create table divided_routes(fid integer n
9、ot null primary key,name varchar(64),aliases varchar(64),num_lanes integer,centerline geometry);桥Create table bridges(fid integer not null primary key,name varchar(64),roadseg1id integer references road_segments,roadseg2id integer references road_segments,positon geometry);,24,河流create table streams
10、(fid integer not null primary key,name varchar(64),fromlakeid integer references lakes,tolakeid integer references lakes,centerline geometry);建筑物create table buildings(fid integer not null primary key,address varchar(64),position geometry,footprint geometry);,25,池塘create table ponds(fid integer not
11、null primary key,name varchar(64),type varchar(64),shores geometry);岛create table island(fid integer not null primary key,name varchar(64),lakeid integer references lakes,boundary geometry);,26,区域create table zone(fid integer not null primary key,name varchar(64),boundary geometry);,27,空间数据的插入 湖泊:in
12、sert 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(LINESTRING(0 18,10 21,16 23,28 26,44 31),101);insert into road_segment
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 空间 数据 查询 访问 课件
链接地址:https://www.31ppt.com/p-3968487.html