GIS矢量图形系统设计与实现

2012-03-23 02:13漆首令
城市建设理论研究 2012年4期

漆首令

摘要:分析了目前GIS开发与应用的现状和从底层开发小型GIS矢量图形系统的意义;提出了一种小型GIS矢量图形系统的设计方案;并就该小型GIS矢量图形系统的实现,探讨了其中相关的数据组织、属性数据设计、符号库等技术问题。

关键词:GIS;矢量图形系统;底层开发;符号库

Abstract: the analysis of the current development and application of GIS and the present situation of development from the bottom small GIS vector graphics system of meaning; Puts forward a small GIS vector graphics design scheme of the system; And the small GIS vector graphics system is realized, and discusses the relevant data of the organization, attribute data design, technical problems such as library symbols.

Keywords: GIS; Vector graphics system; Base development; Symbols library

中图分类号: N945.23 文献标识码:A文章编号:

地理信息系统(Geographical Information System,简称GIS)是对地理空间数据及相关信息进行采集、管理、查询、处理、分析、表达和输出的计算机系统。它始于上世纪60年代,之后随计算机硬、软件技术的发展而迅速发展,并获得广泛的应用。

GIS基础软件是各种GIS研究和应用的平台。当前市场上有各种GIS基础软件可供选用。国外主要有ArcGis、MapInfo、MicroStation等,国内主要有SuperMap、吉奥之星、MapGis、GeoBean等。本文就从一个小型GIS矢量图形系统的底层开发和设计入手,介绍和分析了本GIS矢量图形系统的方案设计和实现技术以及基本功能。

1 自行开发GIS系统对GIS技术应用发展的意义

1.1 GIS的主要开发方式

目前GIS的开发,从大的方面来说,主要包括底层开发和二次开发。按照二次开发实现方式的不同,可以分为以下几种:基于宏语言的开发,基于专用开发语言的开发,基于函数调用的开发,基于OLE/DDE(对象的连接与嵌入技术/动态数据交换技术)方式的开发和基于组件的开发等[1]。二次开发由于借助了GIS厂商提供的专业开发工具,开发人员可以在较高的起点上直接进行GIS系统的组织开发,开发的系统性和可靠性较好,同时,对开发人员的要求低,简单易学。但是,二次开发也存在着一些不可克服的缺点:可扩展性差,较为庞大,软硬件要求高,没有系统的版权等。而底层开发正好可以克服这些缺点,直接从底层进行GIS系统基础系统开发,具有较强的灵活性,易于扩展成各种应用系统,可以最大限度地满足客户的需求,并可拥有自己的版权等。

1.2自行开发GIS系统对GIS技术应用发展的意义

目前GIS软件趋于大型化和全面化,而与GIS相关的其它行业,往往只用到GIS的某一方面或某些方面,如果购买市场上那种“大而全”的GIS软件,一方面,造成了资金的浪费——即不仅要为用不着的功能购买庞大的GIS软件产品,而且还不得不为此额外付出人员培训和相应较高配置的计算机硬件费用;另一方面,大型软件往往加大了用户学习的难度,不利于GIS技术的普及和应用。在这种情况下,采用二次开发,开发出满足不同行业需求的应用软件就成了当前GIS开发的主流。但是,二次开发,扩展性差,对于其已有的功能,可以很容易的进行实现,对于其没有提供的功能,很难或者根本无法实现。并且开发出来的软件,需要GIS厂商开发工具的支撑,并要受到开发工具升级等各种因素的制约。特别在教学应用或算法研究方面,商品软件不可能提供给用户深入系统内部的软件接口,因此,自行开发小型的GIS基本系统对教学和研究来说是必不可少的。

2 GIS矢量图形系统的设计与实现

2.1 功能需求

不同的行业对GIS矢量图形系统的需求是有差别的。建立一个城市信息管理系统,要求矢量图形系统具有丰富的图形元素、丰富的线型、巨大的存储容量、完整的输入和输出功能、强大的地图编辑功能;而建立一个地图查询系统,则只需要地图显示和操作的基本功能。开发一个基本的GIS矢量图形系统,一般需要如下的功能[2]:

1)完善的图形元素。应具备处理点、直线、矩形、圆、折线、多边形区域、标注文本等;

2)完善的图形操作。应具备图形的放缩、漫游、回溯、选择等;

3)相对完善的图形I/O与编辑。鼠标交互绘图和编辑、其它流行GIS开发工具及相关软件的数据接口、绘图输出;

4)图层管理。按层进行空间数据的管理,能够设置层的可显示、可选择、可编辑等不同的工作状态;

5)线型、符号、颜色、字体的设置和多边形区域的渲染。

2.2 GIS矢量图形系统的设计思路

从底层进行小型GIS矢量图形系统的开发,往往需要花费大量的时间。这些时间主要用于了图形编辑系统的开发,这部分的开发相当繁琐和费时。如果在开发的初期,开发出具有简单图形编辑功能,而有友好的第三方GIS软件数据接口功能的初期软件,在后期的版本升级中不断完善其编辑功能,可以达到初期投资少,见效快的目的,是一种不错的开发思路。另外,在GIS数据管理方面,目前GIS软件趋于将空间数据和属性数据同时存入一个数据库中,这样做可以保证数据的完整性和安全性。同时,也突破了文件对海量数据存储的瓶颈。因此,对于小型GIS系统的开发可以直接将一个GIS系统的数据全部以数据库的方式进行存储,从而保证开发技术的先进性。自主开发的小型GIS矢量图形系统。可以先完成了图形输入编辑、数据接口、图形操作、图层管理、符号库管理及制作、简单的空间分析、查询定位、打印输出、文件存储、属性数据管理等功能,下一步由文件存储转向由数据库存储等方面的开发,将是未来的重点。

