李飞
【摘 要】本文运用MapGIS软件为平台,面向对象的编程语言VC++6.0作为开发工具,后台数据库选用SQL Server2000,构建一个基于C/S模式的图件管理系统,将一个县的基础测绘项目的图件组织起来集中管理,改变分散的传统管理方式,提高数据的使用价值和效率。
【关键词】C/S模式;MapGIS二次开发;基础测绘图件管理系统
中图分类号: TP311.52文献标识码: A文章编号: 2095-2457(2019)27-0039-003
DOI:10.19694/j.cnki.issn2095-2457.2019.27.018
【Abstract】This paper introduces the design and structure of a management system based on C/S model for basic surveying and mapping maps of a county.The system based on MapGIS as the platform,using the object-oriented?language VC++6.0as the development tool,taking SQL?Server2000 as the database.The management of maps charges from scattered to concentrative,thus improves the usage and value of data.
【Key words】C/S model;Secondary development of MapGIS;Management system for basic surveying and mapping maps
0 前言
大多数城市基础测绘图件都是AutoCAD格式,且数量庞大,种类多样,数据量可达20GB以上。传统图件管理方法通常是以文件方式将图件存储在项目负责人和主任工程师的计算机磁盘上进行单独管理。此种方法较分散,而且有如下弊端:(1)传统管理方式以图幅号给图件命名,用户无法确定图件间的关系和图件的空间位置;(2)城市级的GIS程序,其数据量通常可以达到GB水平,如某市1:500的基础地图就有2.4GB[1]。要在如此庞大的数据量中找到所需要的图件,无异于大海捞针,会浪费大量的时间和人力,容易出现人为失误,造成数据冗余;(3)物理磁盘安全性差,可能会导致数据泄露或不一致。
针对传统图件管理模式的弊端,构建一个便捷、安全、高效、可靠的图件管理系统变得尤为重要。特别是单位局域网的建成,为图件的计算机化、网络化管理进一步奠定了基础[2]。因此,构建基于C/S(客户端/服务器)模式的城市基础测绘图件管理系统,改变之前过于分散的图件管理方式,很有意义。
1 系统设计
1.1 系统开发平台与数据来源
系统利用现在普遍使用的MapGIS软件的集成二次开发技术,开发工具选用Mictosoft Visual C++6.0这一面向对象的可视化编程语言。后台数据库选用储存方式稳定、可靠性高、性能优异的SQL Server 2000。由于GIS系统在显示图像图形方面的强大功能,开发平台的图形化,后台建设数据库和运行复杂操作都十分的便利。加上跨平台性的开发环境,系统在各种版本的Windows系统中都可运行。
图件数据来源于测绘数据与航空像片的分幅图。图件类型如图:
1.2 系统结构与数据库设计
1.2.1 系统功能分析
出于系统使用便利、安全可靠的考虑。应具有标准统一的图件管理功能[2];使用方便的图件查询功能[2];维护图件数据安全的分级权限功能[2];快捷、稳定的图件下载、上传功能以及直观、清晰的可视化功能。
在內部局域网基础上,采用C/S(客户端/服务器)模式的系统结构。系统可以不受物理空间限制,充分发挥客户端和服务器端的硬件优势,将操作和数据合理分配到两端,减少通信开销,以提高系统的效率。
服务器端管理所有图件数据和用户信息,并依据用户权限响应不同类型用户的操作请求和所需数据。在客户端,用户可以在视图区上选择所要操作的分幅图,并发送操作请求到服务器端。
1.2.2 系统结构设计
系统基本结构如图2所示。
1.2.3 系统数据库设计
服务器端的SQL Server数据库中以统一格式保存所有数据。由于SQL Server无法访问和显示AutoCAD格式的图件数据,将其转换为其他格式的文件储存也不现实[2]。为解决这一问题,系统以二进制格式将DLG(数字线划图)与DOM(数字正射影像图)数据保存在数据表中。
根据系统功能需求,数据库中数据表主要分为如下几类:
(1)属性信息表(图幅号、图名、时间、所属政区、坐标系):包括1:500,1:2000,1:5000三种比例尺的属性信息表,将各比例尺图件的属性信息存储于此类数据表中。
(2)图件数据表(图幅号、比例尺、图件内容):将图件文件以二进制的形式保存在此表中,通过比例尺和图幅号属性列与各比例尺图件属性信息表进行连接。
(3)用户基本信息表(账号、密码、权限):出于数据安全考虑,用户信息全部经过加密处理。
分开管理属性信息和图件数据,系统将不用依赖专业的开发平台[2]。并且在只查询属性信息时,不用对图件数据的进行搜索,降低运行时间,提高效率。
2 技术分析
2.1 数据连接技术
本系统使用MapGIS网络数据源功能以及Windows系统的ODBC技术,实现服务器端与客户端的数据访问与连接。具体步骤如下:
服务器端数据源配置:(1)配置系统ODBC数据源;(2)使用MapGIS“配置网络数据源”功能,配置数据源的登录名、密码,并测试数据源。
客户端数据源配置:利用MapGIS的“添加应用程序服务器”的功能,将服务器端配置好的数据源添加到客户端。
配置成功后,客户端和服务器可以相互访问和操作。
2.2 MapGIS二次开发技术
本系统采用MapGIS的C++类库的开发方式,将MapGIS类库中CGisEditView类集成于Visual C++6.0中,进行系统的开发。
2.2.1 MapGIS应用程序环境配置:
(1)将新建的Visual C++多文档项目中的视图类改为继承CGisEditView类,然后将#include “cgisedit.h”加入视图类定义中。
(2)调用CGisEditView类中的OnDraw(pDC)函数,实现预处理的绘图工作,即添加语句CGisEditView::OnDraw(pDC) 到视图类的OnDraw(CDC* pDC)函数中 [4],示例代码如下:
void CMyView::OnDraw(CDC* pDC)
{
CMyDoc* pDC = GetDocument();
ASSERT_VALID(pDoc);
CGisEditView::OnDraw(pDC);
}
(3)对Visual C++的字节、输出目录、包含库进行设置。
2.2.2 程序二次开发
CGisEditView类封装了MapGIS针对基本数据对象的编辑过程和方法,通过调用这些方法和函数,来实现系统所需功能。
现以右键快捷菜单中的“移动窗口”为例,说明如何调用MapGIS类库函数完成相应功能。
首先在Workspace窗口的Resource标签中新建菜单,设置菜单项的ID、标题和样式等属性。
然后,运行ClassWizard为此菜单项添加消息响应函数,代码如下:
void CMyView::OnMove()
{
_MoveWindow();
}
通过上述方式,用户在右键快捷菜单中,通过鼠标选择“移动窗口”命令时,系统将调用相关的MapGIS库函数,完成相应功能。其他的很多系统功能也通过这种调用方式进行开发设计。
3 系统主要模块功能
本系统的设计是出于科学管理一个县的基础测绘项目图件,提高其利用效率的目的,主要由客户端和服务器端两部分组成。
3.1 客户端功能模块
3.1.1 系统可视化模块
客户端底图由行政区划图与比例尺专题图(分幅图)通过一致的窗口坐标叠加而成,图中色斑块为比例尺专题图,系统有三种比例尺专题图,分别是1:500,1:2000,1:5000,用户可以根据需要更改比例尺。运用MapGIS提供的工作区操作函数,在视图区中加载制作好的底图并显示。通过调用CGisEditView类提供的图层处理函数,用户可以实现对底图的放大、缩小、移动及更新等功能。此模块直观的展示出各分幅图所处的空间位置和行政区划,方便用户选取所需位置的图件。
3.1.2 系统查询模块
查询主要分为属性信息查询和图件查询。
(1)属性信息查询:客户端读取用户所选图幅号和比例尺信息并发送给服务器端,服务器在相应比例尺的属性信息表中读取图幅号、图名、图件时间、坐标系、比例尺、所属政区等信息,发送给客户端,并显示在查询窗口中。属性查询对话框如下图:
(2)图件查询:由于SQL Server无法直接访问图件格式,系统使用默认的AutoCAD程序打开所选图件,分为单幅打开和多幅打开两种方式。单幅打开时系统调用ShellExecute函数,使用默认的AutoCAD程序打开相应单幅图件。考虑到某些情况下,用户可能需要查看某片区域的多幅图件,或者对多幅图件进行比较查看,特别设计了多幅打开功能,系统根据所选图件数量,循环多次调用WM_COPYDATA消息,向AutoCAD发送“插入块”命令,在 AutoCAD中合并打开多幅图。
3.1.3 图件下载模块
客户端将用户所选图幅号和比例尺信息发送给服务器,服务器在图件数据表中,找到相应的图件二进制流数据,反馈给客户端,客户端将数据以AutoCAD格式保存于客户端电脑相应文件夹中。
3.2 服务器端功能模块
3.2.1 权限管理模块
出于数据安全性的考虑,系统定义了三种账号类型,分别为系统管理员账号、数据管理员账号和普通用户账号,不同的账号拥有不同的系统功能权限。普通用户只能进行系统可视化、系统查询和图件下载操作;数据管理员可以輸入、修改图件属性信息,上传、更新图件;系统管理员账号拥有数据管理员的所有权限,还可以对用户注册的账号进行权限分配,并对数据库进行维护。
3.2.2 数据库维护模块
该模块可以定期或不定期地对数据库进行备份和恢复,保证数据的安全、完整与一致。
3.2.3 数据管理模块
通过MapGIS提供的数据连接功能,管理员可以在服务器端对相应的属性信息和图件进行录入、修改,实现数据的更新,保证数据的时效性,数据录入对话框如图4所示。
图4 数据录入对话框
4 总结
系统依托局域网中的C/S(客户端/服务器)模式管理一个县的基础测绘项目图件,基本达到设计、测试要求。有效克服传统图件管理方式冗余大、查找不便、数据安全性低的弊端,将图件管理由传统的分散方式变为集中式的有组织管理[2]。
但是,系统还存在着不足之处:(1)由于系统所使用的局域网中的C/S(客户端/服务器)模式的限制,可以进一步向B/S(浏览器/服务器)或者C/S、B/S相结合的模式进行转换。(2)由于VC++6.0与AutoCAD存在版本匹配问题,多幅打开时只能使用AutoCAD2004版本。(3)系统对一些数据结构的采用有所不足,在后期的开发、改进时,可以使用更多的数据结构,如改进型的链表结构等,减少运行过程中对数据库的频繁操作,加快系统运行速度。
【参考文献】
[1]游珍. 基于地理信息技术的“数字矿山”应用[EB/OL]. [2013-10-7]. http://www.doc88.com/p-333745817543.html.
[2]洪佺. 基于C/S模式的工程勘察图件信息管理系统设计[J]. 中国地质灾害与防治学报,2006,17(1):86,89-90.
[3]曹代勇,邢秀云,李娜,等. 基于MapGIS煤炭资源信息管理系统的设计与开发[J]. 煤炭科学技术,2004,32(1):23.
[4]索效容.基于 MapGIS 的煤矿矿产资源管理系统的设计与开发[J].测绘通报,2011(8):70.
[5]彭东主.SQLServer2000应用开发技术指南[M].北京:清华大学出版社,2001.
[6]吴信才,郑贵洲,何贞敏,等.地理信息系统设计与实现[M].2版.北京:电子工业出版社,2002.