免费视频|新人指南|投诉删帖|广告合作|地信网APP下载

查看: 2309|回复: 3
收起左侧

MAPGIS开发地质环境信息管理系统

[复制链接]

1986

主题

10万

铜板

98

好友

技术员

Network change life, change t

积分
17879

斑竹勋章地信元老

QQ
发表于 2009-12-15 08:47 | 显示全部楼层 |阅读模式
基于mapgis的地质环境信息管理系统二次开发
摘  要:以MAPGIS作为地质环境信息管理系统二次开发的平台,主要介绍了MAPGIS的开发环境和数据管理方式、系统设计结构以及体系结构图。该管理系统的关键就在于对属性数据的管理,在MAPGIS的开发库里主要提供了三种方式。最后对介绍如何实现对工程文件的管理和编辑。
关键词:地理信息系统   地质环境   二次开发
一、引言
  地理信息系统主要有三种开发模式:一是独立开发,完全从底层做起,不依赖任何GIS系统,所有的算法都由开发者独立设计,这种模式开发难度大、周期长、投资大,不适合一般的开发用户;二是单纯的二次开发,基于国内外先进的GIS 平台,利用其提供的二次开发语言进行开发,如美国Esri公司Arcview Gis的二次开发语言Avenue,开发出具有特定应用功能的地理信息系统,该模式简单易行,有很多功能可以直接从原有的平台软件中引用过来,但它的可扩充性太差,往往不能满足要求;三是借助某些商用地理信息系统提供的组件库或MFC函数库,结合特殊的功能需求开发专业的地理信息系统。
  MAPGIS提供了完整的二次开发库,用户可以在MAPGIS平台上开发面向各自领域的应用系统。目前,二次开发库以API函数、MFC扩展类、COM组件、ActiveX控件四种方式提供。这些不同的开发接口提供了从最基本的读取、保存、更新和维护,到MAPGIS地图库的建立和漫游,以及空间分析、图像处理等一系列功能。开发库被封装在若干动态链接库(DLL)中,用户可以根据自己所使用的开发语言和需要,调用不同的方式。
二、MAPGIS的开发环境和数据管理
  MAPGIS开发函数库以及MAPGIS应用程序的相互关系,如图1所示。目前,MAPGIS二次开发库主要是以API函数的方式提供的,这些函数的实现被封装在12个动态链接库(DLL)中,因此,是独立于开发工具的。用户在所使用的高级语言中,如何调用Windows的API函数,就可依此调用MAPGIS的二次开发函数。
  MAPGIS二次开发函数库,有工作区基础函数、图形显示输出、工作区管理函数、图形窗口操作、空间分析函数、地图库读取显示、图形编辑函数、图像输入输出、图像显示函数、彩色变换函数、图像处理函数以及进程控制函数。这些库函数都支持Windows3.x C++、Visual Basic等。
  MAPGIS数据管理的核心就是对工作区的操作。工作区是MAPGIS提出的一个概念,存放实体的空间数据、拓扑数据、图形数据和属性数据,每个工作区都对应于一个MAPGIS数据文件。MAPGIS 开发函数库提供对工作区实施操作的一系列函数,如将工作区内容存盘,从盘上将数据装入工作区,工对作区中内容进行添加、修改、删除、检索等。对硬盘数据的存取及虚拟内存管理等复杂繁琐的工作无需应用程序编写者自己去关心,而是由MAPGIS工作区管理模块自动完成。MAPGIS将工作区分为点、线、区、网、表等五种类型,它们的差别主要表现在所包含空间实体的类型不同。MAPGIS二次开发类库是建立MAPGIS API之上的一个类库层,用于支持MFC类库的面向对象的Windows程序计;MAPGIS二次开发类库提供了一套强力的C++,它屏蔽了基于MAPGIS API上开发MAPGIS实用程序的许多复杂性;MAPGIS二次开发类库封装了窗口理、图形编辑、图形显示输出、工程文件操函数;MAPGIS二次开发类库应用程序十分方便、快捷,应尽量使用MAPGIS次类库来开发应用程序。
  基于MAPGIS的地质环境信息管理系统数据输入和图形处理功能以MAPGIS工程文件为管理基本数据文件的对象,在开发类库中有CPrjEditView类和CPrjListView类对工程文件进行操作。两类分别集成对工程文件进行编辑、控制处理所需的数据对象的方法,可实现对工程文件的所有管理、显示、编辑操作。工程数据对应两种不同的表现和交互方式:工程列表管理和图形显示、编辑。属性管理以及空间分析主要以CGisView类实现。
