空间数据库的第四章遥感_第1页
空间数据库的第四章遥感_第2页
空间数据库的第四章遥感_第3页
空间数据库的第四章遥感_第4页
空间数据库的第四章遥感_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

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

文档简介

空间数据库的第四章遥感第1页,共75页,2023年,2月20日,星期一面向对象的概念(核心概念)一、核心概念(一)对象(Object)

现实世界中的各类现象抽象表示成具有不同特征的对象。对象是具有状态和行为特征的实体,对象之间相互区分、相互联系。对象的标识、属性和方法是它的三个关键成分。

1、对象标识:为每个对象在全系统范围内定义唯一标识(OID-ObjectIdentifier),在其生命周期中保持不变,是确定对象存取的唯一方法。

2、对象属性:对象的状态通过属性变量定义,由属性值描述。属性变量定义属性的型,包括属性名称、数据类型、取值范围和语义完整性约束。每个对象具有一到多个属性,所有属性值共同描述其状态。

3、对象方法:表示对象状态的属性值由一组函数来操作和维护,这些函数称为方法。属性的型是事先定义的,属性值由方法来获取和改变。

第2页,共75页,2023年,2月20日,星期一面向对象的概念(核心概念)(二)消息(Message)对象的属性只能通过对象自己的方法来获取和改变。消息是对象间交互的手段,一个对象要获取或改变另外一个对象的属性,只能通过消息引用被访问对象提供给外界的方法来实现。(三)协议(Protocol)

协议是一个对象所能接受的所有消息构成的集合,是对象的对外接口,是被访问对象提供给其他对象使用的所有方法的集合。(四)封装(EncapsuIation)和消息传递对象、消息和协议打包在一起叫封装。将属性和方法封装在对象中,向对象发送消息,通过对象所指定的公共接口来存取、维护属性,这是访问对象属性的唯一方法。封装的意义在于对象的访问只能按对象提供给外界的协议接口进行,只能通过协议中提供的方法向对象发送消息。第3页,共75页,2023年,2月20日,星期一面向对象的概念(核心概念)(五)类和实例(CIass、Instance)

类是对具有共同特征的一组对象的抽象,具有相同的属性类型、消息接口和方法定义的所有对象构成一个类。类中的一个具体对象称为其所属类的一个实例,每个实例具有各自不同的状态(属性值)。类有三种主要类型:

1、抽象类(AbstractClass):不能创建对象,只能作为父类。

2、伴随类(CoClass):可创建类。可直接创建新对象或实例化。

3、类(Class):可实例化类。不能直接创建新对象,但在其他类的属性中可创建它的对象,可以被另一个类的对象实例化,可以被其他类引用,是一种元件类或成份类。

图4-1类与联系第4页,共75页,2023年,2月20日,星期一面向对象的概念(核心概念)(六)类的描述类的定义称为类的描述(对象的型或模式),包括协议描述和实现描述两个方面。协议描述定义了该类实例的消息接口(协议中所有消息),实现描述包括属性变量的定义及所有方法的实现方式描述。(七)继承与类等级(Inheritance、CIassHierarchy)

类等级结构表达了超类(或父类、基类)与子类间的继承关系,类等级的继承性使得子类能自动地继承其超类的全部语义特性(属性、方法、约束)。多层类的继承具有传递性,下层子类可继承其上部各层超类的全部语义特性,即父类的所有属性和方法可以被它的所有子类传递地继承。子类还可以附加新的属性和方法,一个实例是其所有超类的一个逻辑上的实例。第5页,共75页,2023年,2月20日,星期一面向对象的概念(核心概念)(八)功能重载和多态性(0verLoading、PoIymphism)

子类对超类方法的覆盖功能就是重载与多态的体现。子类定义的新方法与继承父类的旧方法可具有相同的名称、形式参数和返回值,也可以同名但具有不同的形式。系统调用时根据不同的描述信息,选择合适的方法运行。通常把同一个类中有多个同名方法的现象称为重载或多态,消息传递的实现是以重载和多态为支撑。(九)类图类图是一种框架(Frame)、模板(Template)或模式(Schema),描述同类对象的特征及多个类之间的联系。(十)实例图实例(对象)图是类图的具体实现,给定一张类图必对应实例图的一个无限集合。第6页,共75页,2023年,2月20日,星期一面向对象的概念(核心概念)(十一)链接与联系(Llnk、Association)

链接与联系是建立对象之间及类之间关系的一种手段。两类之间的直线表示联系,两对象之间的直线表示链接。联系主要有下列三种:

1、实例化(Instantiation):一个类中有一个方法可创建另一个类的对象。

