地图数字化

概述

无论古代、现代还是将来,地图总是重要的信息形式。在计算机图形图像技术应用于地图制作之前,各部门一般都使用纸质地图或工程图纸,纸图在查阅、计算距离和标注地名符号等方面都是人工操作;另外不能对一幅纸地图进行修改、缩小比例和分层读图,至于地图局部放大只能借助于放大镜,被放大的区域很小且操作不方便。

随着技术的发展,人们对地图的要求进一步提高。由于传统纸地图效率、速度和精度很低,因此难以适应现代和未来科技发展。而通过GIS工具,可以把纸地图经过一系列处理而转换成可以在屏幕上显示的电子化地图,可以满足人们使用地图的新的要求。为了讨论问题方便,将矢量电子地图定义如下:

当纸地图经过计算机图形图像系统光——电转换量化为点阵数字图像,经图像处理和曲线矢量化,或者直接进行手扶跟踪数字化后,生成可以为地理信息系统显示、修改、标注、漫游、计算、管理和打印的矢量地图数据文件,这种与纸地图相对应的计算机数据文件称为矢量化电子地图。这种地图工作时需要有应用软件和硬件系统的支撑。对矢量化地图的操作是以人机交互方式,通过GIS应用软件对硬件设备的控制来实现的。

在硬件系统及相应的地理信息系统软件支持下,矢量电子地图与纸地图相比有如下优点:

.计算距离和标注地名符号快速准确;

.可对地图局部放大、全图缩小和移动显示、漫游功能很强;

.分层显示地图(当对地图上各种信息分不同层归类存放后,则可以显示某些层,关闭不显示的层);

.可以以图元为单位进行信息编缉修改,人机交互画线标注符号文字,删除地图上多余的信息;

.可以通过计算机网络进行电子地图传递,提供信息共享,传递的速度快,保密性强;

.如果能有效解决地图符号自动分割和识别问题,则能实现地图的智能矢量化。这里智能化是指自动矢量化和自动标注符号,最佳路径优化选择和自动跟踪目标等。

矢量电子地图与点阵地图图像相比有如下优点:

.相同信息量下前者的文件相对要小得多,图越复杂表现越明显;

.前者可以以图元为单位进行信息编缉修改删除,人机交互画线标注符号文字;后者只能以像素为基本单位(如矩形图像块)进行拷贝,移动和删除,即它的编辑功能很差;

.前者可对所有图元分层显示,后者只能做到对整图某区域(矩形区)的开窗显示控制。

地图数据类型

为地图自动制图目的所搜集的上述资料,要适应计算机处理的需要,必须同时考虑通过这些资料,最后能获取各种不同性质的地图数据。

为此,可以定义地图数据是载荷地理信息的数字集合。它们应指被输入到某种计算机系统中进行处理,必要时可重新生成人的视觉可以感受的地理信息。在这一层意义上,地图数据可以分为:

1)空间数据(或图形数据)

空间数据是构成地图内容要素的几何图形,例如地图上的井、山峰、灯塔、河流、道路、等值线、湖泊、森林界线和土壤类型界线等。为表示这些要素在二维平面上空间图形的定位特征,常用一对平面直角坐标(X,Y)来表示,这种地图数据称为矢量数据;或用其通过栅格单元的左下角坐标(行和列)来表示,称此为栅格数据。

地图要素图形大致可以分为点、线、面三种基本类型。

面——可由环绕它们的线表示;也可以由其区域内的点表示;

线——可离散化成为点的集合;

而点则能用一对平面坐标系中的坐标来确定。

在实际应用中,仅有坐标数据是不够的,必须依照不同地图要素的意义,通过特别的编码加以区别。

2)语义数据(属性数据)

语义数据又称为非几何数据,包括定性数据和定量数据。定性数据用来描述要素的分类或对要素进行标名。定量数据是说明要素的性质、特征或强度的,例如距离、面积、人口、产量、收人、流速,以及温度和高程等.

