GIS数据组织管理
数据是GIS的“血液”,没有数据的GIS是没有生命力的。在GIS中,数据既有空间位置及图形信息,也有与之相对应的属性信息。GIS数据的特点就是数据源多、数据量大;同时系统对数据的要求也高。所以数据是GIS中最重要的部分。
1 GIS的空间数据表示
数据结构是指数据记录的编码格式及数据间的关系的描述。不同类型的数据,只有按照一定的数据结构进行组织,并将它映射到计算机存储器中去,才能进行存储、检索、处理和分析。在地理信息系统中,地理空间数据常用的数据结构有两种:栅格(Raster)数据结构和矢量( Vector)数据结构。
例如,一幅真实的地图(图3-4(a)可以分别用这两种不同的数据结构来描述。在栅格结构中,空间被有规则地分成了一个个小块,地理实体用这些小块所占据的栅格的行、列号来定义,栅格同时可以附有属性值,如图3-4(b)所示的A、B、C、D;在矢量结构中,地理实体用点、线、面来表达,其位置由二维平面直角坐标系中的坐标来定义,如图3-4(C)所示。(a——真实地物、b——栅格表示、c——矢量表示)
1.1 栅格数据
栅格数据结构由像元阵列构成,每个像元用网格单元的行和列来确定
图3-4空间实体的栅格、矢量数据结构表示
它的位置,常用于表示地质、气候、土地利用或地形等面状要素。任何面状的对象,如土地利用、土壤类型、地势起伏、环境污染等,都可以用栅格数据来表示。栅格数据的获取方法比较简单,即在专题地图上均匀地划分网格,相当于将一透明的方格纸覆盖在地图上,网格的尺寸大小依要求设定。根据单位网格交点归属法(中心点法)、单位网格面积占优法、长度占优法、重要性法等方法,直接获取相应的栅格数据。这类方法称为手工栅格数据编码法,它适用于区域范围不大或栅格单元的尺寸较大的情况。但是当区域范围较大或者栅格单元的分辨率较高时,需要采用数据类型转换方法,即由矢量数据向栅格数据作自动转换。
为了逼近原图或原始数据精度,除了采用上述的手工方法之外,还可以采用缩小单个栅格单元的方法(即增加精度),使得每个单位的栅格可以代表更为精细的地面单元。这样,在大大提高精度,更接近真实形态的同时,行、列数也将大大增加,即数据量也大幅度增加,使得数据冗余严重。为了解决这一矛盾,现已发展了一系列栅格数据压缩编码方法,如键码、游程长度编码、块码和四分数编码等。其目的就是为了用尽可能少的数据量记录尽可能多的信息,其类型又可以分为信息无损编码和信息有损编码两种。信息无损编码是指编码过程中没有任何信息损失,通过解码操作可以完全恢复原来的信息;信息有损编码是指为了提高编码效率,最大限度地压缩数据,在压缩过程中损失一部分相对不太重要的信息,解码时这部分难以恢复。在地理信息系统中多采用信息无损编码。
1.2 矢量数据
矢量数据结构使另一种最常见的图形数据结构,地理实体用一系列x,y坐标来确定它们的位置。矢量数据坐标空间假定为连续空间,不像栅格数据结构那样需要进行量化处理,因此,能更精确地定义位置、长度和大小。即通过记录坐标的方式,尽可能地将点、线、面等地理实体表现得精确无误。该数据结构长用于描述线装分布的地理要素,如河流、道路、等值线等。矢量数据能够准确定位,精度高,易于表达拓扑关系,存储量小,约为栅格结构存储量的1/10。但操作比较复杂,许多分析操作,如空间叠置、邻域搜索等,用矢量结构难以实现。
1.3 两种数据结构的比较、转换
(1)栅格结构和矢量结构比较
空间数据的栅格数据结构和矢量数据结构是模拟地理信息的截然不同的两种方法。它们有各自的优点和局限性。两种数据结构的比较如下:
从上述比较可以了解到栅格数据结构和矢量数据结构的适用范围。对于一个与遥感相结合的地理信息系统来说,栅格数据结构是必不可少的,因为遥感影像以像元为单位,可以直接将原始数据或经过处理的影像数据纳入栅格结构的地理信息系统。而对于地图数字化、拓扑检测、矢量绘图等,矢量数据结构又是必不可少的。较为理想的方案是采用两种数据结构并存,用计算机程序实现二种结构的高效转换。数字地图根据需要按矢量结构或栅格结构存储最大限度地减少冗余,提高数据精度,对于数据的提取和分析、输出,由程序自动根据操作的需要选取合适的结构,以获取最强的分析能力和时间效率。栅格和矢量双结构,对于提高地理信息系统的空间分辨率、数据压缩率和增强系统分析、输入输出的灵活性十分重要。但是在转换程序效率不高、硬、软件功能不太全的情况下,又要及时开展GIS工作,选用恰当的数据结构是GIS有效运行的前提之一。
据不完全统计,国内GIS项目以栅格数据作为空间数据库结构的项目约占全部项目的17%,矢量数据作为数据结构的约占53%,而空间数据库中含有两种数据结构的约占30%。时间证明,栅格结构和矢量结构在表示空间数据上可以是同样有效的。
(2)栅格数据结构和矢量数据结构的相互转换
矢量结构与栅格结构的相互转换,一直是地理信息系统的技术难题之一。这主要是由于转换程序通常占用较多的内存,涉及复杂的数值运算,而难以在实用系统特别是微机地理信息系统中被采用。近年来已发展了许多高效的转换算法,适用于不同的环境。
表3-1 栅格结构和矢量结构比较
|
栅格数据结构 |
矢量数据结构 |
优点 |
(1)数据结构简单; |
(1)表示地理数据的精度较高; |
缺点 |
(1)图形数据量大; |
(1)数据结构复杂; |
对于点状实体,每个实体仅由一个坐标对表示,其矢量结构和栅格结构的相互转换基本上只是坐标精度转换问题。线实体的矢量结构由一系列坐标对表示,在变为栅格结构时,除把序列中坐标对变为栅格行列坐标外,还需根据栅格精度要求,在坐标点之间插满一系列栅格点,这也容易由两点式直线方程得到;线实体由栅格结构变为矢量结构与将多边形边界表示为矢量结构相似。因此以下重点讨论多边形(面实体)的矢量结构与栅格结构相互转换问题。
①矢量格式向栅格格式转换
矢量格式向栅格格式转换又称为多边形填充,就是在矢量表示的多边形边界内部的所有栅格上赋予相应的多边形编号,从而形成栅格数据阵列。
A 内部点扩散算法:该算法由每个多边形一个内部点(种子点)开始,向其八个方向的邻点扩散,判断各个新加入点是否在多边形边界上,如果是边界点,则新加入点不作为种子点,否则把非边界点的邻点作为新的种子点与原有种子点一起进行新的扩散运算,并将该种子点赋予多边形的编号。重复上述过程,直到所有种子点填满该多边形并遇到边界为止。
扩散算法程序设计比较复杂,需要在栅格阵列中进行搜索,占用内存很大。在一定栅格精度上,如果复杂图形的同一多边形的两条边界落在同一个或相邻的两个栅格内,会造成多边形不连通,则一个种子点不能完成整个多边形的填充。
B 复数积分算法:对全部栅格阵列逐个栅格单元判断栅格归属的多边形编码,判别方法是:由待判点对每个多边形的封闭边界计算复数积分,对某个多边形,如果积分值为 ,则该待判点属于此多边形,赋予多边形编号,否则在此多边形外部,不属于该多边形。
复数积分算法涉及许多乘除运算,尽管可靠性好,设计也并不复杂,但运算时间很长,难以在比较低档次的计算机上采用。采用一些优化方法,如根据多边形边界坐标的最大最小值范围组成的矩形来判断是否需要做复数积分运算,可以部分地改善运算时间长的困难。
C 射线算法:射线算法可逐点判别数据栅格点在某多边形之外或在多边形内,由待判点向图外某点引射线,判断该射线与某多边形所有边界相交的总次数,如相交偶数次,则待判点在该多边形的外部,如为奇数次,则待判点在该多边形内部。
射线算法要计算与多边形交点,因此运算量大。另一个比较麻烦的问题是射线与多边形相交时有些特殊情况如相切、重合等,会影响交点的个数,必须予以排除,由此造成算法的不完善,并增加了编程的复杂性。
D 扫描算法:扫描算法是射线算法的改进,通常情况下,沿栅格阵列的行方向扫描,在每两次遇到多边形边界点的两个位置之间的栅格,属于该多边形。扫描算法省去了计算射线与多边形交点的大量运算,大大提高了效率,但一般需要预留一个较大的数组以存放边界点,而且扫描线与多边形边界相交的几种特殊情况仍然存在,需要加以判别。
E 边界代数算法:边界代数多边形填充算法(Boundary Algebra Filling,简称BAF),是任伏虎等设计并在微机地理信息系统上实现的一种基于积分思想的矢量格式向栅格格式转换算法。
边界代数法与其它算法的不同之处在于它不是逐点搜寻判别边界,而是根据边界的拓扑信息,通过简单的加减代数运算将拓扑信息动态地赋予各栅格点,实现了矢量格式到栅格格式的转换。由于不需考虑边界与搜索轨迹之间的关系,因此算法简单,可靠性好,而且由于仅采用加减代数运算,每条边界仅计算一次,免去了公共边界重复运算,又可不考虑边界存放的顺序,因此运算速度快,同时较少受内存容量的限制,特别适用于微机地理信息系统。
②栅格格式向矢量格式转换
栅格格式向矢量格式转换的目的,是为了将栅格数据分析的结果,通过矢量绘图装置输出,或者为了数据压缩的需要,将大量的面状栅格数据转换为由少量数据表示的多边形的边界。但是更重要的是为了将自动扫描仪获取的栅格数据加入矢量形式的数据库。
多边形栅格格式向矢量格式转换,就是提取以相同编号的栅格集合表示的多边形区域的边界和边界的拓扑关系,并表示成多个小直线段的矢量格式边界线的过程。
栅格格式向矢量格式转换通常包括以下四个基本步骤:
A多边形边界提取:采用高通滤波将栅格图像二值化或以特殊值标识边界点;
B边界线追踪:对每个边界弧段由一个节点向另一个节点搜索,通常对每个已知边界点需沿除进入方向的其它7个方向搜索下一个边界点,直到连成边界弧段。
C拓扑关系生成:对于矢量表示的边界弧段,判断其与原图上各多边形的空间关系,形成完整的拓扑结构,并建立与属性数据的联系。
D去除多余点及曲线圆滑:由于搜索是逐个栅格进行的,必须去除由此造成的多余点记录,以减少数据冗余。搜索结果曲线由于栅格精度的限制可能不够圆滑,需要采用一定的插补算法进行光滑处理。常用的算法有线性叠代法、分段三次多项式插值法、正轴抛物线平均加权法、斜轴抛物线平均加权法、样条函数插值法等。
栅格格式向矢量格式转换中最困难的是边界线搜索、拓扑结构生成和多余点去除。任伏虎等人发展了一种栅格数据库数据双边界直接搜索算法(Double Boundary Direct Finding,缩写为DBDF),较好地解决了上述问题。
1.4 空间数据组织与编码
(1)空间数据的组织
我们通过设计分类方案来理解和描述一个现实世界的复杂关系。分类是以所要描述实体的共同特征为基础进行的,它能够帮助我们组织数据以建立观察世界的数据模型,而通过对这一数据模型实施数据编码,则能够将我们对现实世界的观察模型转换成地理信息系统可以接收的数据编码模型。
依据地理实体之间不同的特征(如公路和铁路的建造方式不同而将它们视为不同的类)、相似的特征(如公路和铁路都具有运输功能而将它们视为一类)以及不同地理实体的。组合特征(如飞机跑道、出租车道、建筑楼群和停车场共同组成飞机场)来对地理特征进行分类,以实现空间数据的组织。
在地理信息系统中,对空间实体的数据描述分为空间特征和属性特征,属性特征是对于空间特征的描述,属性值可以包括数字值和非数值两种,例如描述道路实体的属性特征包括:
道路类型:1=高速公路
2=主干道
3=居民街道
5=其他
路面物质构成:1=水泥
2=柏油
3=碎石
道路宽度:M米
小巷数量:N个
道路名字:每条路的名字
表3-2 数据编码
道路计数 |
道路类型 |
物质构成 |
宽度(m) |
小巷数量 |
道路名 |
1 |
1 |
水泥 |
60 |
4 |
前进路 |
表3-2中每一条道路都有一组属性对其进行描述,这样的表被称为属性表。属性表中每一行都是一个记录,它包含了针对某个空间实体的描述信息;表中每一列称为信息描述的一个项。
空间特征数据的表达方式包括各种数据结构,并表现为点、线、面等各种图形符号信息;属性特征数据的表达方式包括基于地理特征(包括空间特征和属性特征)的多种分类关系的表格。地理信息系统正是通过建立空间特征数据的图形符号表达与属性特征数据的表格表达之间的联系,才具备了强大的空间分析能力。
那么,地理信息系统是如何建立空间特征数据和属性特征数据之间的联系?我们已经知道空间特征是如何通过坐标值和拓扑关系来表达,属性特征又是怎样组织成表格中一系列的记录。如果对于每一个具有拓扑关系的空间特征以及这个空间特征的一个描述记录赋予共同并且是唯一的标识符(Identifier),那么,由于这个标识符保证了在空间特征和属性记录之间—一对应的关系,这样,我们就可以通过空间记录查找并显示属性信息,或者依据存贮在属性表格中的属性生成具有地学分析意义的空间图形,如地图。
如图3-5所示,多边形—弧段拓扑关系表定义了多边形的空间特征拓扑关系,而多边形属性表则通过共同的并且是唯一的多边形标识符A、B、C与多边形—弧段拓扑关系表建立了联系。
图3-5 多边形拓扑关系表与多边形属性表之间的联系
两个表之间的联系还可以通过信息描述项来建立。如图3-6所示,区域号码 11-115-003具有多个所有者,这表现了空间关系分析中的一个重要概念:一对多的关系,即一个空间特征可以具有多个属性特征描述集合。
图3-6 一个空间特征可以具有多个属性特征的描述
(2)空间数据的编码
地理信息系统中的实体(对象)一般包括三种基本信息:语义信息、量度信息和关系结构信息。语义信息表明实体的类型,量度信息用于描述实体的形状和位置等几何属性,关系结构信息用于描述一个实体与其它实体的联系。而空间数据的编码则主要是指语义信息的数据化,它是建立在地理特征的分类及其等级组织基础之上的空间信息数据编码。
空间数据的编码用于表明实体元素在数据分类分级中的隶属关系和属性性质。编码由主码和子码共同组成,主码表示实体元素的类别,子码则是对实体元素的标识和描述。子码又可分为识别码和描述码(有时还需要有参数码),识别码用于唯一地标识具体的实体元素,描述码则是对实体元素的进一步性质描述。如果规定编码格式为,主码占3位,子码占5位,则每个属性编码占1个字节。通常,可采用2字节的无符号整型数(阈值为O~65535)记录属性编码。从理论上说,用无符号整型数可编码65536种不同的实体元素,足以表示现有地形图规范和图式中的所有类别,并且还有很大的扩充余地。为了与有关标准进行相互转换,并将编码组织成树结构,可用无符号整型数的前二位(阈值为O~64)记录主码,后三位(阈值为O~999)记录子码(其中O~499表示识别码,500~999表示描述码)。这样的编码可表示65种主码,每种主码下可有1000种子码,并且还有536种大于或等于650OO的特殊用途编码。这种属性编码仅占 2字节,并且具有可扩充性。
2 GIS的数据组织管理
2.1 GIS数据的地理基础
地理数据包含空间位置和坐标信息,所以其数据表示和规范是非常重要的。GIS数据的地理基础就是统一的地图投影系统、统一的地理网格坐标系统和统一的地理编码系统。这样的地理基础为地理信息的输入输出以及加工处理提供一个统一的定位框架,并以此为基础正确反映出它们的地理位置和地理关系特征。所以在GIS建设中,应根据实际需要和国家标准首先选择适当的投影系统和比例尺。目前我国基本比例尺地形图中,除1:100万采用 Lambert投影外,其余(1:50万-1:5000)均采用日一高投影,在城市一级一般采用大比例尺(1: 1000或1:500)非地球投影。
2.2 GIS数据获取
GIS数据的来源大致包括基础制图数据、自然资源数据、数字高程数据、调查统计数据、实地勘察数据和已有系统数据。数据获取的方法有数字化仪输入、扫描输入、键盘输入或直接从其他产生数字化信息的设备输入,比如数字卫星影像等等。
(1)图形数据的输入
图形数据的输入过程实际上是图形数字化处理过程。对于不同来源的空间数据,很难找到一种统一而简单的输入方法,只能从几种普遍适合的方法中选用。
①手工键盘输入
A手工键盘输入矢量数据
手工输入矢量图形数据就是把点、线、面实体的地理位置(坐标),通过键盘输入到数据文件或程序中去。实体坐标可从地图上的坐标网或其他覆盖的透明网格上量取。
B手工键盘输入栅格数据
栅格数据是以一系列像元表示点、线、面实体。这种数据的手工输入过程是:首先选择适当的像元大小和形状(一般为正方形网格)并绘制透明网格;然后确定地物的分类标推,划分并确定每一类别的编码;最后将透明格网覆盖在待输入图件上,依格网的行、列顺序用键盘输入每个像元的属性值即各类别的编码值。
手工键盘输入方法简单,不用任何特殊设备,但输入效率低。需要做十分繁琐的坐标取点或编码工作。这种方法在缺少资金或输人图形要素不复杂时可以应用。
②手扶跟踪数字化仪输入
这是目前最常用的图形数据输入方式。把待数字化的资料——地图、航片等固定在图形输入板上,首先用鼠标输入至少4个控制点的坐标和图幅范围,随后即可输入图幅内各点、曲线的坐标。
③自动扫描输入
自动扫描输入方式输入速度快,不受人为因素的影响,操作简单;缺点是硬件设备昂贵,图形识别技术尚不完全成熟。这种方法是图形自动输入的发展方向。
④解析测图仪法空间数据输入
解析测图仪利用航空或航天影像像对,建立空间立体模型,直接测得地面三维坐标(X,Y,Z),并直接输入计算机,形成空间数据库。这种仪器不仅能记录三维坐标,还能通过联网的计算机处理比例尺变形和其他制图变形。
这种输入方法在建立数字地面模型(DTM)时尤其重要。
⑤已有数字形式空间数据的输入
这种方式用来接收已是数字化形式的信息数据,包括机载或星载多光谱扫描磁带等系统引进的信息。这些外来信息数据虽然已经是数字格式,但其格式不一定与GIS数据库一致,还需要作某些必要的预处理,如调整影像分辨率和形状、地图投影变换、数据记录格式转换等。
(2)属性数据的输入
属性数据即空间实体的特征数据。例如,中国省区图既包括一组连续的矢量表示的面实体,还包括属性数据如中英文名称,省会,人口等。显然,这些属性都与该面域空间实体相关,也应有效地存储和处理。一般,对一个空间实体及其属性赋予一个或多个关键字进行连接。
属性数据一般采用键盘输入。当数据量较大时,属性数据与空间数据分别输入并分别存储。把属性数据首先输入一个顺序文件,经编辑、检查无误后转存到数据库的相应文件或表格中。这是属性数据输入的一种常用方法。
(3)GIS数据的编辑
GIS空间数据不同的数据源有不同的输入方法。不论采取什么输入方法都会有一些问题,如输入过程的意外错误,输入数据与使用格式不一致,各种来源数据的比例尺、投影不统一,图幅间不匹配等。因此,必须对空间数据进行处理,得到纯净统一的数据文件,使存储的空间数据符合规范、标准,满足使用和分析的需要。
数据编辑的目的在于消除数据输人过程中引入的错误或误差。它们包括空间点位不正确,变形,空间点位和线段的丢失或重复,线段过长或过短,面域不封闭,区域中心识别码的遗漏,结点代码和区域码不符合拓扑一致性,属性的错误分类,错误编码或误输人等等。图3-7所示为数据编辑方法的流程。
图3-7 GIS空间数据的编辑过程
GIS中数据的编辑是一种非常耗时、耗精力的交互处理工作。它所花费的时间和精力甚至比数据输入更多。除逐一修改图形与属性输入的误差和错误外,图形的分割与合并,数据更新等许多工作也是在数据编辑模块中完成的。全部编辑工作是把数据显示在屏幕上,由键盘和编辑菜单来控制数据编辑的各种操作活动得以实现。
2.3 GIS数据组织管理
空间数据经编辑处理后,一般只能消除或减少在数字化过程中因操作产生的局部误差或明显错误,还可能存在着:各种数据来源的比例尺和投影不一致,各幅地图数据之间的不匹配,数据的冗余度等问题,必须做进一步的预处理——数据管理过程,才能得到可以满足用户要求的数据文件。
(1)数据格式的转换
对于矢量数据来说,不同系统有不同的数据格式,如 Maplnfo系统采用 Maplnfo格式,ARC/INFO系统采用ARC/INFO格式。为了实现数据共享,要求GIS能把其他系统的格式转换为本系统适用的数据格式。转换的方式有两种:一是建立两种系统的数据格式转换模块,直接转换,这时要知道其他系统所采用的数据格式;二是把不同系统的图形文件和属性文件转换成;DXF(图形交换文件)和 DBF格式,然后再由 DXF和 DBF格式转换成其他系统能识别的数据格式。其中DXF文件是标准的ASCⅡ文本文件,很容易转换成其他图形文件格式。
(2)空间数据与属性数据的连接
空间数据输入时虽然可以直接在图形实体上附加一个特征编码或识别符,但是这种交互式的编辑方法需要输入大量复杂的属性数据,工作效率低。空间和属性数据连接的较好方法是利用专用程序自动地把属性数据与空间实体数据连接起来,此时,只要求空间实体带有唯一的标识符即可。标识符可以用手工输人,也可以由程序自动生成并与图形实体的坐标存储在一起。
空间实体的属性项目很多,把属于同一实体的所有数据项放在同一个记录中,记录的顺序号或某一个特征数据项作为该记录的标识符或关键宇。它和图形的标识符都是空间和属性数据连接和检索的纽带。唯一性的标识符只有在特殊的计算系统中才能直接附加到图形实体中去。在多边形网络模型中,首先必须建立多边形,然后才能附加标识符。如图3-8所示
图3-8建立矢量多边形数据库的过程
说明了按拓扑结构建立具有多边形边界的图形数据与属性数据完整的矢量多边形数据库的整个过程。
(3)GIS数据管理
GIS数据管理就是按照一定的数据模型对GIS的数据进行合理的组织,以高效地实现
系统的应用要求。GIS数据库管理系统模型主要包括三种:混合数据模型(图3-9a)、集成数据模型(图3-9b)和面向对象数据模型(图3-9c)。
图3-9 GIS数据库管理系统模型
混合数据模型用文件来存储图形信息,而把属性信息存储在RDBMS的表中,每个图形要素通过唯一的ID和DBMS表的属性数据链接。这是目前技术最成熟、应用最广泛的数据管理模型。
集成数据模型利用主流RDBMS查询、检索和数据集成机制的优点,并通过扩展RDBMS的数据类型和SQL,使RDBMS能存储图形要素以达到图形和属性的集成,并能执行空间查询,从而使GIS数据管理更容易、性能更好。
面向对象数据模型最适合于描述空间信息,它采用面向对象技术,把图形要素及其属性、行为、语义进行封装,永久存储在对象数据库中。这种模型使GIS数据的管理更加接近现实世界。
2.4 GIS数据更新
许多地理数据会随着时间的变迁而发生变化。为了保持GIS中数据的时效性,应对GIS数据进行更新,即修改陈旧数据用新数据代替或补充。此时,必须进行多方面的调查与分析。了解现存于数据库中哪些空间数据发生了变化,变化程度多大,以确定更新的方法。
空间实体更新的方法是:若变化程度不大,例直接使用图形编辑的方法进行;若变化区域面积大,则采用下列方法和步骤,如图3-10所示。
(l)重新数字化已经变化区域的空间实体;
(2)用新数据代替陈旧数据。
图3-10 空间实体数据的更新
((a)——原始数据库;(b)——变化区域:(C)——更新结果)
不论哪种方法,都需要建立空间实体图形与属性数据的—一对应关系。
属性数据的更新,相对来说要简单一些。因为目前许多GIS软件采用关系数据库管理系统( DBMS)来管理属性数据,且为用户提供了较强的数据管理功能。
因此可直接利用属性数据库管理模块提供的功能,提取属性已变化的空间实体,对相应的属性进行编辑处理。
表3-3 属性数据库管理模块
文件管理 |
结构设计 |
数据编辑 |
数据查询 |
统计报表 |
创建文件 |
设计新结构 |
添加数据 |
浏览数据 |
统计总数 |