2、聚集或聚合(Aggregation和Composition):聚集表示“部分与整体”的关系,由元件(Components)对象构造复杂组合(Assembly)对象。主类控制着成分类的生命周期。

3、联合(Association):除去类等级关系和类组成关系以外,还有一些类之间的对应关系称为联合。如:材料与产品的关系,学生与课程的关系等。(十二)一般化和特殊化(Generalization、Specification)

一般化指从一组相似的对象中找出共性,子类的共性归入父类,产生祖先类与后代类之间的类等级和类结构关系。特殊化是在一般类共性的基础上扩展特性构成新的具体类,子类可继承父类的性质,可对父类的属性和方法进行更新,也可添加自身特定的属性及方法。第7页,共75页,2023年,2月20日,星期一面向对象的概念(扩充概念)二、扩充概念——复合对象与类复合等级如果对象的一个属性的定义域不是基本类(整数、字符串等),而是另一个非基本类(一个类等级结构),对应的属性值为这个非基本类的类等级结构中任意一个类的一个实例,属性取值为该对象的标识符(一个对象引用其他对象),这个对象称为复合对象。复合对象是构成一个整体与部分等级的非匀质对象集合,它将“整体与部分”的关系补充到一个对象与其引用的其他对象之间的聚集关系中。面向对象表达方式中,空间要素的主题属性在一个基本类(整数或字符串)的范围内取值,而空间属性的定义域则为一个非基本类,空间属性取值为非基本类的类等级中某个对象(几何对象)的主关键字或对象标识,称为空间要素对一个几何对象的引用。

对象的引用建立了一个对象和引用它的另一个对象之间的“整体与部分”关系,通过属性对其他类的引用构成嵌套关系模型,称为类复合等级(aclasscompositionhierachy)。

Back第8页,共75页,2023年,2月20日,星期一面向对象数据模型一、对象与封装性(encapsulation)每个概念实体模型化为一个对象,一个对象由描述该对象状态的一组属性数据和表达其行为的一组方法组成,是属性数据和行为的统一体。一个对象object可定义成一个三元组:

object=(ID,S,M)其中,ID为对象标识,M为方法集,S为对象的属性数据集合,它可以是一个属性值,也可以是另外一组对象的集合,明显地表现出对象的递归。第9页,共75页,2023年,2月20日,星期一面向对象数据模型二、分类(classification)类是同类对象的集合,类将具有相同属性和方法的对象组合在一起。属于同一类的所有对象具有相同的属性定义(数据类型和取值范围)和方法定义(函数体)。用一个三元组来描述类:

class=(CID,CS,CM)其中,CID为类标识,CS为类的状态描述,CM为该类的方法。显然有:

S∈CS和M∈CM当object∈class第10页,共75页,2023年,2月20日,星期一面向对象数据模型三、概括(generalization)将多个类中的公共属性和方法抽象出来形成一种更一般的超类。设有两个类:

class1=(CID1,CS1,CM1)

=(CID1,CSA,CSB,CMA,CMB)

class2=(CID2,CS2,CM2)

=(CID2,CSA,CSC,CMA,CMC)

class1和class2中都带有相同的属性子集CSA和方法子集CMA。并且:

CSA∈CS1和CSA∈CS2

以及CMA∈CM1和CMA∈CM2。将共同属性和方法提取出来形成一种超类,SID为超类的标识符。

Superclass=(SID,CSA,CMA)定义超类后class1和class2称为Superclass的子类,分别表示为:

class1=(CID1,CSB,CMB)

class2=(CID2,CSC,CMC)

第11页,共75页,2023年,2月20日,星期一面向对象数据模型

超类与子类之间的继承与抽象关系构成一种类等级结构,空间数据库中限定每个子类只能有一个父类,但可以有多个子类。子类可从父类继承属性和方法,也可定义自身特有的属性和方法。图4-2为一个简单的层次模型,表示了路类、公路类、路段类之间的类等级关系。公路类是路类的子类,路段类是公路类的子类。公路类继承了路类的属性,并增加了等级、路面、宽度等属性。路段类除了继承公路类的属性外,又新定义了起点、终点等自己的属性。

图4-2空间类的类等级结构

第12页,共75页,2023年,2月20日,星期一面向对象数据模型四、聚集(aggregation)聚集将几个不同特征的对象组合成一个更高水平的复合对象,每个不同特征的对象是该复合对象的一部分,它们有自己的属性数据和方法,这些属性数据和方法不能为复合对象所公用,但复合对象可以从中派生得到一些信息。例如,弧段聚集成线状地物或面状地物,简单地物组成复杂地物。设有两种不同特征的元件对象:

object1=(ID1,S1,M1)

object2=(ID2,S2,M2)用它们组成一个新的复合对象:

object3=(ID3,S3,Object1(Su),Object2(Sv)M3)其中Su∈S1,Sv∈S2,从式中可见,复合对象object3拥有自己的属性值和操作,它仅从分子对象中提取部分属性值,且一般不继承子对象的方法。

第13页,共75页,2023年,2月20日,星期一面向对象数据模型

一个空间类(非基本类)的实例可以作为元件类实例,聚合成另一个不同类型空间类的实例。聚合与引用关系表达了类与类之间的横向构成关系,构成了空间数据库的类复合等级结构。一个复杂的空间对象由多个其他的空间对象组成,如交通网络由交叉路口、服务设施、道路等组成。图4-3为复合引用与弱引用举例:

图4-3空间类的类复合等级结构

第14页,共75页,2023年,2月20日,星期一面向对象数据模型五、联合(association)类等级和类复合等级关系是空间类之间的两个最主要关系,除此之外实例间还存在一些其他联系,如共存时间段、联合关系等。在定义对象时,将同一类对象中的几个具有相同属性值的对象组合起来,为了避免重复,设立一个更高水平的对象表示那些相同的属性值。假设有两个对象具有一部分相同的属性值:

object1=(ID1,SA,SB,M)

object1=(ID2,SA,SC,M)可设立新对象object包含object1和object2,

object3=(ID3,SA,object1,object2,M)此时,object1和object2可表示成:

object1=(ID1,SB,M)

object2=(ID2,SC,M)

object1和object2称为“成分对象”,它们的联合所得到的对象为“组合对象”。联合的一个特征是它的成分对象应属于同一个类,即object1和object2是同一个类的对象。

Back第15页,共75页,2023年,2月20日,星期一面向对象空间数据模型

(应用问题描述)一、数据应用涉及行政区划、城市间路网和土地使用三类数据。抽象为七个专题:(一)行政区划行政区域的层次结构划分为国家、省和县三层。抽象为三个专题:

1、国家country(国家名name,几何属性geometry)

2、省province(省名name,几何属性geometry)

3、县county(县名name,人口population,几何属性geometry)第16页,共75页,2023年,2月20日,星期一面向对象空间数据模型

(应用问题描述)(二)城市间的路网城市间的路网包含道路、路段、城市。抽象为三个专题:

1、道路highway)(道路名称,道路类型)

2、路段section(路段名称,车道数,几何属性geometry)

3、城市city(城市名称,人口,几何属性geometry)(三)土地使用土地使用(landuse)专题中每个要素有一种土地使用类型,如居住区、森林、农田等。第17页,共75页,2023年,2月20日,星期一面向对象空间数据模型

(实现的功能)二、实现的功能(一)查询分类

1、属性查询(alphanumericcriteria):查询条件中只含主题属性。

2、空间查询(spatialcriteria):查询条件中含有几何对象和空间操作。

3、交互式查询(interactive):人机交互式查询。(二)查询命名查询名称=类型前缀+模式前缀+编号。类型前缀:属性查询ALPHA-、空间查询SPAT-、交互式查询INTER-。模式前缀:行政区划ADM、路网R、土地使用LU。编号:类型前缀和模式前缀相同时查询的编号。例子:ALPHA-ADM2表示在行政区模式上的第二个属性查询。第18页,共75页,2023年,2月20日,星期一面向对象空间数据模型

(实现的功能)

(三)查询定义

1、属性查询:

ALPHA-ADM1:某省某县的居民数量。

ALPHA-ADM2:某省有多少个县。

ALPHA-ADM3:中国的居民数量。

ALPHA-R1:某一条道路第一路段的车道数。

ALPHA-R2:某一条道路的所有路段名。第19页,共75页,2023年,2月20日,星期一面向对象空间数据模型

(实现的功能)2、空间查询:SPAT-ADM4:与某省相邻的省。SPAT-ADM5:显示某个省。SPAT-ADM6:全国范围内,大于“某省”中最大一个县的那些县。SPAT-R3:某条道路的长度。SPAT-ADM-R1:通过某个省的所有公路。SPAT-ADM-LU1:显示某个县的所有居住面积。SPAT-ADM-LU2:行政区域与土地使用专题的覆盖。3、交互式查询:INTER-ADM7:在屏幕上点击选择一个县。INTER-ADM8:含在所选窗口中的省。INTER-ADM9:用给定窗口裁剪出的县。INTER-R5:在屏幕上点击,选中一条道路的路段。INTER-R6:所选路段对应的道路是哪几条。第20页,共75页,2023年,2月20日,星期一面向对象空间数据模型

(概念模型)

一个专题对应一个空间要素类,用矩形方框表示。两个类之间的连线表示类之间的联系,

