《ArcGIS Engine 地理信息系统开发从入门到精通(第二版)》——6.3 空间数据模型...

本节书摘来自异步社区《ArcGIS Engine 地理信息系统开发从入门到精通(第二版)》一书中的第6章,第6.3节,作者: 邱洪钢 , 张青莲 , 熊友谊 更多章节内容可以访问云栖社区“异步社区”公众号查看。

6.3 空间数据模型

ArcGIS Engine 地理信息系统开发从入门到精通(第二版)
空间数据模型是地理信息系统的基础,它不仅决定了系统数据管理的有效性,而且是系统灵活性的关键。空间数据模型是在实体概念的基础上发展起来的,它包含两个基本内容,即实体组和它们之间的相关关系。实体和相关关系可以通过性质和属性来说明。空间数据模型可以被定义为一组由相关关系联系在一起的实体集。

结合空间数据的具体特点进行空间数据模型的设计,是地理信息系统的关键。空间数据模型的设计,主要是构建一个能够用真实世界的抽象提取来代表该真实世界的模型。由于空间数据模型的设计与计算机硬件、系统软件和工具软件的发展现状密切相关,所以,就目前的发展现状而言,很难用一个统一的数据模型来表达复杂多变的地理空间实体。例如,某些空间数据模型可能很适合于绘图,但它们对于空间分析来说效率却十分低;有些数据模型有利于空间分析,但对图形的处理则不理想。

目前,与GIS设计有关的空间数据模型主要有矢量模型、栅格模型、数字高程模型、面向对象模型、矢量和栅格的混合数据模型等。前4种模型属于定向性模型,在模型设计时只包括与应用目标有关的实体及其相互关系,而混合模型的设计则包括所有能够指出的实体及其相互关系。就目前的应用现状而言,矢量模型、栅格模型、数字高程模型已相当成熟(目前成熟的商业化GIS主要是采用这3类模型),而其他模型,特别是混合模型则处于大力发展之中。

6.3.1 矢量模型(vector model)
矢量模型是利用边界或表面来表达空间目标对象的面或体要素,通过记录目标的边界,同时采用标识符(Identifier)表达它的属性来描述空间对象实体。矢量模型能够方便地用于比例尺变换、投影变换以及图形的输入和输出。矢量模型处理的空间图形实体是点(point)、线(line)和面(area)。矢量模型的基本类型起源于“Spaghetti”模型。在Spaghetti模型中,点用空间坐标对表示,线由一串坐标对表示,面则是由线形成的闭合多边形。CAD等绘图系统大多采用Spaghetti模型。

GIS的矢量数据模型与Spaghetti模型的主要区别是:前者通过拓扑结构数据来描述空间目标之间的空间关系,而后者则没有。在矢量模型中,拓扑关系是进行空间分析的关键。在GIS的拓扑数据模型中,与点、线、面相对应的空间图形实体主要有结点(node)、弧段(arc)和多边形(polygon),多边形的边界被分割成一系列的弧和结点,结点、弧、多边形间的空间关系在数据结构或属性表中加以定义。GIS的矢量数据模型具有以下几个特点。

① 通过对结点、弧、多边形拓扑关系的描述,相邻弧段的公用结点和相邻多边形的公用弧段,在计算机中只需记录一次。而在Spaghetti模型中,记录的次数则大于1。

② 空间图形实体的拓扑关系,如拓扑邻接、拓扑关联、拓扑包含等,不会随着诸如移动、缩放、旋转等变换而变化,而空间坐标及一些几何属性(如面积、周长、方向等)则会受到影响。

③ 一般情况下,通过矢量模型所表达的空间图形实体数据文件占用的存储空间要比栅格模型小。

④ 能够精确地表达图形目标,精确地计算空间目标的参数(如周长、面积)。