2.3 GIS矢量图形系统的实现方案

GIS矢量图形系统可以基于Microsoft Visual C++.NET直接从底层开发而成的,其空间数据模型(由点、线、面、文本组成)、空间数据库的组织,独立于任何其它的GIS产品,很适合于进行行业或者中小规模应用型GIS系统的开发。这里主要侧重介绍矢量数据模型、軟件的属性数据管理以及符号库设计等。

2.3.1 GIS矢量图形系统矢量数据模型

GIS矢量图形系统矢量数据的组织,可以分为五个层次:工程(Project)、图层集(Layers)、图层(Layer)、特征集(Features)、特征(Feature)。其大多数功能就是基于这五个类的相互作用实现的,它们是GIS矢量图形系统开发的重心。

1) 工程

工程是应用的最高层次,也就是用户为解决应用问题而建立的一个GIS应用。一个工程,包含一个或多个地图(图层),同时也包含一些非空间信息。

2)图层集

图层集是由多个空间图层组成的能满足一定需求的集合,主要用来对图层进行管理,如图层的可视,选择、编辑、属性链接及属性管理。

3)图层

图层是由地理空间对象(点、线、面、文本)构成的集合,包括特征集和选择集(执行选择操作后返回的特征构成的集合)。每个图层可以包括任意类型的图素,每个图层由一个文件组成。

4)特征集

特征集是特征的集合,包括各种各样的特征。

5)特征

特征是图形元素的父类,主要的图形元素有点、线、折线、多边形、矩形、圆角矩形、圆、弧、标注文本等。

2.3.2 GIS矢量图形系统的内部属性数据

GIS矢量图形系统可以采用自定义的内部属性数据组织方式(类似于MapInfo),用户可以任意定义属性数据字段(字符型,整形、长整形、字符串型、单精度型、双精度型),并可以进行属性数据的编辑,公用字段为ID(每个图层的ID唯一,不同图层ID可以重复),一个图层对应于一个属性表结构,属性数据通过唯一的公用ID标识与图形数据相关联。程序还可以通过内部属性数据和外部属性数据库的关联字段,进行内部属性数据与外部数据库的链接。

2.3.3 GIS矢量图形系统的外部属性数据

传统的GIS,空间数据和属性数据都采用文件的存储方式。一个GIS应用往往涉及到很多的文件,在对文件进行复制删除过程中,容易造成文件的丢失。另外,地理数据的数据量非常之大,文件结构难以胜任。随着计算机软硬件技术的发展,采用数据库进行地理数据的管理,受到人们的青睐。目前,流行的GIS平台都提供空间数据的引擎,从而将地理数据全部存入数据库中[3]。GIS矢量图形系统开发采用ADO技术,先将属性数据存入了数据库,而空间数据仍是采用文件的管理方式。后边再将应用Oracle Spatial来管理空间数据和属性数据,从而实现一个GIS应用的空间数据和属性数据全部由数据库来管理,以保证地理数据的完整性和安全性,也方便用户对地理数据的管理。

2.4符号库设计

符号库设计一般有两种方式,一种是嵌入图形文件内部,实现符号库与文件的独立,另一种方法是采用编码索引,图形文件与符号库相关联,图形文件的显示离不开符号库。GIS矢量图形系统符号库可以采用第二种方式,系统库由三个单独二进制文件组成,分别是单元符号库(*.cell)、线型库(*.lin)、图案库(*.pat)。符號库与系统相关,在系统中可实行符号库的管理及符号的制作,符号的可视化必须通过符号编码在符号库中的索引调入。示例如图1:

2.5 GIS矢量图形系统的功能

GIS矢量图形系统的基本功能如下:

方便而完备的数据编辑,包括图素的节点操作,图形移动,拷贝、旋转、修剪、平移,以及绘制各种图形,还包括撤销和回撤功能,同时,通过可视化界面可以对图素的基本属性进行修改。

强大的地图操作,如图形放大、缩小、窗口放大、全屏、漫游、点选、矩形选择、圆形选择等。

方便的工程管理,图层的添加、删除、上下移动、可视性、可编辑、可选择的管理,以及图层的属性链接、数据导出、数据浏览和编辑。

属性数据管理,可以任意定制自己的属性字段,以及方便的属性数据编辑,并可以通过属性链接浏览外部数据库。

3 总结

小型GIS矢量图形系统的开发是一个长期的过程,开发中应分清主次。开发初期应把重点放在系统整体框架的构建、数据接口、图形绘制、地图操作、地图查询定位以及简单空间分析、图形符号库设计等方面。在开发后期,可以根据不同行业的需求在软件已有的基础上进行扩充,不断完善和拓展系统的功能。

参考文献:

[1] 陈建春.矢量图形系统开发与编程[M].北京:电子工业出版社,2004,1:2-8.

[2] 陈正江,汤国安,任晓东.地理信息系统设计与开发[M].北京:科学出版社,2005,2:271-276.

[3] 吴信才.地理信息系统原理与方法[M].北京:电子工业出版社,2002,3:20-22.

[4] Shashi Shekhar, Sanjay Chawla著(谢昆青等译).空间数据库[M].北京:机械工业出版社,2004,1:4-8.

注:文章内所有公式及图表请以PDF形式查看。