表示聚合关系,●表示一对多联系。一、行政区划(Schema1)图4-4定义国家、省、县三个专题模式及相互间的聚合关系和一对多联系。

国家国家编码国家名称几何对象其他方法省省编码省名称几何对象其他方法县县编码县名称县人口几何对象其他方法图4-4行政区划的类图

●第21页,共75页,2023年,2月20日,星期一面向对象空间数据模型

(概念模型)二、城市间的路网(Schema2)

图4-5定义了道路、路段、城市三个专题模式及相互间的聚合关系和一对多联系。一条道路由多个路段组成,一个路段属于多条道路,道路与路段是多对多关系。一条路段连接两个城市,路段有方向,一个城市被多条路段连接,道路和城市也是多对多关系。

道路道路编码道路名称道路类型其他方法城市城市名称城市人口几何对象其他方法图4-5城市间路网的类图

起始终止

●●●路段编码路段名称车道数量几何对象其他方法路段●第22页,共75页,2023年,2月20日,星期一面向对象空间数据模型

(概念模型)三、土地使用(Schema3)

土地使用(landuse)专题模式的定义如图4-6所示。

土地使用土地使用编码土地使用类型区域名称几何对象其他方法图4-6土地使用的类图

Back第23页,共75页,2023年,2月20日,星期一几何对象模型(几何类层次结构)

面向对象空间数据模型用一组基本空间数据类型来满足常用几何形状的建模需求,表示几何对象的属性、方法和关系。图4-11是OpenGISSimpleFeaturesSpecificationForSQL92和SQL99中定义的几何类层次模型,表示基本空间几何体及其关系。其中划分了几何类型,定义了每个几何类的属性和方法,描述了几何类等级和几何类复合等级结构。图4-11几何对象层次结构

第24页,共75页,2023年,2月20日,星期一几何对象模型(几何类层次结构)一、类等级结构

1、几何体Geometry是一个不能实例化的抽象类,它是所有基本几何体的超类,它定义了所有基本几何体的共同属性和方法。

2、空间参照系统类与几何体Geometry类之间存在着一对多的关系,即所有的基本几何体必须选择相同的空间参照系统。

3、几何体Geometry有四个子类,分别是点Point、曲线Curve、面Surface和几何体集合GeometryCollection。

4、几何体集合GeometryCollection有点集合MultiPoint、曲线集合MultiCurve和面集合MultiSurface三个子类。第25页,共75页,2023年,2月20日,星期一几何对象模型(几何类层次结构)5、曲线Curve的子类是用直线连接各点形成的线串LineString。

6、面Surface的子类是多边形Polygon。

7、曲线集合MultiCurve的子类是线串集合LineStrings。

8、面集合MultiSurface的子类是多边形集合Polygons。

9、线串LineString的子类是线Line和线环LinearRing。每个子类都继承了父类的所有语义特征,并可以定义子类新的属性和方法。第26页,共75页,2023年,2月20日,星期一几何对象模型(几何类层次结构)二、类复合等级与联系

1、一个线串LineString对应多个点Point,一个点集合MultiPoint也对应多个点Point。

2、一个多边形Polygon对应1多个线环LinearRing。

3、一个线串集合LineStrings对应多个线串LineString。

4、一个多边形集合Polygons对应多个多边形Polygon。具体应用中还可以对图4-11中表示的几何类层次结构进行扩展。如为几何体集合GeometryCollection定义一个子类,该子类是由点集合Points、线串集合LineStrings和多边形集合Polygons构成的复杂几何对象。也可以为曲线Curve定义一个子类,即用曲线连接各点形成的弧。第27页,共75页,2023年,2月20日,星期一几何对象模型(几何类的定义)

下面是SQL92和SQL99标准为图4-11中的每个几何类定义的属性和方法。一、几何体Geometry

几何体Geometry是几何对象类等级树的树根,是所有基本空间几何体的超类,是一个不能实例化的抽象类。几何体Geometry类等级中所有的基本几何对象都采用相同的空间参照系统。(一)几何体Geometry的属性:

Dimension—对象的空间延展度。点--0维,线---1维,面---2维。

CoordinateDimension—对象的坐标维,即使用坐标系的维数。第28页,共75页,2023年,2月20日,星期一几何对象模型(几何类的定义)(二)几何体Geometry的方法:

第29页,共75页,2023年,2月20日,星期一几何对象模型(几何类的定义)第30页,共75页,2023年,2月20日,星期一几何对象模型(几何类的定义)第31页,共75页,2023年,2月20日,星期一几何对象模型(几何类的定义)二、几何体集合GeometryCollection