三、系统设计结构
  地质环境信息管理系统的体系结构图如图2所示,由于环境地质信息的复杂性,有必要对这些数据进行分类管理。数据在实现形式上分为两大类:MAPGIS内置文件属性和外部属性数据库。在表现形式为图形库、属性数据库和多媒体信息数据库。可在系统各专业模块中分别表示,如可分别以水文地质、工程地质等模块来分别管理这些数据。
该信息管理系统的关键就在于对属性数据的管理,MAPGIS主要提供三种方式对属性数据进行管理:
  (1)点、线、面文件的内置属性数据;
  (2)*.wb形式的外部属性数据库,通过外挂数据库的的方式实现系统文件与外部属性数据库的挂接;
  (3)属性连接,将指定的MAPGIS图形文件与所选的外部数据库表或MAPGIS表文件根据指定的联接关键字段或按序号联接起来并将所选择的属性字段写进MAPGIS的图形数据属性中。
四、MAPGIS的典型代码
  该信息管理系统主要以工程文件来管理数据。利用MAPGIS提供的CPrjEditView类和CPrjListView类可快速搭建VC++环境下的MAPGIS的编辑框架和实现其功能。如直接打开工程文件:
(1)Visual C++的工作环境进行必要的修改和设置;
(2)使用静态方式将视图窗口切分为两个窗口;
(3)左边的窗口基类改为CPrjListView类,右边窗口的基类改为CPrjEditView类,两类都重载OnDraw(pDC)函数;
(4)在文档类中定义一个工程对象;
(5)设置工程内容。添加成员函数void OnInitialUpdate()以完成MAPGIS的工程文件设置。
五、结束语
  该信息管理系统允许用户根据资料的不断获取,来更新、完善图形库和属性库的内容,由数据输入和图形编辑功能随时修改、更新图形库的内容,由属性库管理功能可实现属性库的修改和更新。
参考文献
[1] 于军.长江三角洲环境地质调查评价GIS管理系统建设初探.[J].工程地质学报.2002.10.1:103~10.
[2] 诸云强,宫辉力,赵文吉等.基于组件技术的地理信息系统二次开发.[J].地理与地理信息科学.2003.19.1:16~19.
[3] 郭际元,曾文.MAPGIS地理信息系统的二次开发.[J].测绘信息与工程.2000.1:16~18.
轻轻的我来签到了,想带走一堆铜板...

4

主题

4267

铜板

8

好友

教授级高工

Rank: 12Rank: 12Rank: 12

积分
1298
QQ
发表于 2011-10-30 14:24 | 显示全部楼层
WWWWWWWWWWWWWWWWWWWWWWWWWWWWW
该会员没有填写今日想说内容.

24

主题

2708

铜板

60

好友

高级工程师

Rank: 9Rank: 9Rank: 9

积分
734
发表于 2011-11-1 22:06 | 显示全部楼层
谢谢分享!
今天貌似字体变了似得!

1

主题

2万

铜板

5

好友

地信院士

向大家学习

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
2161
QQ
发表于 2011-12-31 11:07 | 显示全部楼层
只是介绍,没有软件呀
工作还没有开始,希望很顺利
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
快速回复 返回顶部 返回列表