对于语义数据,基本上是一个地理编码问题。以科学的分类分级系统为基础,对地理环境中各基本实体及其联系进行编码,以便唯一地对某一系统中所有地图要素进行认别和处理,这种功能不仅在用户环境中而且在计算机系统内也是十分重要的。

当前,要为满足各方面全部需求而建立一种通用的编码是不可能的。因此,最现实的是研制多样性编码满足各部门的不同需要,同时兼顾符合建立数据库的规定。一般来说编码的一些基本要求包括:

(2.1)要素类别——如地名,实体类型及等级等;

(2.2)要素特征(属性)——每一要素可具有与它有联系的大量的属性值,它承载关于要素特征的信息;

(2.3)作用范围的描述——例如,一个区域的土壤类型;

(2.4)地理定义——在某些情况下编码可以是一个实体集合的间接参考,而集合中的每一个实体也会被它自身的地理代码所说明,如水系、地质层的编码。

在GIS数据录入过程中,空间数据的录入更为重要,因为处理空间数据和空间信息正是GIS的核心功能。与属性数据录入相比,空间数据录入的工作量更大,并且需要GIS软件工具的支持(利用通用的数据库软件即可以进行属性数据录入)。

数字化仪数字化

手扶跟踪数字化

尽管手扶跟踪数字化(Manual Digitising)工作量非常繁重,但是它仍然是目前最为广泛采用的将已有地图数字化的手段。

利用手扶跟踪数字化仪可以输入点地物、线地物以及多边形边界的坐标。其具体的输入方式与地理信息系统软件的实现有关,另外一些GIS系统也支持用数字化仪输入非空间信息,如等高线的高度,地物的编码数值等等。

手扶跟踪数字化仪的通讯和参数:

手扶跟踪数字化仪是通过RS-232(串口)接口与计算机进行连接的,为了能够进行正确的数据发送和接收,需要进行通讯参数的设置,包括波特率、数据位、校验位、停止位等等。此外,数字化仪还包括坐标原点、分辨率、采点方式、数据格式等参数。数字化仪的参数通常可以利用数字化板上的开关和菜单确定。为了保证数据录入的正确,必须设置数字化软件的参数与数字化仪的一致。

在进行数字化之前,首先要确定需要数字化哪些信息,在目前由于大多数GIS软件对空间数据采用分层管理,所以要确定输入哪些图层,以及每个图层包含的具体内容。另外,由于数字化过程不可能一次完成,在两次输入之间地图的位置可能相对于数字化板发生错动,这样前后两次录入的坐标就会偏移或旋转。解决该问题的办法就是,在每次录入之前,先输入至少三个定位点(Tick Marks),或称为注册点(Register Points),这些点相对于地图的位置是固定的,这样两次输入的内容就可以根据定位点坐标之间的关系进行匹配。

通常,数字化仪采用两种数字化方式,即点方式(Point Mode)和流方式(Stream Mode),点方式是当录入人员按下游标(Puck)的按键时,向计算机发送一个点的坐标。输入点状地物要素时必须使用点输入方式;而线和多边形地物的录入可以使用点方式,在输入时,输入者可以有选择地输入曲线上的采样点,而采样点必须能够反映曲线的特征。

流方式录入能够加快线或多边形地物的录入速度,在录入过程中,当录入人员沿着曲线移动游标时,能够自动记录经过点的坐标。采用流方式录入曲线时,往往采集点的数目要多于点方式,造成数据量过大,一个解决的方案是对记录的点进行实时采样,即尽管系统接收到了点的坐标,但是可以根据采样原则确定是否记录该点 [1]_

目前大多数系统采取两种采样原则,即距离流方式(Distance Stream)和时间流方式(Time Stream)(图6-1)。

../../_images/img_115.png

距离流方式和时间流方式

  1. 距离流方式是当前接收的点与上一点距离超过一定阈值,才记录该点;

  2. 采用时间流方式时,按照一定时间间隔对接收的点进行采样。