几何体集合GeometryCollection是几何体Geometry的子类,是一个或多个Geometry构成的集合。

GeometryCollection无新增属性,新增方法为:

GeometryIteratorGeometries():几何对象的重载。92IntegerNumGeometries():返回GeometryCollection中Geometry的数量。99GeometryGeometryN(N:integer):返回GeometryCollection中第N个Geometry。99第32页,共75页,2023年,2月20日,星期一几何对象模型(几何类的定义)三、点Point

点Point是几何体Geometry的子类,边界为空,0维几何要素,表示空间中的一个位置。新增属性:X—点的x坐标。Y—点的y坐标。新增方法:DoubleX():返回点的x坐标。99DoubleY():返回点的y坐标。99四、点集合MultiPoint

点集合MultiPoint是几何体集合GeometryCollection的子类,是0维几何要素的集合。点集合MultiPoint的元素为多个不相互联结的、无序的点Point。如果任何两个点都不相等,则点集合MultiPoint是简单的。点集合MultiPoint的边界是空集合。点集合MultiPoint没有新增属性和方法。第33页,共75页,2023年,2月20日,星期一几何对象模型(几何类的定义)五、曲线Curve

曲线Curve是几何体Geometry的子类,是点的一个序列。曲线Curve的子类表示两点间内插的形式,它只有一个子类线串LineString,表示点之间为线性内插。不相交的曲线Curve称为简单曲线Curve,始点与终点相同时称为闭合曲线,一个简单闭合的曲线称为一个环Ring。不闭合曲线Curve的边界为它的两个端点。曲线Curve没有新增属性,新增方法为:

DoubleLength():返回Curve在相应参照系统中的长度。

PointStartPoint():返回Curve的起点。

PointEndPoint():返回Curve的终点。

IntegerIsClosed():返回TRUE表示曲线闭合(StartPoint()=EndPoint())。99IntegerIsRing():TRUE表示曲线闭合(StartPoint()=EndPoint())且是简单环。99第34页,共75页,2023年,2月20日,星期一几何对象模型(几何类的定义)六、线串LineString

线串LineString是曲线Curve的子类,是一个Curve,点和点之间采用线性内插,点序列中紧邻的两点定义一个线段。线串LineString没有新增属性。新增方法为:

IntegerNumPoints():返回LineString中的点数。99PointPointN(N:Integer):返回Linestring中第N个点。99七、线Line

线Line是线串LineString的子类,是只有两个点的线串LineString。线Line没有新增属性,新增方法同LineString。八、线环LinearRing

线环LinearRing是线串LineString的子类,是一个闭合的、简单的线串LineString。线环LinearRing没有新增属性,新增方法同LineString。第35页,共75页,2023年,2月20日,星期一几何对象模型(几何类的定义)九、曲线集合MultiCurve

曲线集合MultiCurve是几何体集合GeometryCollection的一个子类,是1维几何体集合,它的元素为多个曲线Curves。是一个不能实例化的抽象类。如果其中各元素均为简单元素,且两元素的交集为边界上的点集,则曲线集合MultiCurve是简单的。曲线集合MultiCurve没有新增属性。新增方法为:

DoubleLength():返回曲线集合MultiCurve的元素Curves的长度总和。

IntegerIsClosed():返回1(TRUE)表示曲线集合MultiCurve中每个曲线是封闭的(StartPoint()=EndPoint())99第36页,共75页,2023年,2月20日,星期一几何对象模型(几何类的定义)十、面Surface

面Surfac是2维几何对象,由一个外部边界和0个或多个内部边界组成。3维空间的简单surfaces与平面surfaces同形。多面体表面Polyhedralsurfaces由简单surfaces共享边界构成。简单surface是与surfaces内外边界对应的闭合Curves的集合。它的唯一的可实例化的子集是Polygon。面Surfac没有新增属性,新增方法为:

DoubleArea():返回面Surface在其参照系统中的面积。

DoublePerimeter():返回面Surface在其参照系统中的周长。92DoubleCentroid():返回面Surface在其参照系统中的质心。

DoublePointOnSurface():返回面Surface上的点。第37页,共75页,2023年,2月20日,星期一几何对象模型(几何类的定义)十一、多边形Polygon

多边形Polygon是面Surface的子类,由一个外部边界和0个或多个内部边界(洞)组成。多个内外边界互不相交,只能在边界上相切于一个点。多边形Polygon内部点集是互相连接的、闭合的。多边形Polygon没有新增属性,新增方法为:

GeometryExteriorRing():返回Polygon的外环。

IntNumInteriorRings():返回Polygon环的数量。

List<Geometry>InteriorRings():返回Polygon内部环的集合。第38页,共75页,2023年,2月20日,星期一几何对象模型(几何类的定义)十二、面集合MultiSurface

