博客很久都没有更新了,可能今年上半年更新会比较慢一点,谢谢大家的关注。
GIS引擎是GIS软件及其应用的核心,在整个GIS软件系统中处于核心地位。目前主流的空间数据模型有两种:OGC几何对象模型,ESRI的几何对象模型。本文分析OGC的简单要素规范并在此基础上实现一个简化的GIS引擎。
OGC,是OpenGIS组织的简称,OGC是一个非赢利性组织,目的是促进采用新的技术和商业方式来提高地理信息处理的互操作性(Interoperability),它致力于消除地理信息应用(如地理信息系统,遥感,土地信息系统,自动制图/设施管理(AM/FM)系统)之间以及地理应用与其它信息技术应用之间的藩篱,建立一个无“边界”的、分布的、基于构件的地理数据互操作环境。
OpenGIS定义的几何对象模型是平台无关的,在任何平台上都可以实现。基类Geometry派生出Point,Curve,Surface,GeometryCollection等派生类。Geometry具有空间参考,表达空间数据的坐标系和投影信息。OGC简单要素规范[1]定义的几何对象模型如下图:
图1:SFA SQL对象模型图
从上图可以看出,最新的SFA SQL1.2.1版本中新增了Triangle和TIN两种类型,Triangle继承自Polygon是多边形的特例,TIN由一系列的三角形组成。OGC简单要素规范是为了兼容各个GIS厂商的数据模型,以达到空间数据的互操作。
2、面向对象的空间数据模型设计与实现
由于地理信息系统要管理大量的空间数据,面对越来越复杂的应用,传统的实体对象模型和基于拓扑关系的数据模型已经不能满足要求了,因此越来越多的研究人员开始研究新的模型,其中面向对象模型就是一种适合空间数据表达的模型。面向对象是一种程序设计的技术,面向对象就是以接近人类的思维方式的思想,将客观世界的一切实体模型化为对象,面向对象的GIS数据模型有利于将空间数据和属性数据紧密集成。本文根据SFA-SQL规范,在此基础上做一些改动,建立一套适合目前GIS应用的空间数据模型。
2、1地理对象设计
在GIS应用中,一般空间数据都表现为地图,地图数据的组织具有一定的层次结构,地图是由多个图层组合而成,一个图层是由各个地理实体组成的。地理实体是由它关联的几何对象和它的一组属性构成的。
地图(Map)是空间数据组织的最高层次,是多个地图图层的在同一个范围内的叠加,包括一些基本信息,如地图图名,地图数据源,地图比例尺等信息。
图层(Layer)是同一类型的地理实体的集合,比如一个道路图层,一个水系图层。一个图层内所有地理实体应该具有相同的几何类型,相同的属性结构。每个图层都可以用一张表表示。
地理实体是代表一个GIS对象,相当于数据库中的一条记录,包括地理对象的几何体本身和相应的属性数据。
2、2面向对象GIS模型设计
根据2、1提出的概念模型,本文设计一套小型空间数据引擎。其中包括几何对象的组织,地图和图层等地图要素的组织。其设计的UML类图如下:
图 2空间数据模型结构图
上述的结构图包括了基本几何对象和图层对象,对于基本的GIS应用已经可以满足要求。
今后还要继续完善,尽量遵循OGC的标准实现自己的引擎。