谷延霞1王恒2谷艳云3
1.河北农业大学理学院物理系071001
2.河北农业大学城乡建设学院建筑与城市规划系071001
3.河北省临西县河西镇政府 054900
摘 要 本文研究基于MapX的灌区管理信息系统的总体设计及采取的开发路线,并对系统的主要功能数据的统计、空间分析、灌溉用水及配水等做出了阐述。利用该系统可以及时准确的掌握灌区的水源情况、灌溉情况及其他的信息,对我国北方缺水地区农业精细灌溉的管理实现智能化。
关键词 :MapX;地理信息系统(GIS);Visual C++.NET;数据库
1 引言
中国是世界上13个严重缺水的国家之一,水资源短缺在我国北方尤为突出,但在灌溉水资源的利用上传统的灌溉方式存在着严重的浪费现象。据估计,每年农业浪费的水量达1 000亿m3。因此,推广数字农业技术已成为中国农业发展的一种趋势。
精细灌溉管理技术是根据农作物的需水、耗水规律,来控制、调配水源,以最大限度地满足作物对水分的需要,实现区域最佳的农田水分调控管理。根据作物的实际需求,及时、适量地将水分供给作物,最终达到高产、高效,提高水分利用效率的目的。
2 系统采用技术
2.1MapX概述
MapX是一个基于ActiveX(OCX)技术的可编程控件,它不但使用了与MapInfo Professional一致的地图数据格式,而且还在这个小的控件中实现了MapInfo Professional的大多数功能,例如:地图编辑和空间分析功能。MapX的内部提供了40多个父类为Microsoft基础类(MFC)的OLE对象,这就使得应用程序员可以使用任何支持ActiveX的程序开发环境来采用嵌入MapX控件方式,方便快捷地开发GIS应用程序。
2.2系统开发平台
系统的运行平台为WINDOWS 2000系列操作系统,系统数据库采用Microsoft Access,GIS模块采用MapInfo,编程环境为面向对象的V C++.NET。系统逻辑体系结构如图1所示。
在VC++.NET中使用MapX的方法不同于Visual Basic和C++ Builder。在VC++.NET中,每个MapX对象是一个C++类,这些类在MapX.h文件中声明,在MapX.cpp文件中实现。这些C++类的名称与MapX对象的名称相同,在对象名称前面加上CMapX就构成了类名。MapX对象的属性 C++类的成员函数来实现的。
3 系统开发整体过程
利用MapInfo 公司的MapX 控件开发GIS,其具体开发过程如下:首先,安装MapX 控件;然后,安装MapInfo 软件:对于图形简单的系统,可以直接利用MapX 绘图,但功能有限,而且修改困难。在开发灌区GIS 时,因为系统图形元素较多,还有许多符号需要自定义,所以先用MapInfo建立图形和空间数据库,再利用MapX 提供的Geoset Manager 形成MapX可以调用的. gst文件,这样既解决了绘图难,同时方便了MapX 对图形的管理;最后,应用程序的开发:首先建立属性数据库,这可以用一般的关系数据库系统来建立,并通过所用开发平台建立对数据库中属性数据的维护工作。以河北省武强胜利灌区为试点,实现了一个小型地理信息系统与移动处理平台,后台数据库采用SQL Server 2000。
4 系统数据组织及数据库的建立
4.1系统数据组织
灌区管理信息系统的数据涉及空间矢量数据、属性数据和管理数据。空间数据主要指能标识水利设施的空间位置的数据,如渠道的走向,水闸的地理位置等,它隐含式地包含了水利设施的空间地理坐标。属性数据和工程管理数据主要指与水利设施工程特性及运行状况相关的数据,如渠道的设计参数、水闸结构尺寸、闸门开度、渠道流量等。
4.2系统数据来源
地理信息系统中的数据源是指建立地理数据库所需的各种数据来源和数据内容。数据源的分析对系统数据结构和系统功能的设计都是很重要的。由于不同来源的数据,其性质相差很大,处理方法不同,对于系统的功能要求也不同。另外,数据的精度和可靠性直接影响到系统的实用价值,数据量关系到硬件和软件处理能力的要求以及运算量。故此,分析数据来源、数据量、数据的精度和可靠性是非常必要的。
灌区地理信息系统的数据源主要包括:灌区内水利工程布置图、地形图、交通图、土壤特性分布图等包含基本地理信息的图;各工程信息;渠系信息(如渠系概况、设计参数、衬砌型式等);其他资料(如社会经济,农民耕种习惯)等。
4.3 数据库的建立
数据库的建立按图1进行。在建立属性数据库时,特别要注意编码体系的研究与安排,考虑属性数据库与空间数据库如何进行连接的问题;其次用开发平台一方面设计数据维护的应用界面,完成属性数据的维护工作;另一方面,设计地理信息查询系统界面,在这些界面上插入MapX 控件,并对其General 的Geoset 属性设置,就可以将由MapInfo建立的图形调入到自己的应用程序中了。
5 系统功能
从系统的结构上讲,灌区信息管理系统具有图形管理、灌溉用水辅助决策、统计分析、系统管理及帮助等几大功能。
5.1 图层显示功能
可根据输入的文件显示农田、排水沟和道路等信息。数字地图采用矢量方式, 可任意放大、缩小、移动, 并能够根据用户需要进行地图标注。显示数字地图时, 要用曲线拟合和插值方法;进行图形的放大缩小等操作时, 需要重新确定比例尺进行曲线拟合和插值显示。
Case ID_MAP_ ZOOM IN: ∥图形放大
{
CMoRectangle r (m _ m ap. T rackRectangle () );
if (LPDISPATCH (r) )
m _ map. SetExtent (r) ;
break;
}
case ID_MAP_ ZOOMOUT: ∥图形缩小
{
}
case ID_MAP_ FULLEXTENT: ∥全图显示
{
}
5.2 属性查询功能
以Visual C++.NET作为系统开发平台,开发出查询、数据分析、打印报表、数据维护功能(数据输入、数据修改、数据删除、数据的导入与导出,图片的输入等)模块,利用地理信息系统(GIS)工具软件MapInfo公司提供的MapX控件,将GIS功能模块嵌入开发系统中,实现了地理信息系统的查询功能
系统支持对道路、地物、标识物等(包括指定任意区域,指定图形中实体及数据库有关数据项的逻辑运算等)的多种查询方式,如按图幅号或用户指定区域进行查询,按地名、行政区划进行查询,在屏幕上对指定区域进行查询等。通过捕捉鼠标位置, 确定鼠标所在位置的地理信息,或根据查询条件对整个图形信息进行符合查询条件的搜索查询,然后重新显示查询结果。实现代码如下:
void CF isView ::OnMapSearch () ∥属性查询
{
CMainFrame* pMainFrame = (CMainFrame* )AfxGetMainWnd ();
ASSERT_ VALID (pMainFrame) ;
CString searchText= pMainFrame->GetSearchText ();
CString expression;
expression. Format (“(State_ name Like’% % % s% % ‘) “, searchText);
CMoLayer layers(m_map. GetLayers() );
CMoMapLayer states ( layers.Item (COleVariant (TEXT (“STA TES”) ) ) );
CMoRecordset recs ( states. SearchExpression (exp ression) ) ;
if ( recs. GetEof () )
::MessageBeep (MB_ICONQUESTION);
else
{
}
}
5.3 提供灌溉用水辅助决策
本系统中我们将通过向地图中添加图层来实现不同作物分别用不同颜色表示,灌溉前后也发生颜色变化,可以方便的查询作物的需水量,并按颜色的深浅显示缺水程度。系统通过对比优化结果数据与实际检测数据,对不同作物可以全自动的实施不同的灌溉量,也可手动通过鼠标点击不同的作物进行灌溉。如图2为灌溉决策系统的人机交互界面。
case ID_MAP_ADDLayer: ∥加图层;
{
CMoLayer* Layer= new CMoLayer (m_map. ToM apLayer (Darkblue1());
if (LPDISPATCH (Layer) )
m _ Layers. Add (Layer) ;
}
灌溉用水辅助决策的功能是灌区管理信息系统的主体。完成对于现行条件下的作物需水状况的图形显示,如图2颜色越深表示缺水情况越严重。系统管理员可以通过本系统掌握灌区作物的需水情况,计算机会自动的定时检测作物的需水状况,与模型库中的具体数据作比较,计算作物的实际需水量,再综合考虑当地的气象信息,决定是否执行灌溉,以及灌溉量的多少,灌溉情况也会实时通过具体数据和图形显示出来,同时生成灌溉日志,有助于管理员掌握具体灌溉情况。此外,在某些特殊情况下,管理员也可以人工进行灌溉操作,通过手动灌溉设置设定灌溉区域以及灌溉量来执行灌溉操作。
6 结束语
本系统以图形、图像为基础,在灌区平面图基础上管理灌区内的各种信息,将空间数据,属性数据管理相结合,使得系统操作更加方便,管理能力增强。替代人工对灌区的水源情况,灌溉情况以及灌区的其它信息进行管理,实现灌区的智能化动态管理,并作为服务器进行移动设备的各种管理工作。通过在Visual C++.NET平台上运用GIS的功能组件MapX,开发GIS灌溉信息管理模块,实现了对农田信息的地图化表达,对农田的基本数据信息根据空间分布进行可视化的分析和处理。使农田灌溉信息的表现形式更丰富、界面更友好,灌溉信息及其规律得到更加透彻、生动、详尽的表达,为GIS在农业灌溉应用领域的开拓提供了基础性的研究。
参考文献:
[1] Jones J W, Keating B A. Approaches to modular model development [J]. Agriculture Systems, 2001 70; 421-443
[2] Shane R, Zhang Naiqian, Randy T. Development of a field-level geographic information system (FIS). In: ASAE. ASAE Annual International Meeting. Florida: Sponsored by ASAE, 1998. A-15
[3] 刘光, 地理信息系统二次开发教程组件篇[M], 北京:清华大学出版社, 2003. 2. p. 2.
[4] 吴信才, 白玉琪, 郭玲玲. 地理信息系统(GIS) 发展现状及展望[J].计算机工程与应用,2000 , (4) :8 – 9.
[5] 范新南, 陈鹏, 谢迎娟. 组件式GIS软件MapX的应用技术研究[ J ],《微计算机信息》, 2003, 19卷8期: 92~93, 62.
[6] 徐志扬,丁贤荣,左一鸣,程立刚. 基于MapX构建GIS应用系统平台的研究[J]计算机与数字工程 2006.3
[7] 罗云启,罗毅. 数字化地理信息系统MapInfo应用大全[M] 北京:北京希望电子出版社. 2001