面集合MultiSurface是几何体集合GeometryCollection的子类,是元素为面Surface的2维几何体集合。面集合MultiSurface中任何两个面Surface的内部不能相交,边界可相交于有限个点。面集合MultiSurface是一个非实例化的抽象类,它为子类定义了一系列方法。面集合MultiSurface的可实例化子类是多边形集合MultiPolygon,它是多边形Polygon的集合。多边形集合MultiPolygon没有新增属性,新增方法为:

DoubleArea():求面集合MultiSurface在其参照系统中的面积。

DoublePerimeter():求面集合MultiSurface在其参照系统中的周长。92DoubleCentroid():求面集合MultiSurface在其参照系统中的质心。

DoublePointOnSurface():求面集合MultiSurface上的一个点。第39页,共75页,2023年,2月20日,星期一几何对象模型(几何类的定义)十三、多边形集合MultiPolygon

多边形集合MultiPolygon是面集合MultiSurface的子类,是元素为Polygon的面集合MultiSurface。其中任何两个元素多边形Polygon的内部不能相交,边界可相交(接触)于有限个点。多边形Polygon内部点集是互相连接的、闭合的。多边形集合MultiPolygon中至少有两个多边形Polygon不连接。多边形集合MultiPolygon是其每个元素的边界线构成的集合。多边形集合MultiPolygon没有新增属性和新增方法。Back第40页,共75页,2023年,2月20日,星期一纯关系实现(空间要素关系模式)一、空间要素的关系模式要素表是一个标准关系表,必须包含一到多个特殊的几何属性域geometry。几何数据独立于要素表之外存储在单独的几何表中,几何表的主码GID作为要素表的外码存储在要素表的几何域中,要素表中每个几何属性域对应一个具体的几何表(或视图)。关系数据库中,一个专题转换为一个要素关系表(featuretable),一个空间要素转换为要素关系的一个元组,元组中的几何域存储几何数据的标识,几何数据在单独的几何表中存储。空间要素表的一般形式为:关键字属性1。。。几何属性域geometry要素关键字几何表主码GID第41页,共75页,2023年,2月20日,星期一纯关系实现(空间要素关系模式)第42页,共75页,2023年,2月20日,星期一纯关系实现(空间要素关系模式)第43页,共75页,2023年,2月20日,星期一纯关系实现(空间要素关系模式)第44页,共75页,2023年,2月20日,星期一纯关系实现(几何数据表)第45页,共75页,2023年,2月20日,星期一纯关系实现(例图)例图:

第46页,共75页,2023年,2月20日,星期一纯关系实现(例图对应的几何表)几何表的二进制对象形式几何表的数值坐标形式Back第47页,共75页,2023年,2月20日,星期一对象关系实现(空间数据类型)一、空间数据类型(简称“空间ADT”)

一种具有较强数据表达能力的对象型抽象数据类型(ADTAbstractDataType),定义中包含了几何数据结构和一系列用于维护几何数据、实现空间操作、表达空间关系的几何方法。几何对象按形态可分为点、线、面、点集合、线集合、面集合等多种几何类型,同一种几何类型的几何对象属于一类,定义为一种具体的空间ADT。空间ADT是一个大类,包含Point、Polyline、Polygon等许多不同形态的具体数据类型,要素表中每个空间属性域定义为一种具体的空间ADT。

第48页,共75页,2023年,2月20日,星期一对象关系实现(空间数据类型)

空间数据库应定义足够数量且不冗余的一组通用空间ADT,并为每个空间ADT定义满足数据表示、处理和管理需要的最小函数集(几何方法)。空间ADT是应用驱动的,应满足具体的应用需求,这里定义的空间ADT应能支持前述的空间查询。定义中应包括空间ADT的名称、几何类型的界定约束(简称约束)、几何属性内容、几何方法形式和定义。

空间函数的输出结果应是已定义的数据类型之一,空间ADT设计和空间函数的定义应具有封闭性。第49页,共75页,2023年,2月20日,星期一对象关系实现(空间函数的封闭性)

求交集结果有三种:

(b)两个多边形,空间对象类型为region。

(c)两个多边形和一条线。

(d)两个多边形、一条线和一个点。如果只定义点(point)、折线(polyline或line)、区域(region)三种空间ADT,则不能表示(c)、(d)两种情况。如选择(b)作为函数的输出,虽强制对应了一种已定义的空间ADT,但没有准确地表示两个多边形的交集。如果定义一个足够大的空间ADT集合,使空间函数在数据类型集合上封闭,那就需要将点、线、多边形、复合对象定义成本例中的空间ADT。图4-26两个多边形的交集