6.3.2 栅格模型(raster model)
栅格模型直接采用面域或空域枚举来直接描述空间目标对象。在栅格模型中,点(点状符号)是由一个或多个像元,线是由一串彼此相连的像元构成。在栅格模型中,每一像元的大小是一致的(一般是正方形),而且每一个栅格像元层记录着不同的属性(如植被类型等)。像元的位置由纵横坐标(行列)决定。所以,每个像元的空间坐标不一定要直接记录,因为像元记录的顺序已经隐含了空间坐标。

栅格模型具有以下几个特点。

① 栅格的空间分辨率是指一个像元在地面所代表的实际面积大小(一个正方形的面积)。

② 对于同一幅图形或图像来说,随着分辨率的增大,存储空间也随之增大。例如每一像元占用一个字节,而且分辨率为100m,那么,一个面积为10km10km=100km 的区域就有10001000=1000000个像元,所占,存储空间为1000000个字节;如果分辨率为10m,那么,同样面积的区域就有1000010000=1亿个像元,所占存储空间近100MB。

③ 表达空间目标、计算空间实体相关参数的精度与分辨率密切相关,分辨率越高,精度越高。

④ 常适合进行空间分析。例如,同一地区多幅遥感图像的叠加操作等。

⑤ 不适合进行比例尺变化和投影变换等。

6.3.3 数字高程模型(DEM,Digital Elevation Model)
数字高程模型是采用规则或不规则多边形拟合面状空间对象的表面,主要是对数字高程表面的描述。根据多边形的形状,可以把数字高程模型分为两种,即网格模型和不规则三角网模型。

(1)网格模型(Grid model)。

与栅格模型相似,同样是直接采用面域或空域枚举来描述空间目标对象。一般情况下,栅格模型的每一像元或像元的中心点代表一定面积范围内空间对象或实体的各种空间几何特征和属性几何特征,而网格模型通常以行列的交点特征值代表交点附近空间对象或实体的各种空间几何特征和属性几何特征。栅格模型主要用于图像的分析和处理,而网格模型则主要进行等值线的自动生成,坡度、坡向的分析等。栅格模型处理的数据主要来源于航空、航天摄影以及视频图像等,而网格模型则主要来源于原始空间数据的插值。

(2)TIN模型。

TIN模型是利用不规则三角形来描述数字高程表面。在TIN模型中,同样可以建立三角形顶点(数据点)、三角形边、三角形个体间的拓扑关系。如果建立了TIN模型图形实体(三角形顶点、三角形边、三角形)的拓扑关系,将大大加快处理三角形的速度。

归纳起来,数字高程模型的主要优点是能够方便地进行空间分析和计算,如对地表坡度、坡向的计算等。

6.3.4 面向对象的数据模型(Object-Oriented Data Model)
面向对象表示方法的最大优点是便于表达复杂的目标。面向对象的方法为数据模型的建立提供了分类、概括、联合和聚集等4种数据处理技术,这些技术对复杂空间数据的表达较为理想。在概括、联合、聚集等技术的运用中,都要涉及对象或类型的属性值或属性结构在不同级或者层之间的传递或继承。为此,面向对象的方法提供了继承和传播两种工具。

在类型的层次结构中,子类的属性结构或操作方法可以部分地从超类中获取,这就是继承。继承可以减少数据冗余,并且有助于保持数据的完整性。

无论是联合还是聚集,它们都有一个共同之处,那就是将一组对象合并成为一个更加复杂的对象,这一类复杂对象的属性值来源于两个方面。

① 一部分属性值由该复杂对象本身定义,与构成它的成员对象(组件对象)无关。

② 另一部分属性值依赖于这些成员对象。

为此,复杂对象必须具备获取成员对象属性值的能力。传播正是一种用来描述复杂对象的依赖性并获取成员对象属性值的工具,这种工具所基于的最基本的原理就是成员对象的相关属性只能存储一次,然后再将这些属性值传给复杂对象,这样当成员对象的属性值被改变后,复杂对象的属性值则无需修改。显然,这种工具的使用大大地减少了数据冗余量,并保证了数据的一致性。