采用时间流方式录入时,一个优点是当录入曲线比较平滑时,录入人员往往移动游标比较快,这样记录点的数目少;而曲线比较弯曲时,游标移动较慢,记录点的数目就多。而采用距离流方式时,容易遗漏曲线拐点,从而使曲线形状失真。所以在保证曲线的形状方面,时间流方式要优于距离流方式。

在实际的录入过程中,可以根据不同的录入对象选择不同的录入方式。例如,当录入地块图时,由于其边界多为直线,并且点的数据较少,可以采用点方式录入;录入交通线时,因为要保证某些特征点位置的准确性,也可以使用点方式;而等高线的录入由于数据量大,使用流方式可以加快录入速度。

其它的矢量数据录入方式:

尽管手扶跟踪数字化是目前最主要的矢量格式地理数据的录入手段,但是在某些场合下,也可以采用其它的数据输入方式:

其它数据转换:

其它格式数据的转换包括三种情形:

  1. 矢量格式数据(往往是由其它GIS软件制订)的转换;

  2. 数据,往往表现为关系数据库表的形式(表6-1);

  3. 描述信息,以关系数据表形式存取,同样可以转换为不太精确的坐标数据(表6-2)。

表6-1:测站信息表(部分)

测站编码

经度

纬度

68013344

107.2

29.8

68026785

115.5

30.2

表6-2:企业员工信息表(部分)

姓名

住址

张三

北京市海淀区

李四

河北省石家庄市

键盘录入:

对于数据量较小、并且已知地物精确坐标的情况下,可以采用键盘录入。此外键盘录入也是录入属性数据的主要手段。

鼠标录入:

如果不愿意手扶跟踪数字化,而扫描矢量化又难以识别地物时,可以使用鼠标录入,通常是将地图扫描后,作为底图显示在屏幕上,用鼠标参照底图进行采点。由于鼠标定位不如数字化仪精确,所以一般用于输入一些示意图。

其它定点测量设备:

目前GPS已经成为流行的定位导航设备,它同样可以为GIS提供矢量格式的坐标数据。其它的定点测量设备包括平板测图仪等,使用这些设备,最重要的是要考虑精度问题。

曲线离散化算法

在数字化过程中,需要对曲线进行采样简化,即在曲线上取有限个点,将其变为折线,并且能够在一定程度上保持原有的形状。下面介绍Douglas-Peucker算法(图6-2)。

  1. 在曲线首尾两点A、B之间连接一条直线段AB,该直线称为曲线的弦;

  2. 得到曲线上离该直线段距离最大的点C,并计算其与AB的距离d;

  3. 比较该距离与预先给定阈值ε的大小,如果小于ε,则将该直线段作为曲线的近似,该段曲线处理完毕;

  4. 如果距离大于阈值,则用C将曲线分为两段ACBC,并分别对两段曲线进行1-3步的处理。

  5. 当所有曲线都处理完毕后,依次连接各个分割点形成的折线,即可以作为曲线的近似。

很明显,该算法是一个递归算法。

../../_images/img_210.png

曲线的离散算法

扫描矢量化及常用算法

扫描矢量化以及处理流程

随着计算机软件和硬件更加便宜,并且提供了更多的功能,空间数据获取成本成为GIS项目中最主要的成分。由于手扶跟踪数字化需要大量的人工操作,使得它成为以数字为主体的应用项目瓶颈。扫描技术的出现无疑为空间数据录入提供了有力的工具。

常见的地图扫描处理的过程如图6-3所示。由于扫描仪扫描幅面一般小于地图幅面,因此大的纸地图需先分块扫描,然后进行相邻图对接;当显示终端分辨率及内存有限时,拼接后的数字地图还要裁剪成若干个归一化矩形块,对每个矩形块进行矢量化(Vectorization)处理后生成便于编辑处理的矢量地图,最后把这些矢量化的矩形图块合成为一个完整的矢量电子地图,并进行修改、标注、计算和漫游等编辑处理。