如图4-26中,A、B两多边形表示成其内部和边界上点的无限集合,两多边形的交集定义为同时属于两个多边形的所有点构成的集合。第50页,共75页,2023年,2月20日,星期一对象关系实现

(实例中定义的空间数据类型)

根据实例中的关系模式和查询需求,至少需要定义以下空间ADT:

1、点类型(point:0维):一个坐标向量。

pointADT的函数:

realDistance(region,point)计算点到区域边界线间的距离。

2、折线类型(polyline或line:1维):直线段序列,存储为坐标向量序列,线状要素几何类型。约束:一个端点最多有两个线段共享。

polylineADT的函数:

boolPointInLine(line,point)测试一个点是否在线上。

realLenth(line)计算线的长度。

boolOverlapsLR(line,region)测试一条线是否与一个区域相交。第51页,共75页,2023年,2月20日,星期一对象关系实现

(实例中定义的空间数据类型)

3、区域类型(region两维):多边形polygon是折线构成封闭区域,约束为“无洞的简单多边形”。区域region为不重叠多边形的集合,polygon和region均是面状要素几何类型。本例将多边形polygon看作区域的特例,只定义点point、折线polyline、区域region三种空间ADT。regionADT的函数:

boolPointInRegion(region,point)测试一个点是否属于一个区域。

boolOverlaps(region,region)测试两个区域是否相交。

boolOverlapsRect(region,rectangle)测试一个区域是否与一个矩形区域相交。

regionClipping(region,rectangle)计算一个区域与一个矩形区域的交集(区域或空)。

regionIntersection:(region,region)返回两个区域的交集(区域或空)。

boolMeets(region,region)测试两个区域是否相邻。

realArea(region)计算区域的面积。

regionRegionUnion{region}多个区域联接,返回一个区域。

第52页,共75页,2023年,2月20日,星期一对象关系实现

(空间要素的对象关系模式

)二、空间要素的对象关系模式空间要素的对象关系模式中包含一个或多个空间属性域,每个空间属性域的数据类型为一种具体的空间ADT,取值为该类中具体的几何对象。空间要素关系表的一般结构为:关键字属性1属性2。。。。ADT要素ID几何对象第53页,共75页,2023年,2月20日,星期一对象关系实现(实例中要素模式

)(一)行政区划(Schema1)

1、国家描述国家的基本信息。

CreateTableCountry(country_codeinteger,country_namevarchar(30),geometryregion,

PrimaryKey(country_code))第54页,共75页,2023年,2月20日,星期一对象关系实现(实例中要素模式

)2、省描述县的基本信息,通过country_code建立了国家与省之间的联系。

CreateTableProvince(Province_codeinteger,Province_namevarchar(30),

country_codeinteger,geometryregion,PrimaryKey(Province_code),ForeignKey(country_code)ReferencesCountry)

