在过去20年中,矢量数据模型是GIS中变化最大的方面,例如,ESRI公司所开发每种新软件包都对应一种新的矢量数据模型,ArcView对应Shapefile,Arc/Info对应Coverage,ArcGIS对应Geodatabase。Shapefile和Coverage是地理关系数据模型,它利用分离的系统来存储空间数据和属性数据,而Geodatabase是基于对象数据模型,它把空间数据和属性数据存储在唯一的系统中。
Shapefile是非拓扑的,Coverage是拓扑的。
Shapefile多边形对于共享边界实际上有重复弧段且可彼此重叠,不同于Coverage所用的多个文件,它用几何学性质存储两个基本文件:以.shp为扩展名的文件存储要素几何学特征;以.shx为扩展名的文件保留要素几何特征的空间索引。
Coverage支持三种基本拓扑关系:连接性、面定义、邻接性。
Shapefile:一种基于文件方式存储GIS数据的文件格式。至少由.shp,.dbf,.shx三个文件作成,分别存储空间,属性和前两者的关系。Shapefile是GIS中比较通用的一种数据格式。
Coverage:一种拓扑数据结构,一般的GIS原理书中都有它的原理论述。数据结构复杂,属性缺省存储在Info表中。目前ArcGIS中仍然有一些分析操作只能基于这种数据格式进行操作。
Geodatabase:ArcInfo发展到ArcGIS时候推出的一种数据格式,一种基于RDBMS存储的数据格式,其有两大类:
1.Personal Geodatabse用来存储小数据量数据,存储在Access的mdb格式中。
2.ArcSDE Geodatabse存储大型数据,存储在大型数据库中Oracle,SqlServer,DB2等。可以实现并发操作,不过需要单独的用户许可。
Shapefile数据模型
Shapefile是ArcViewGIS3.x的原生数据格式,属于简单要素类,用点、线、多边形存储要素的形状,却不能存储拓扑关系,具有简单、快速显示的优点。一个shapefile是由若干个文件组成的,空间信息和属性信息分离存储,所以称之为“基于文件”。
每个shapefile,都至少由三个文件组成,其中:*.shp存储的是几何要素的的空间信息,也就是XY坐标。*.shx存储的是有关*.shp存储的索引信息,它记录了在*.shp中,空间数据是如何存储的,XY坐标的输入点在哪里,有多少XY坐标对等信息。*.dbf存储地理数据的属性信息的dBase表。这三个文件是一个shapefile的基本文件,shapefile还可以有其他一些文件,但所有这些文件都与该shapefile同名,并且存储在同一路径下。
其他一些较为常见的文件:*.prj如果shapefile定义了坐标系统,那么它的空间参考信息将会存储在*.prj文件中;*.shp.xml这是对shapefile进行元数据浏览后生成的xml元数据文件;*.sbn和*.sbx这两个存储的是shapefile的空间索引,它能加速空间数据的读取,这两个文件是在对数据进行操作、浏览或连接后才产生的,也可以通过ArcToolbox->DataManagementTools->Indexes->AddspatialIndex工具生成。
当使用ArcCatalog对shapefile进行创建、移动、删除或重命名等操作,或使用ArcMap对shapefile进行编辑时,ArcCatalog将自动维护数据的完整性,将所有文件同步改变。所以需要使用ArcCatalog管理shapefile。虽然Shapefile无法存储拓扑关系,但它并不是普通用于显示的图形文件,作为地理数据,它自身有拓扑的。比如一个多边形要素类,shapefile会按顺时针方向为它的所有顶点排序,然后按顶点顺序两两连接成的边线向量,在向量右侧的为多边形的内部,在向量左侧的是多边形的外部。
由于20世纪90年代地理信息的迅速发展以及ArcViewGIS3.x软件在世界范围内的推广,shapefile格式的数据使用非常广泛,数据来源也较多。很多软件都提供了向shapefile转换的接口(如MapInfo、MapGIS等)。ArcGIS支持对shapefile的编辑操作,也支持shapefile向第三代数据模型geodatabase的转换。
Coverage数据模型
Coverage是一个集合,它可以包含一个或多个要素类。在第一个商业化GIS软件Arc/INFO之前,计算计划的图形表示源自通用的CAD软件,属性信息和几何要素放在一起,不利于空间信息的描述和分析。
Coverage的优势:
(1)空间数据与属性数据关联。空间数据存储于建立了索引的二进制文件中,属性数据存放在DBMS表中,二者以公共的标识编码关联。
(2)矢量数据间的拓扑关系得以保存。
Geodatabase数据模型
Geodatabase作为ArcGIS的原生数据格式,体现了很多第三代地理数据模型的优势。随着IT技术的发展,普通的事务型数据的管理模式,早已从传统的基于文件的管理转向利用基于工业标准建立的关系型数据库进行管理,这种基于数据库的管理方式的优点是不言而喻的。那么带有空间信息的地理数据是否也可以利用这种非常成熟的数据库技术进行管理呢?于是ESRI推出了geodatabase数据模型,利用数据库技术高效安全地管理我们的地理数据。
Geodatabase可以分为两种,一种是基于Microsoft Access的personalgeodatabase,另一种是基于oracle、SQL Server、Informix或者DB2的enterprisegeodatabase,由于它需要中间件ArcSDE进行连接,所以enterprisegeodatabase又称为ArcSDEgeodatabase。由于Microsoft Access自身容量的限制,personalgeodatabase的容量上限为2GB,这显然不能满足企业级的海量地理数据的存储需求。于是可以将geodatabase扩展为ArcSDEgeodatabase,底层数据库可以使用oracle这样的大型关系数据库,能够存储近乎“无限”的海量数据(仅受硬盘大小的限制)。虽然底层使用的数据库各不相同,但是geodatabase给用户提供的是一个一致的操作环境。
在geodatabase中,不仅可以存储类似shapefile的简单要素类还可以存储类似coverage的要素集并且支持一系列的行为规则对其空间信息和属性信息进行验证表格、关联类、栅格、注记和尺寸都可以作为eodatabase对象存储。这些在perasonalgeodatabase和ArcSDEgeodatabase中都是一样的(栅格的存储有点小差异,但对用户来说都是一样的)。
Geodatabase的模型结构:
(1)对象类(Objectclass)
对象类是一种特殊的类,没有空间特征。其实例是可关联某特定行为的表记录。如,某地块的主人,在“地块”“主人”间可建立某种关系。
(2)要素类(Featureclass)
要素类是同类空间要素的集合。如,河流、道路、植被、电缆等。要素类可以独立存在,也可以具有某种联系。当不同的要素类之间存在关系时,就将其组织到一个要素数据集(Featuredataset)中。
(3)要素数据集(Feature dataset)
要素数据集由一组具有相同空间参考(Spatialreference)的要素类组成。将不同要素类放入要素数据集的原因:
a.专题归类表示——当不同的要素类属于同一范畴。比如,全国范围内某种比例尺的水系数据,其点线面类型的要素类可组织成同一个要素数据集。
b.创建几何网络——在同一几何网络中充当连接点和边的各种要素类,须组织到同一要素数据集中。比如,配电网络中,有各种开关、变压器、电缆等,它们分别对应点或线类型的要素类,在配电网络建模时,我们要将其全部考虑到配电网络对应的几何网络模型中。此时这些要素类就要放在统一要素数据集下。
c.考虑平面拓扑——共享公共几何特征的要素类。比如,用地、水系、行政区界等。当移动其中一个要素时,其公共部分也要一起移动,并保持这种公共的几何关系不变。
(4)关系类(Relationshipclass)
定义不同要素类或对象类之间的关联关系。如我们可以定义房子和主人之间的关系、房子和地块之间的关系等。
(5)几何网络(GeometricNetwork)
在若干要素类的基础上建立起的新类。定义几何网络时,我们指定哪些要素类加入其中,同时指定其在几何网络中扮演什么角色。比如,定义一个供水网络,我们指定同属一个要素数据集的“阀门”、“泵站”、“接头”对应的要素类加入其中,并扮演“连接”的角色;同时,我们要指定同属一个要素数据集的“供水干管”、“供水支管”、“入户管”等对应的要素类加入供水网络,由其扮演“边”的角色。
(6)Domains
定义属性的有效范围,可是连续的,也可是离散数值。
(7)Validationrules
对要素类的行为和取值加以约束的规则。如不同管径的水管连接必须通过合适的接头,规定一个地块可拥有一到三个主人等。
(8)Rasterdatasets
用于存放栅格数据。支持海量栅格数据,支持影像镶嵌,可通过建立“金字塔”形索引,在使用时指定可视范围提高检索和显示效率。
(9)TINDatasets
ARC/INFO的经典数据模型,用不规则分布的采样点的采样值构成不规则的三角集合。用于表达地形或其他类型的空间连续分布特征。
(10)Locators
定位参考和定位方法的组合。对于不同的参考,用不同的定位方法进行定位操作。所谓定位参考,不同的定位信息有不同的表达方法。在Geodatabase中,有四种定位信息:地址编码、、地名及邮编、路径定位。定位参考数据放在数据库表中,定位器根据该定位参考数据在地图上生成空间定位点。