随着现代化建设的发展,地理信息系统(GIS)越来越多的被应用到城市的 建设中,用于城市的规划与管理。当下流行的智慧城市的建设,还有全国土地利 用调查,都是利用地理信息系统来完成的。对于一个基本的地理信息系统来说, 它包括以下几个组成部分:论文网
①矢量图形系统。
②数据库管理系统。
③连接系统。
④空间分析功能等[1]。 目前存在的居多矢量图形系统都是在某个功能比较完善的图形系统上进行
的二次开发。利用专业化的 GIS 软件进行二次开发时,虽然拥有着较高的开发平 台,不仅可靠而且简单易学,但也普遍存在着以下几点不足:
①可扩展性差。
②较为复杂,软硬件要求较高。
③没有系统的版权。
④代价高。 综上所述,针对用户的特定需求,开发一个符合自己需求的矢量图形系统是
非常必要的。
1.2 国内外研究现状
国外的 GIS 软件大多是由 ESRI 和 MapInfo 两家公司所开发,他们为产品提 供了一套完整的 GIS 解决方案,软件的功能是非常强大的,近乎完美。
在我国,随着信息化建设的快速发展,对于国产 GIS 软件的开发工作也得到 了很大的重视,并涌现了一批功能比较完善的软件产品[2],如北京超图公司研发 的 SuperMap 和中国地质大学研发的 MapGIS。这些国产 GIS 软件以强大的信息处 理能力和近乎完美的功能,结束了国外的大牌 GIS 软件对中国市场的垄断[3]。
利用 VC++开发的 GIS 矢量图形系统,其可行性在大量的 GIS 系统的研究和 开发成果中得到了验证。文献综述
赵强、宫辉力、赵文吉等[4]基于 ESRI 公司的 MapObjects2.0,探讨了在 VC++
环境下如何嵌入地理信息系统控件,如何使用 MapObjects 实现组件式 GIS 系统 的基本功能,并在此基础上,建立了西北干旱区的组件式 GIS 系统。谭永刚、彭 其渊、王振[5]采用 MapInfo 来构建地图空间数据,在 VC++环境下通过利用 MapX 地图控件设计实现了校园 GIS 系统,解决了对校园资源的空间及属性特征的综合 管理。张兴国、陈正江、梁小英[6]基于 VC++6.0,利用 GIS、数据库技术和面向 对象技术,开发了一个具有图形编辑功能,并且可以与第三方 GIS 软件数据接口 等功能的 GIS 矢量图形系统。孙艺珍、常心坦、李学文[7]基于面向对象技术的软 件工程思想,同样利用 VC++6.0,开发了一个用于煤矿安全分析可视化研究的矢 量图形系统。
1.3 研究内容及主要工作
本文主要探讨了如何利用 VC++开发一个能够满足实际生产中所需要的 GIS 矢量图形系统。重点研究了如何组织与存储图形元素类,如何对图形对象进行绘 制、操作和点选,具体包括以下几个方面:
(1)在探讨了面向对象的类的组织方法的基础上,本系统实现矢量图形元素 类的组织和存储,具有绘制直线、圆、标注文本、多线段等图形元素的功能[8]; (2)探索矢量图形系统坐标系的建立和坐标转换关系,实现图形的缩放、移
动、全屏显示、选中及取消选中图形等操作功能;
(3)利用 VC++设计 GIS 常用的一些算法,包括计算两条直线的交点、计算方 位角、计算两条直线的夹角。
2 矢量图形系统设计思路
2.1 开发思路
矢量图形系统最基本的就是实现图形的鼠标交互绘制和对图形元素的基本 操作。基于这两个组成部分,目前应用比较广泛的 GIS 专业软件平台大部分是用 VC++开发完成的。凭借其功能强大和开发灵活等特点,本文在 Windows 下采用 Microsoft Visual C++6.0 作为开发平台,以 VC++作为编程语言,以面向对象的 方式作为软件的开发模式[9],从底层开发一个独立的基本矢量图形系统。