../../_images/img_38.png

地图信息处理流程图

在扫描后处理中,需要进行栅格转矢量的运算,一般称为扫描矢量化过程。扫描矢量化可以自动进行,但是扫描地图中包含多种信息,系统难以自动识别分辨(例如,在一幅地形图中,有等高线、道路、河流等多种线地物,尽管不同地物有不同的线型、颜色,但是对于计算机系统而言,仍然难以对它们进行自动区分),这使得完全自动矢量化的结果不那么“可靠”,所以在实际应用中,常常采用交互跟踪矢量化,或者称为半自动矢量化。

将栅格图像转换为矢量地图一般需要以下一系列步骤[Musavi 1988]:

1)图像二值化(Threshold)

图像二值化用于从原始扫描图像计算得到黑白二值图像(Binary Image),通常将图像上的白色区域的栅格点赋值为0;而黑色区域为1,黑色区域对应了要矢量化提取的地物,又称为前景。

2)平滑(Smooth)

图像平滑用于去除图像中的随机噪声,通常表现为斑点。

3)细化

细化将一条线细化为只有一个像素宽,细化是矢量化过程中的重要步骤,也是矢量化的基础。

4)链式编码

链式编码将细化后的图像转换成为点链的集合,其中每个点链对应于一条弧段。

5)矢量线提取

将每个点链转化成为一条矢量线。每条线由一系列点组成,点的数目取决于线的弯曲程度和要求的精度。

除了上述五个步骤以外,还需要一些处理以方便图像矢量化过程,如图像拼接和剪裁等等,下面对这些操作以及相关算法进行描述。

图像拼接/裁剪

1)图像拼接

以两相邻地图图像的部分重叠区为基础,把它们合成为一幅整图的过程叫做图像拼接,分上下拼接和左右拼接。以左右拼接为例,取左图右边缘一个矩形区域A,取右图左边缘一个矩形区域B,如果A和B有一定的重叠区,可以利用计算机实现自动的匹配,其拼接算法如下:

(1.1)由A中右侧边缘从右至左依次取若干个列L1(O),L1(1),…,L1(n),以各列内像素灰度的长度序列为特征向量,分别求出以上各列的特征向量V1(O),V1(1),…,V1(n)

(2.2)自动拼接 即由B中左侧从左至右依次取若干列L2(n),L2(n-1),…,L2(O),以各列内像素灰度的长度序列为特征向量,分别求出以上各列的特征向量V2(n):V2(n-1),…,V2(O)。若向量序列[V1(O);V1(1),…,V1(n)][V2(O),V2(1),…,V2(n)]匹配,则转向步骤4。

(2.3)人工拼接 即固定A,通过人机交互控制B以一定步长上下左右移动,直到A和B重叠区对齐为止。

(2.4)根据步骤2匹配情况或步骤3的偏移情况对两相邻地图图像进行修正和合成。

2)图像裁剪

把一幅图像裁成两两相邻的规则图块的过程称为地图裁剪。图像裁剪非常简单,实际应用中,可以根据不同的硬件配置确定采用和不采用图像裁剪技术。

图像细化预处理二值图像平滑

在将地图扫描或摄像输入时,由于线不光滑以及扫描、摄像系统分辨率的限制,使得一些曲线目标带来多余的小分支(即毛刺噪声);此外,还有孔洞和凹陷噪声,如图6-4所示。如果不在细化前去除这几种噪声,就会造成细化误差和失真,这样会最终影响地图跟踪和矢量化。曲线目标越宽,提取骨架和去除轮廓所需的次数也越多,因此噪声影响也越大。

扫描图像的“毛刺”和“凹陷孔洞”

为了去除毛刺噪声的影响,可以采用如图5所示的3×3模板进行处理。处理的过程是:按点阵格式扫描图像上每一像素,只要图像相应区域与图6-5中的模板(包括其三次900旋转所形成的模板)匹配,则判定为毛刺,对应于模板中心的像素数值变为O。根据需要可进行多次这种匹配运算。

