VC桌面城市GIS系统的二次开发设计与实现
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
密 惠 保
本文介绍了GIS的相关知识,重点介绍了GIS的二次开发技术,并指出这种开发方式正成为应用型GIS开发的主流方向。文中对MapInfo的相关知识也做了较为详细的介绍,最后对VC++采用OLE Automation技术进行MapInfo集成开发做了具体讨论,并详细阐述了其操作步骤。
[资料来源:http://www.THINK58.com]
关键词 地理信息系统 二次开发 对象链接与嵌入 MapInfo VC++
[资料来源:http://think58.com]
第一章 绪论地理信息系统是60年代发展起来的对空间信息进行分析与研究的一门新技术,进入21世纪以来随着数字地球概念的提出和社会信息总量的急剧膨胀,GIS产业得以迅速发展,可观的发展前景吸引了众多IT厂商,纷纷推出自己的产品,如MapInfo ,Arc/Info等等,这些工具功能强大,生产厂商为用户提供完整解决方案,但是对于大多数用户而言,并不需要功能复杂,难于掌握的工具型GIS,而只需要满足一定工作需要的应用型GIS,况且短期时间内,在有限的开发力量和资金投入下,用户也不可能开发出大型的工具型GIS,因此应用合适的开发工具对工具型GIS进行二次开发是既能满足需要又具有方便美观界面的应用型GIS的重要途径。本文主要是理论研究这方面的技术,最后通过简单的实例来验证一下使用VC++进行GIS二次开发优点。
以上各小节比较了用GIS系统专业开发工具和利用VC+++设计GIS系统的优缺点。在进行GIS系统设计时,具体选用哪种方法则需要考虑系统本省的性质和特点,以及设计者自身的具体情况来确定。一般来说对于一些大型的GIS系统开发项目,如一个地区的综合信息管理系统等,因为其图形平台,容量,可靠性等各方面的要求,一般易于选择已经成熟的GIS系统开发工具来组织开发。而对于一些小型的GIS系统,特别是一些以数据管理,决策研究,辅助设计等具体应用为主的系统,或者在某个行业中需要推广使用的实用系统,因为这些系统对矢量图形平台要求不是很高,开发的重点在于GIS技术的实际功能,可考虑采用VC++来组织系统的开发,并把它作为开发具有自主版权的大型GIS系统的“练兵”。在开发的过程中,不断的探索和完善开发技术,最终达到和超越GIS系统专业开发工具具有的功能。从而开发出具有自主版权的软件产品。
用VC++开发GIS系统,其实现的难度是较大的。一个基本的GIS系统,需要包含如下的组成部分:管理空间坐标数据的矢量图形系统,管理性质数据的数据库管理系统,以及实现矢量图形系统与数据库管理系统双向连接的连接系统。一些GIS系统专业开发工具,如MapInfo等,也是用VC++通过如上的思路在矢量图形系统基础上开发完成的。
2.7.1 开发相对完整的矢量图形系统
矢量图形系统是GIS系统最重要的组成部分,也是用VC++开发GIS系统的重点所在。应用在不同领域的GIS系统,其需要的矢量图形系统的功能是有差别的。建立一个城市信息管理GIS系统时,要求矢量图形系统有丰富的图形元素,丰富的线型,巨大的存储容量,完善的输入和输出功能,强大的地图编辑功能,甚至需要三维显示和处理的能力;而某些管理型GIS系统需要的矢量图形系统,可能只需要具有简单的处理二维普通图形元素的功能。[8]
本文来自think58
[资料来源:www.THINK58.com]
[来源:http://think58.com]think58好,好think58
一个简单的矢量图形系统一般需要如下的功能:
(1)相对完善的图形元素。应具备处理点,直线,圆,连续直线,多边形区域,标注文本等图形元素的能力,并具有处理图例的能力。具有了基本图形元素和图例后的矢量图形系统,在很大程度上能够满足普通的管理型GIS系统的矢量图形要求。提供矢量显示图像的功能在很大程度上能够改善矢量图形界面的质量。
(2)相对完善的图形操作功能。应具备图形的缩放,移动,回溯等各种操作功能。
(3)相对完善的图形输入和输出功能。应具备鼠标交互绘制功能,图形数据交互输入等功能。根据具体情况需要具有数字化仪输入,与其它图形系统的数据接口等功能。系统应具备从打印或绘图设备输出图形的能力。
(4)具有图层,颜色,线型等的设置功能。
copyright think58 [资料来源:www.THINK58.com]
[资料来源:http://think58.com](5)具有较大的存储容量。处理图形元素的容量应该能够达到一般实用要求。
[资料来源:http://think58.com]
(6)具有较强的容错能力和可恢复性。
本文来自think58
[来源:http://www.think58.com]
(7)具有较高的处理速度。
[资料来源:www.THINK58.com]
2.7.2 开发数据库管理系统
数据库管理系统是GIS系统最重要的组成部分,用来管理GIS系统中的各种性质数据。我们可以采用不同的方法来开发这个数据库管理系统。最常用的开发数据库管理系统的方法时使用ODBC。ODBC作为一种开放的数据库标准,可以使用各种数据库系统的数据库文件作为数据源,使用SQL语言作为操作和查询语言,按照统一的方法来实现数据库管理系统。VC++,特别是VC++ 6.0企业版为开发基于ODBC的数据库管理系统提供了完善的开发技术。
内容来自think58 [来源:http://think58.com]
[资料来源:http://think58.com]
一个基本的数据库管理系统需要提供以下的操作功能:
(1)数据浏览功能。实现操作界面对数据表的浏览。
内容来自think58
(2)编辑功能。能够对数据表进行增加数据,修改数据,删除数据等操作,即可以修改任意数据表的内容。
(3)查询功能。能够提供操作界面,任意组织数据表的过滤条件,对数据表进行查询操作。
copyright think58 [资料来源:http://THINK58.com]
(4)排序功能。能够组织排序字段,对数据表进行多字段和可选顺序的排序操作。
3.1 项目开始及准备工作3.1.1 项目开始3.1.1 .1 项目的准备工作
3.1.1 .1 项目的准备工作
1) 熟悉开发工具
应熟悉VC中的OLE对象实例的处理及编程实现方法,了解MapInfo平台应用,注意运用为方便用户而附带的一些功能,如数据库管理,报表分析等。在编程时这些功能可直接在应用系统上通过简单的语句调用,简化开发过程。
2) 将MapInfo集成进其它的应用程序中,了解MapBasic语句和函数。
MapBasic语言提供了MapInfo与其他程序的接口功能,详细可以参考MapBasic手册,其中最关键的是由SetApplicationWindow(设置MapInfo父窗口)和SetNextDocument(设置Map窗口的父窗口,如将地图窗口作为客户程序的子窗口)实现与MapInfo的对话,运行环境。
3) 了解MapInfo为支持OLE自动化而设计的指令集。
MapInfo提供的指令主要有:DO(string)(将字符串转换为MapBasic语句并执行),Eval(string)(将字符串转换为MapBasic表达式,并且返回表达式的值)等。
4) 熟悉OLE自动化实现方法
[资料来源:THINK58.com]
VC中实现OLE自动化的方法是在创建新的工程中要选择支持Automation,如果没有的化则要在源文件中包含两个头文件#include .h>和#include .h>,并在初始化函数中做一些初始化工作。
3.1.1 .2 项目的设计思路
为了满足应用型的需要而不必像专业GIS软件一样的复杂,只是简单的查询和浏览操作,因此考虑采用功能比较强大二次开发工具VC++,利用其内部的OLE自动化技术,通过相应的接口来调用指令集,就可以实现相应的功能,这样设计人员只需要了解接口以及相应的指令集的功能,至于指令集在MapInfo里具体是如何实现的,现在可以不必了解,开发工程变的十分简单。[2]
[来源:http://think58.com]
包含资料:源程序+论文(15000字以上)+可执行程序+答辩稿ppt+开题报告+外文翻译
本文来自think58 [版权所有:http://think58.com]
[资料来源:http://www.THINK58.com]获取资料请您联系本站客服 think58 [资料来源:http://THINK58.com]
copyright think58 [版权所有:http://think58.com]
[资料来源:http://www.THINK58.com]