第55页,共75页,2023年,2月20日,星期一对象关系实现(实例中要素模式

3、县 描述省的基本信息,通过Province_code建立了省与县之间的联系。

CreateTableCounty(County_codeinteger,County_namevarchar(30),populationinteger,Province_codeinteger,geometryregion,

PrimaryKey(county_code),

ForeignKey(Province_code)

ReferencesProvince)第56页,共75页,2023年,2月20日,星期一对象关系实现(实例中要素模式

)(二)城市间的路网(Schema2)

道路的空间ADT是polyline,道路相对行政区而言随时间变化较快,只在路段关系模式中包含空间属性域,道路的空间属性由路段关系模式推出。道路和路段两个关系模式间是多对多的联系,建立一个新关系模式HighwaySection来表示。

1、道路描述道路的基本信息。

CreateTableHighway(Highway_codeinteger,Highway_namevarchar(4),Highway_typevarchar(2),

PrimaryKey(Highway_code))第57页,共75页,2023年,2月20日,星期一对象关系实现(实例中要素模式

)2、路段描述路段基本信息,通过city_start和city_end两个域建立了路段与城市间的联系。

CreateTableSection(section_codeinteger,section_namevarchar(4),number_lanesinteger,city_startvarchar(30),city_endvarchar(30),geometryline,PrimaryKey(section_code),ForeignKey(city_start)ReferencesCity,

ForeignKey(city_end)ReferencesCity)第58页,共75页,2023年,2月20日,星期一对象关系实现(实例中要素模式

)3、路与路段关系为描述路段和道路间的联系需增加一个关系,消除一些冗余。

CreateTableHighwaySection(section_codeinteger,section_numberinteger,highway_codeinteger,

PrimaryKey(section_code,highway_code),

ForeignKey(section_code)ReferencesSection,

ForeignKey(highway_code)ReferencesHighway)

第59页,共75页,2023年,2月20日,星期一对象关系实现(实例中要素模式

)4、城市描述城市的基本信息,包含城市的几何信息,以城市名称为主码。

CreateTableCity(city_namevarchar(30),

populationinteger,geometryregion,

PrimaryKey(city_code))第60页,共75页,2023年,2月20日,星期一对象关系实现(实例中要素模式

)(三)土地使用(Schema3)

转换为一个土地使用关系

CreateTableLand_Use(region_namevarchar(30),

land_use_typevarchar(30),

geometryregion,PrimaryKey(region_nam))第61页,共75页,2023年,2月20日,星期一对象关系实现(例子中查询功能)三、基于对象关系模式的空间查询根据本例中定义的空间ADT,用扩展SQL语言描述前面定义的查询。

Select后可跟属性和函数,where.后的条件中可含空间谓词。(一)属性查询

1、ALPHA-ADM1:某县的居民数量。在County关系中先选择某县的纪录,然后在人口域上的投影即为所求。

SelectpopulationFromCountyWherecounty_name=“某县”第62页,共75页,2023年,2月20日,星期一对象关系实现(例子中查询功能)2、ALPHA-ADM2:某省有多少个县。连接County和Province两个关系,查出某省对应的所有县名。Selectcounty_nameFromCounty,ProvinceWhereProvince.Province_code=County.Province_codeandProvince_name=“某省”查询涉及两个关系,两个关系中有相同的属性域(可同名),每个关系可定义一个别名。Selectcounty_nameFromCountyasc,ProvinceaspWherep.Province_code=c.Province_codeandcounty_name=“某省”第63页,共75页,2023年,2月20日,星期一对象关系实现(例子中查询功能)

3、ALPHA-ADM3:中国的居民数量。国家关系中不含人口域,求国家的人口时必须将Country、Province、County三个关系相连接,求出国家包含的所有县的人口总和。

Selectsum(c2.population)FromCountryasc1,Provinceass,Countyasc2Wherec1.county_name=“中国”

ands.Province_code=c2.Province_codeandc1.county_code=s.county_code第64页,共75页,2023年,2月20日,星期一对象关系实现(例子中查询功能)4、ALPHA-R1:某一条道路第一路段的车道数。连接HighwaySection、Highway、Section三个关系,从Highway查出要查询的道路名,从Section中查出该道路第一个路段和该路段的车道数。

Selects.number_lanesFromHighwaySectionash1,Highwayash2,SectionassWhereh2.Highway_code=h1.Highway_codeandh1.section_code=s.section_codeandh2.Highway_name=“路名”

andh1.section_number=1第65页,共75页,2023年,2月20日,星期一对象关系实现(例子中查询功能)

5、ALPHA-R2:某一条道路所有路段名。连接HighwaySection、Highway、Section三个关系,从Highway查出要查询的道路名,从Section中查出该路包含的所有路段。

Selectsection_nameFromHighwaySectionash1,Highwayash2,SectionassWhereh2.Highway_code=h1.Highway_codeandh1.section_code=s.section_codeandh2.Highway_name=“路名”第66页,共75页,2023年,2月20日,星期一对象关系实现(例子中查询功能)(二)空间查询这类查询中含有空间函数和谓词,谓词用于where子句中,函数用于select子句中,也可用作谓词的参数。

1、SPAT-ADM4:与某个县相邻的县。对County和County的进行自身连接,同一关系取两个别名。求同一关系中与指定县相邻的其他县,显示县名。

Selectc1.county_nameFromCountyasc1,Countyasc2Wherec2.county_name=“县名”

andc1.Province_code=c2.Province_codeandmeets(c1.geometry,c2.geometry)第67页,共75页,2023年,2月20日,星期一对象关系实现(例子中查询功能)2、SPAT-ADM5:显示某个省。如果国家、省、县三个关系中都含有几何属性。查询可描述为:

SelectgeometryFromProvinceWhereProvince_name=“某省”

如果只有县关系中含有几何属性,则查询描述如下:

SelectRegionUnion(c.geometry)FromCountryasc,ProvinceaspWherep.Province_name=“某省”

andp.Province_code=c.Province_code

连接Country和Province两关系,查出属于“某省”的所有县。投影得到各县的几何属性geometry,用RegionUnion谓词对几何属性求联合,消除可能的公共边界,得到所求省的几何图形。第68页,共75页,2023年,2月20日,星期一对象关系实现(例子中查询功能)

3、SPAT-ADM6:全国范围内,大于“某省”中最大的一个县的县是哪些。查询描述为:

温馨提示

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

评论

0/150

提交评论