彭秋连,杨 华,冯 璐,邓 军
(云南省农业科学院甘蔗研究所,开远661699)
基于Visual C++和MapX的甘蔗地理信息系统的开发
彭秋连,杨 华,冯 璐,邓 军
(云南省农业科学院甘蔗研究所,开远661699)
在Visual C++环境下利用MapX控件开发了甘蔗地理信息系统(GIS),着重介绍了利用Visual C++与MapX控件进行混合编程的基本方法,为进一步利用MapX控件开发GIS应用软件奠定基础。
甘蔗地理信息系统;MapX;Visual C++
近年来,随着计算机技术和地理信息的迅猛发展,图像技术、计算机绘图和数据库也逐渐结合起来并创建了地理信息系统(Geographic Information System,简称GIS)[1]。利用此技术,可以将地图和数据绑在一起,以可视化的形式显示数据,而随着数字时代的到来,GIS在农业领域等方面也取得了广泛的应用。
Visual C++(VC++)作为目前较流行的可视化开发编程工具之一,功能比较强大,支持面向对象和事件驱动机制的程序开发,可作为GIS系统的最佳开发平台。利用该开发工具,结合MapX控件能够开发出界面美观,功能齐全的GIS系统。本文主要探讨以VC++为开发平台,以MapX控件作为图形平台,开发研制甘蔗地理信息系统的方法和一些基本功能的实现,研究目标是建成一个甘蔗地理信息系统,满足管理者及各种农户的信息需求,能够实现对甘蔗地图中各种文件的操作,根据不同的查询条件从地图中查询信息以及统计分析的功能。
MapInfo是目前国内使用较为广泛的桌面GIS软件,其中MapX是MapInfo公司向用户提供的,基于Windows操作系统,具有强大地图分析功能的ActiveX控件产品[2]。MapX封装了MapInfo地图操作的大部分功能,单独使用可视化的编程语言并不能方便地实现数字地图的功能,而结合MapX就能够满足GIS用户的各种需求。MapX不仅仅是一个“地图浏览器”,还分管着其他重要的功能,其主要特性如下[3]:
(1)支持栅格图像:MapX能够将栅格图像按图层的方式加入地图窗口进行管理。(2)查询功能:能够根据对象的属性或使用条件查询表达式来查询各种所需信息,快速在地图上显示特定点位。(3)数据绑定:MapX能够绑定不同类型的数据源,并通过图层的方式能够在地图上查看。(4)提供各种地图操作工具:如放大、缩小、居中、选择等。(5)支持数据库。
在甘蔗地理信息系统中利用MapX将地图嵌入其中,能够增强甘蔗地理信息系统应用的空间分析和数据分析能力,提高信息管理与甘蔗产收的效率。
2.1 系统的模块设计
随着GIS的出现,针对某一行业或区域而开发的GIS系统发挥着越来越重要的作用。本文采用MapX组件技术,以VC++为开发语言,根据甘蔗行业的实际需求,开发研制甘蔗地理信息系统。
根据系统设计的目标、设计原则,甘蔗地理信息系统的开发主要分为4个模块:地图显示、信息查询、统计分析、系统管理。其模块设计如图1所示。
(1)地图显示:将蔗区规划地图通过MapX控件嵌入到系统界面中,对蔗区的村镇、道路、交通、学校、企事业单位等信息进行显示和管理,以不同符号形象、直观地展示给用户,同时实现电子地图的放大、缩小、移动、标注、漫游、全部显示及鹰眼图导航等功能,达到信息可视化的效果。
(2)信息查询:系统具有方便、灵活、高效的查询功能,通过对话框的形式让用户输入信息,同时调用相应的数据库,用户能迅速地查找所需的信息,可查询到甘蔗种植实际布局、甘蔗品种、产量、甘蔗生产劳动力、土壤养分、交通条件等。
图1 软件的功能模块
(3)统计分析:统计和分析功能主要是为管理者而设置的,给予甘蔗产量分析、甘蔗品种分析,有利于他们方便、高效地查询、检索、决策,提供一个有效的管理工具;同时对甘蔗资源进行科学、准确地预测和管理,有力地避免重复劳动和浪费,提高经济效益。
(4)系统管理:系统登陆角色分为系统管理员、管理者和农户,管理员级别的用户可对系统进行维护。
2.2 系统的实现步骤
在VC++环境下集成MapX控件开发甘蔗地理信息系统是采用将MapX作为控件添加到应用程序中,然后通过设置其属性或调用方法,实现数据可视化、地理查询等丰富的地图信息系统功能[4]。以下将详述系统的实现步骤:
(1)建立应用框架:在VC++平台下,利用应用程序向导“MFC AppWizard”,建立标准的应用程序,工程名为Sugarcane。
(2)添加MapX支持类库:在VC++开发环境中,在基于MFC的应用程序框架中添加MapX控件,其步骤为:a.将MapX.h和MapX.cpp两个文件复制到当前应用程序的文件夹Sugarcane中;b.在建立的工程中从“Project”菜单中选择“Add To Project”的“Files”选项,打开“Insert Files into Project”对话框,将Sugarcane文件夹中的MapX.h和MapX.cpp文件添加到工程中。至此,MapX类添加成功。
(3)软件初始化:在CSugarcaneView.cpp中添加OnCreate()和OnSize()函数代码,以便在创建视图时创建MapX控件,对其进行初始化,其代码如下:
int CSugarcaneView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if(CView::OnCreate(lpCreateStruct)==-1)
return-1;
if(!m_ctrMapX.Create(NULL,WS_VISIBLE,CRect(0,0,100,100),this,IDC_MAP))//初始化图层return-1;
}
void CSugarcaneView::OnSize(UINT nType,int cx,int cy)
{
CView::OnSize(nType,cx,cy);
if(cx!=0&&cy!=0)
{
m_ctrMapX.MoveWindow(0,0,cx,cy,TRUE);//调整地图大小使其充满客户区
}
}
(4)电子地图的加载:通过MapInfo制作的电子地图都是分图层显示的,即是单独的.tab文件。在对电子地图进行加载之前,需要将这些.tab文件整合为GeoSet文件(*.gst)。其方法是利用MapX的地图管理工具Geoset Manager打开所有的tab图层,设置其样式,保存为.gst文件格式,电子地图则绘制完毕。
在SugarcaneView.h文件中包含MapX.h头文件,同时声明CMapX类型的变量m_ctrlMapX,代码如下:
#include"MapX.h"
class CSugarcaneView:public CView
{
protected://create from serialization only CSugarcaneView();
DECLARE_DYNCREATE(CSugarcaneView)
CMapX m_ctrlMapX;
}
在OnCreate()函数中添加电子地图的功能代码:
m_ctrMapX.SetGeoSet("Sugarcane.GST");//加载当前电子地图
m_ctrMapX.SetTitleText("");//不显示标题
编译并运行应用程序,即可在主视图窗口中显示地图,程序界面如图2所示。
图2 甘蔗地理信息系统界面
(5)地图工具的调用:在MapX中提供了一些标准工具,使地图能够实现放大、缩小、居中、选择、移动等功能。MapX提供的标准工具有:放大、缩小、选择、居中、移动等,其指示常量分别为:miZoomInTool;miZoomOutTool;miSelectTool;miCenterTool;miPanTool,如若实现这些功能,只需在应用程序中调用即可。实现缩小功能的关键代码如下:
void CSugarcaneView::OnMapToolZoomout()
{
//TODO:Add your command handler code here
//设置当前工具为缩小工具
m_ctrlMapX.SetCurrentTool(miZoomOutTool);
}
同样地,在以上的代码中修改相应的指示常量,就可实现不同的功能。
(6)地图鹰眼图功能:在该系统中,已添加地图的鹰眼图(即缩略图)功能,能方便用户浏览地图。
实现地图鹰眼图功能,需在应用程序中额外添加资源IDC_MAP来对应鹰眼图,并在EagleView.h文件中声明CMapX类型的变量m_ctrEagleMapX,添加鹰眼图图层的主要代码如下:
m_ctrEagleMapX.SetGeoSet("eaglemap.GST");
m_ctrEagleMapX.SetTitleText("");
m_ctrEagleMapX.GetLayers().CreateLayer("rect");
在主图发生变化(放大、缩小、漫游等)时,鹰眼图用一个矩形框来同时标示出对应区域;同时,鹰眼图的矩形框移动时,主图将同步调整当前视图,显示该矩形框内的地图信息,实现地图的快速定位和浏览。
随着空间技术的发展,地理信息系统逐步应用于各行业及区域,并展示出广阔的发展前景。本文阐述了地理信息系统和MapX控件的相关知识,对甘蔗地理信息系统的基本功能进行描述,重点介绍Visual C++开发工具对MapX控件接口进行混合编程的基本方法。
开发甘蔗地理信息系统,可节省蔗区管理的人力、物力、财力,实现蔗区管理的信息化,提高经济效益,同时也为蔗农提供一个便捷的服务平台,及推动甘蔗信息的普及;更重要的是推动农业走向信息化。本文只是针对系统的接口进行详述,且该系统的功能还不够完善,若要实现其他功能或是投入到实际应用中,还需对系统进行改善和扩展,这也是下一步开发的方向。
[1]陈述彭,鲁学军,周成虎.地理信息系统导论[M].北京:科学出版社,2000.
[2]尹旭日,张武军.Visual C++环境下MapX的开发技术[M].北京:冶金工业出版社,2009.
[3]刘光.地理信息系统二次开发教程—组件篇[M].北京:清华大学出版社,2003.
[4]韩平阳,罗五明.基于MapX的地理信息系统的VC开发[J].交通与计算机,2004(5):22.Development of Sugarcane GIS Based on MapX Control in Visual C++
PENG Qiu-lian,YANG Hua,FENG Lu,DENG Jun
(Sugarcane Research Institute,Yunnan Academy of Agricultural Sciences,Kaiyuan 661699)
In recent years,GIS(geographic information system)component technologies have become the tendency of GIS development.The sugarcane GIS was developed by applying MapX control with Visual C++,and basic methods of programming with Visual C++and MapX were introduced in the paper,and foundation for further development of GIS application software by using MapX control was discussed.
sugarance GIS(geographic information system);MapX;Visual C++
S566.1
A
2014-05-21
国家甘蔗产业技术体系(nycytx-024-01-14)资助。
彭秋连(1986-),女,江西省萍乡市人,研究实习员,主要从事甘蔗信息系统研究与开发。
张跃彬(1969-),男,云南省建水县人,研究员,现代农业甘蔗产业技术体系岗位科学家,主要从事甘蔗综合技术方面的研究。Tel:0873-7227001,E-mail:ynzyb@sohu.com
1007-2624(2014)04-0039-03
10.13570/j.cnki.scc.2014.04.015