矢量数据的编码相对比较简单,它主要是通过记录坐标点的数值来实现,但是有以下要注意的问题:
(一)参照系
在表达一个坐标时,如果不指明参照系,其数值是毫无意义的。例如在解析几何中,有两种常见的坐标系,平面直角坐标系和极坐标系。在这两种坐标系中,其坐标数值的意义是完全不同的。
在地理信息系统中,这样的问题同样存在。由于地球是一个不规则的椭球体;而在GIS中,地理实体要表现在二维的平面直角坐标系中,就需要投影变换。目前有上百种投影方式,并且,描述地球椭球体的参数也不一致。为了使各种矢量数据的坐标具有可比性,需要针对不同的参照系进行坐标变换。
目前,在地理信息系统中常采用的坐标记录方式是经纬度坐标,以及较大(≥1∶100万)的比例尺,采用高斯-克吕格投影的地形图中采用的公里网坐标。
(二)非空间数据
上面提到,地理实体有空间属性和非空间属性。非空间的属性数据一般是结构化的,可以利用关系型数据库进行管理;而空间属性数据通常是非结构化的,采用文件进行管理,其间的连接通过编码来实现。例如,在点矢量文件中,可以为一个点实体,如北京,编码为10,在存储非空间数据的数据表中,必然存在一个字段,如“编码”,描述了编码属性,如果该数据表中某一条记录的“编码”字段数值为10,则该记录就是北京的属性数值。
现在,随着数据库理论的发展,特别面向对象数据库技术的研究和应用,越来越多的GIS平台软件倾向于将空间数据和非空间数据在数据库中进行一体化的管理,以支持数据的分布,并且增强系统的适应能力。
(三)面实体的记录编码
如上所述,在地理信息系统中,面实体是通过记录边界来进行编码存储的,而边界是封闭的环形,所以直接记录环上点的坐标即可。另外在现实世界中,面实体常常会有“飞地”和“洞”情形存在,这要求编码时需要记录多个环,并且加以区分(图3-6)。
在图3-6(a)中,只要从第一点出发,顺时针依次记录各点坐标,编码成为:(x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6)即可;对于(b)中的多边形,需要记录三个环,同时要指明哪一个是“飞地”,哪一个是洞。
上述基于环的多边形方法固然简单,但是在实际的地理信息系统应用中,却存在较多的问题。在现实世界中,多边形实体存在的邻接关系,表现为如图3-7的样式。
在这种情形下,如果继续采用基于环的编码方式,那么相邻多边形的公共边被重复记录,造成数据冗余;其次,在编辑修改边界时需要同时修改两个多边形的记录;最重要的是,这种记录方式难以体现面实体之间相邻关系,而相邻是GIS空间分析中很重要的一种空间关系。
所以在目前的地理信息系统中,通常采用基于弧的多边形编码方式,两个多边形的边界是一段弧,弧段的坐标编码方式与线实体一致。然后,每个多边形记录它由哪些弧组成(表3-1):
这样,编码冗余较少,并且很容易判断出哪些多边形相邻,如湖北和湖南通过公共弧段A而具有邻接关系。
由于基于弧段的多边形编码描述了相邻关系,所以也称为拓扑结构;而基于环的,则成为非拓扑结构。拓扑多边形编码在实现时最大的问题是建立和维护拓扑关系。目前拓扑生成算法已经成熟,不同的系统之间根据不同的需要,拓扑结构的具体实现略有差异。
本文标题:矢量数据(2)
手机页面:http://m.dljs.net/dlsk/gisjue/11060.html
本文地址:http://www.dljs.net/dlsk/gisjue/11060.html