0

0

0

0

1

0

图6-5:去毛刺模板,X为任意数值

为了去除孔洞及凹陷噪声,我们采用如图6-6所示的模板进行处理,只要图像对应区域与该模板(包括其三次90O旋转)匹配,则区域中心点数值变为1。

X

1

X

1

0

1

去孔洞凹陷模板

总之,通过以上两种平滑处理,基本上消除了毛刺和孔洞凹陷噪声的影响,为进一步进行细化处理打下了基础。

图像细化(Thinning)

细化算法对二值图像进行处理,得到细化后的图像。线细化是处理包含线状地物二值图像的一种重要技术,在地图扫描处理中,由于地图上主要信息是不同粗细和不同形状的线,必须首先进行线细化,以准确、有效地提取这些线信息,并进一步完成跟踪矢量化。

线细化,就是不断去除曲线上不影响连通性的轮廓像素的过程,对细化的一般要求是:

  • 保证细化后曲线的连通性

  • 细化结果是原曲线的中心线

  • 保留细线端点

根据各种不同的应用,目前已经提出了许多线细化算法,如内接圆法、经典算法、异步算法、快速并行算法及并行八边算法等,不同的算法在处理速度和效果上各有其特点。

下面介绍一个常用的细化算法,其它算法基本是此算法的改进。

首先介绍几个相关的概念和符号。对于二值栅格图像中每个像素点p,以及该像素直接相邻的8个像素点(图6-7),令:

../../_images/img_47.png

像素周围的8个直接相邻像素

  1. N(p)p的邻点的数值的和;

  2. 图像像素联接数T(p),如果旋转着看像素周围的点,T(p)就是p周围8个点从0变成1的次数,它反映了像素邻点的联接的块数(图6-8)。

  3. p:sub:`W`p:sub:`E`p:sub:`S`p:sub:`N`分别指像素左侧、右侧、下边、上边邻点的数值。

../../_images/img_54.png

像素联结数

算法步骤如下[Zhang-Suen,1984]:

1:对于栅格图像中的每个点p,进行如下操作:

如果2≤N(p)≤6并且T(p)=1并且p:sub:`N`p:sub:`S`p:sub:`E`=0并且p:sub:`W`p:sub:`E`p:sub:`S`=0

则标志p点;

2:将所有被标志的栅格点赋值为0,如果没有被标志的点,则算法结束;

3:对于栅格图像中的每个点p,进行如下操作:

如果2≤N(p)≤6并且T(p)=1并且p:sub:`N`p:sub:`S`p:sub:`W`=0并且p:sub:`W`p:sub:`E`p:sub:`N`=0

则标志p点;

4:将所有被标志的栅格点赋值为0,如果没有被标志的点,则算法结束;

5:转到第一步。

图6-9显示了采用该算法细化的过程和结果。

../../_images/img_61.jpg

线状地物的细化

链码(弗里曼码)

链码是由弗里曼(Freeman)提出的用曲线出发点坐标和线的斜率来描述二值线图形的一种方法。图6-10(a)所示是链码的八个方向及它们的序号。图6-10(b)的细线的链码为(3,0)21100066567,其中(3,0)为起始点坐标,之后的数值序列描述了方向。

任意一条细线都可用链码序列表示为下式:

C=a:sub:`1`a:sub:`2`...a:sub:`n`,0≤a:sub:`i`≤7

如果始点a1和终点an重合,则说明曲线是闭合的。

../../_images/img_7.png

链码及其对细线的表示

(a):链码的8个方向;(b)细线

矢量线生成

扫描矢量化的最后一步是生成矢量线,可以很方便地将链式编码的每一条链转换成为一条矢量线。自然地,弯曲的矢量线比直线需要更多的点,这还取决于要求的精度。在矢量线生成过程中,可以使用Douglas-Peucher算法。

目前,自动扫描矢量化还不是完全可靠的,为了提高其可靠性,需要在模式识别方面做出更多的研究。