通过采用继承和传播两种工具,将使得原本十分复杂的描述变得自然和简单。例如,一个城市由若干个区组成,因此,城市的人口应为各区人口的总和。对于城市这样一个复杂对象,它的人口数由它的成员对象,即各区的人口数求和派生而成。

6.3.5 混合数据模型(Hybrid Model)
由于矢量模型、栅格模型、数字高程模型在处理空间对象时都有各自的优缺点,所以,能否在一个统一模型的基础上充分利用相关模型的优点就是目前GIS界研究的方向之一。到目前为止,有代表性的研究成果主要有TIN与矢量的一体化模型,栅格与矢量一体化的多级网格模型。下面简单介绍一些这方面的内容。

(1)矢量与TIN的一体化的数据模型。

发展矢量与TIN一体化数据模型的主要原因是:它既能发挥TIN的空间分析和计算功能,又能方便地查询属性信息。因为TIN的三角形顶点和边(如测量点、河流走向线、陆上径流路径、封闭洼地边界线等)可能为矢量图形的特征点和线的一部分,所以它们的系统代码或内部码是完全一致的。模型将空间数据类型抽象为点状目标、线状目标、面状目标,这3类图形目标又通过特殊点、结点、一般线段、弧以及多边形等加以表达。

TIN与矢量之间存在着部分(part of)或包含的关系,实际上也是通过这种关系实现一体化的。由于TIN是以矢量系统的矢量图形为基础生成的,所以,单个三角形顶点、边、三角形本身包含的空间区域可能是矢量系统点、线、面状图形目标的一部分。如果在TIN和矢量数据结构中保持点和顶点、线和边、面和三角形有关标识号的统一,那么,就能实现TIN和矢量的一体化。

(2)多级网格模型。

多级网格模型的本质是在基本网格的基础上细分为256256或1616个网格,然后基本网格和细分网格都采用四叉树的编码方法去表达点、线、面的有关参数。具体来讲,就是要遵循如下3点约定:

① 点状地物是仅有空间位置,没有形状和面积,在计算机内仅有一个位置数据;

② 线性地物是有形状,没有面积,在计算机内由一组原子填满路径;

③ 面状地物是有形状和面积,在计算机内是由一组填满路径的原子表达的边界线。

ArcGIS Engine开发从入门到精通》讲解是基于ArcGIS Engine 9.3开发平台,介绍了相关的开发技术和工程应用,并用C#语言编程实现了工程实例。《ArcGIS Engine开发从入门到精通》共4篇分18章,第一篇基础篇(第1~9章)集中介绍了 ArcGIS Engine基础知识,包括开发基础组件对象模型ArcGIS Engine介绍、基于.NET的ArcGIS Engine开发ArcGIS Engine中的控件、框架控件介绍、控件使用实例等,为以后应用ArcGIS Engine的各种接口,快速地实现系统的开发打下坚实的基础;第二篇应用提高篇(第10~12章)介绍了ArcGIS Engine的应用框架、空间分析、ArcGIS Server服务、三维模式数据编辑等高级应用,通过学习这些高级应用可以使读者得心应手地完成各种GIS系统的开发;第三篇综合实例篇(第13章~第14章)用两个综合例子将前面讲解的知识点串起来,让读者将学习的知识点融合起来,以便可以胜任项目开发的角色;第四篇常见疑难解答与经验技巧集萃(第15~18章),本篇将一些开发过程中常见的异常、数据库连接与释放、数据加载以及一些经验技巧做了介绍,本篇的例子主要是对开发过程中常碰到的问题和实战技巧进行了汇总解答,以便帮助读者提高工作效率。, 《ArcGIS Engine开发从入门到精通》从开发者的角度,全面讨论了ArcGIS Engine开发的知识,让读者了解和掌握ArcGIS Engine开发的实战技术,无论是想对ArcGIS Engine入门还是对ArcGIS Engine感兴趣的GIS人员,都能从《ArcGIS Engine开发从入门到精通》中得到提高。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值