论文部分内容阅读
摘要:本文叙述了现阶段水利工程管理的弊端;讨论了ArcGIS软件的优势以及开发模式;详细阐述了基于ArcGIS开发水利工程建设与管理系统的设计结构图;细致分析了系统实现的具体流程,并给出了部分程序的典型代码;希望能给广大同行带来一定的借鉴意义。
关键词:ArcGIS,水利工程,工程管理,二次开发
中图分类号: TV文献标识码: A
水利工程建设在国家经济建设发展中起着举足轻重的作用,特别是县级水利工程建设,容易受到自然灾害的侵袭,工程建设难度相对而言比较大。然而,近些年来部分县市级地区面对干旱的天气环境,如果水利工程建设与管理存在不足,将直接影响到整个区域经济的快速有序的发展。由于我国水利工程的相对复杂性的特点,使得水利工程项目管理在项目管理组织机构、前期准备、工程质量控制等方面与其他工程相比有诸多不同,存在着水利工程管理方面典型的特点与不足,这些问题都将制约着水利工程建设是否能按预期获得拨款,施工进度是否能按时跟进以及工程质量的保障问题[1]。
因此,面对现实提高我国水利工程建设与管理力度,创新建设与管理方法的新举措,对于提高我国水利工程建设的发展具有十分重要的意义。
1 水利工程管理弊端
现阶段由于科学技术、经济水平与人力物力的制约,我国水利工程建设与管理目前还存在着各种问题,具体如下[2]:
(1)目的不明晰
水利工程建设存在很大的盲目性和随意性,由于做不到统筹管理导致工程的技术、开发的合理性和产生的经济效益之间不能协调发展。比如有一个县级区域管辖的中小型水库建成后发生漏水现象,为了弥补工程漏洞,县政府出资进行了维修,但是漏洞的原因没有请专家检测,结果花得钱不少,但是漏水现象从来没有间断过,一到雨季丰沛季节,就面临着水灾的危险。
(2)管理制度不完善 水利工程建设作为造福一方百姓的利民建筑必须保证工程建设的质量,但是当前部分水利工程建设与管理中一些环节监管不严,管理机制有待健全,特别是质量监督管理中,管理工作懈怠,管理人员素质不高,管理环节疏漏等告示,经常会在建设过程中发生纠纷,导致水利工程建设与管理进度缓慢,给区域的经济与人们的生产生活带来诸多不良影响。
(3)重复性工程多
水利工程建设缺乏统筹管理,当前一些水利工程建设中,由于一些部门缺乏设计规划,导致水利工程施工质量得不到保障,工程管理力度不强,施工水平较低,有的工程停工较长时间后再继续开工也无人问津。然而,恢复开工的工程渠道内淤积了大量的污泥,给工程的正常使用带来严重的安全隐患。
2 ArcGIS及开发模式
ArcGIS是美国环境系统研究所公司(ESRI)开发的地理信息系统(GIS)系列软件,由很多模块、产品组成,具有强大的地理数据管理、编辑、显示、分析等功
能。ArcGIS作为一个可伸缩的平台,无论是在桌面、服务器、野外,还是通过Web为个人用户也为群体用户提供了GIS的功能。ArcGIS主要有ArcMap、ArcToolbox、ArcScene、ArcGlobe等多个功能子系统[3]。
ArcGIS的开发模式主要有以下4个途径:(1)、自定义ArcMap、ArcCatalog的布局和界面,包括增加自定义的按钮,指定相应的宏;(2)、使用VBA创建解决方案;(3)、创建ArcGIS扩展;(4)、创建独立的应用程序。
(1)自定义ArcGIS Desktop
理解自定义ArcGIS Desktop和理解Office下的Word的自定义类似。以ArcMap为例,对于一个Map文档(mxd),包括下面几个部分:使用的数据(即该地图使用了那些数据);地图的布局;当前程序的界面布局(自定义);VBA工程。对于模版(template),有Normal Template和地图Template的区别,前者影响ArcMap程序本身,即所有打开文档都有应用Normal模版,后者只影响使用了该模版的地图。
因此,使用自定义的模版,是ArcGIS Desktop开发的第一个层次,通过将需要的界面元素集合起来,并重新安排,即可组成一个符合客户需求的自定义程序,而集合一定的VBA代码,可以完成的工作就非常多了。
(2)应用VBA
应用VBA开发解决方案有很多优势,例如不需要安装第三方开发工具、简单、易于使用,还有一点就是在不熟悉AO结构的前提下,使用VBA要比使用其他方式更易上手。对于非专业程序员,使用VBA应该是ArcGIS Desktop开发的首选;对于专业开发者,通过VBA也是学习和熟悉AO很好的途径。
(3)VBA工程
VBA工程是ArcGIS中VBA程序和代码的载体,和地图模版(template)或者地图(mxd文件)一起保存。打开VBA编辑器后,有Normal和目前打开的文件2个VBA工程。对于一个VBA工程,由以下几类对象组成:ArcMap对象、过程模块、窗体模块、 类模块以及引用(对Normal模版的引用)等。
(4)创建ArcGIS扩展
一个扩展模块开发的基本步骤如下:(1)新建工程,添加AO的引用;(2)实现需要的接口,添加具体的代码;(3)编译为DLL,注册该COM组件,并在ArcGIS的omponent categories注册(4)测试和调试。
目前,ArcGIS Desktop扩展的开发环境包括COM兼容环境(例如VB或者VC),.net 1.1的VB.net或者C#。
3 设计结构图
基于ArcGIS开发水利工程建设与管理系统的设计结构图如下所示:
图1 基于ArcGIS开发水利工程建设与管理系统的设计结构图
4 系统实现
基于ArcGIS开发水利工程建设与管理系统有工程管理模埠、数据预处理模块、采集与编辑模块、查询统计模块与图形输出模块等。本文仅列举部分典型模块的具体实现。
4.1 工程管理模块
工程管理模块主要是负责水利工程建设与管理系统的工程建设管理,其典型代码如下:
void copyfile::OnOK()
{ CString strpath,strpath2;
GetDlgItem(IDC_EDIT1)->GetWindowText(strpath);
GetDlgItem(IDC_EDIT2)->GetWindowText(strpath2);
m_filelist.ResetContent();
_StartClockCursor();
for(ii = 0; ii < m_filelist.GetCount(); ii++) {
_GoingClockCursor();
m_filelist.GetText(ii,tmp);
CString str,strn,strn2,str1,str2;
str=tmp;
strn = str;
str1=str.Right(str.GetLength()-str.ReverseFind('\\')-1)}
}
4.2 數据预处理模块
数据预处理模块主要是负责系统的数据处理与分析,验证数据是否符合系统规定的要求,其典型代码如下:
objSheet = objSheets.GetItem(COleVariant((short)1)); usedRange.AttachDispatch(objSheet.GetUsedRange());
objRange.AttachDispatch(usedRange.GetRows());
long iRowNum=objRange.GetCount();
objRange.AttachDispatch(usedRange.GetColumns());
long iColumnNum=objRange.GetCount();
int row;
for(row=1;row<=iRowNum;row++)
{ {
index[0]=row;index[1]=1;//index[1]=column;
sa.GetElement(index, &val);
switch(val.vt)
{case VT_R8:
{ char kk[50];
sprintf(kk,"%.0f",val.dblVal);
cstr2=kk;
break;}
}}}}
4.3 查询统计模块
查询统计模块主要是负责系统的查询统计分析,满足用户实时查询的需求,其典型代码如下:
strtemp.Format("%s*.*",strPath);
CFileFind findfile;
BOOL bfind=findfile.FindFile(strtemp);
while(bfind)
{ bfind=findfile.FindNextFile();
if(!findfile.IsDirectory()){
k++;
if(k==1) {
oldroad=findfile.GetFilePath();
str=oldroad.Left((oldroad.ReverseFind('\\')));
m_filelist.AddString(str); }
else continue; }
if(findfile.IsDirectory()&&!findfile.IsDots()) {
k=0;
FindFile(findfile.GetFilePath());}
if(bstop)return;
}
5 结 束 语
总之,基于ArcGIS开发水利工程建设与管理系统的对于我国水利部门建设与规划有着重要的意义。水利工程建设与管理是一个大的系统,还有很多问题需要解决,甚至包括观念的更新以及数据更新规则的修正。
参考文献
[1] 李振吉.水利工程施工企业项目管理研究[D].河北大学,2009.
[2] 孟秀麗. 小型农田水利工程建设存在的问题及管理措施[J]. 中国新技术新产品. 2010(05).
[3] 汤国安,杨昕.ArcGIS地理信息系统空间分析教程[M].北京:科学出版社,2007.
关键词:ArcGIS,水利工程,工程管理,二次开发
中图分类号: TV文献标识码: A
水利工程建设在国家经济建设发展中起着举足轻重的作用,特别是县级水利工程建设,容易受到自然灾害的侵袭,工程建设难度相对而言比较大。然而,近些年来部分县市级地区面对干旱的天气环境,如果水利工程建设与管理存在不足,将直接影响到整个区域经济的快速有序的发展。由于我国水利工程的相对复杂性的特点,使得水利工程项目管理在项目管理组织机构、前期准备、工程质量控制等方面与其他工程相比有诸多不同,存在着水利工程管理方面典型的特点与不足,这些问题都将制约着水利工程建设是否能按预期获得拨款,施工进度是否能按时跟进以及工程质量的保障问题[1]。
因此,面对现实提高我国水利工程建设与管理力度,创新建设与管理方法的新举措,对于提高我国水利工程建设的发展具有十分重要的意义。
1 水利工程管理弊端
现阶段由于科学技术、经济水平与人力物力的制约,我国水利工程建设与管理目前还存在着各种问题,具体如下[2]:
(1)目的不明晰
水利工程建设存在很大的盲目性和随意性,由于做不到统筹管理导致工程的技术、开发的合理性和产生的经济效益之间不能协调发展。比如有一个县级区域管辖的中小型水库建成后发生漏水现象,为了弥补工程漏洞,县政府出资进行了维修,但是漏洞的原因没有请专家检测,结果花得钱不少,但是漏水现象从来没有间断过,一到雨季丰沛季节,就面临着水灾的危险。
(2)管理制度不完善 水利工程建设作为造福一方百姓的利民建筑必须保证工程建设的质量,但是当前部分水利工程建设与管理中一些环节监管不严,管理机制有待健全,特别是质量监督管理中,管理工作懈怠,管理人员素质不高,管理环节疏漏等告示,经常会在建设过程中发生纠纷,导致水利工程建设与管理进度缓慢,给区域的经济与人们的生产生活带来诸多不良影响。
(3)重复性工程多
水利工程建设缺乏统筹管理,当前一些水利工程建设中,由于一些部门缺乏设计规划,导致水利工程施工质量得不到保障,工程管理力度不强,施工水平较低,有的工程停工较长时间后再继续开工也无人问津。然而,恢复开工的工程渠道内淤积了大量的污泥,给工程的正常使用带来严重的安全隐患。
2 ArcGIS及开发模式
ArcGIS是美国环境系统研究所公司(ESRI)开发的地理信息系统(GIS)系列软件,由很多模块、产品组成,具有强大的地理数据管理、编辑、显示、分析等功
能。ArcGIS作为一个可伸缩的平台,无论是在桌面、服务器、野外,还是通过Web为个人用户也为群体用户提供了GIS的功能。ArcGIS主要有ArcMap、ArcToolbox、ArcScene、ArcGlobe等多个功能子系统[3]。
ArcGIS的开发模式主要有以下4个途径:(1)、自定义ArcMap、ArcCatalog的布局和界面,包括增加自定义的按钮,指定相应的宏;(2)、使用VBA创建解决方案;(3)、创建ArcGIS扩展;(4)、创建独立的应用程序。
(1)自定义ArcGIS Desktop
理解自定义ArcGIS Desktop和理解Office下的Word的自定义类似。以ArcMap为例,对于一个Map文档(mxd),包括下面几个部分:使用的数据(即该地图使用了那些数据);地图的布局;当前程序的界面布局(自定义);VBA工程。对于模版(template),有Normal Template和地图Template的区别,前者影响ArcMap程序本身,即所有打开文档都有应用Normal模版,后者只影响使用了该模版的地图。
因此,使用自定义的模版,是ArcGIS Desktop开发的第一个层次,通过将需要的界面元素集合起来,并重新安排,即可组成一个符合客户需求的自定义程序,而集合一定的VBA代码,可以完成的工作就非常多了。
(2)应用VBA
应用VBA开发解决方案有很多优势,例如不需要安装第三方开发工具、简单、易于使用,还有一点就是在不熟悉AO结构的前提下,使用VBA要比使用其他方式更易上手。对于非专业程序员,使用VBA应该是ArcGIS Desktop开发的首选;对于专业开发者,通过VBA也是学习和熟悉AO很好的途径。
(3)VBA工程
VBA工程是ArcGIS中VBA程序和代码的载体,和地图模版(template)或者地图(mxd文件)一起保存。打开VBA编辑器后,有Normal和目前打开的文件2个VBA工程。对于一个VBA工程,由以下几类对象组成:ArcMap对象、过程模块、窗体模块、 类模块以及引用(对Normal模版的引用)等。
(4)创建ArcGIS扩展
一个扩展模块开发的基本步骤如下:(1)新建工程,添加AO的引用;(2)实现需要的接口,添加具体的代码;(3)编译为DLL,注册该COM组件,并在ArcGIS的omponent categories注册(4)测试和调试。
目前,ArcGIS Desktop扩展的开发环境包括COM兼容环境(例如VB或者VC),.net 1.1的VB.net或者C#。
3 设计结构图
基于ArcGIS开发水利工程建设与管理系统的设计结构图如下所示:
图1 基于ArcGIS开发水利工程建设与管理系统的设计结构图
4 系统实现
基于ArcGIS开发水利工程建设与管理系统有工程管理模埠、数据预处理模块、采集与编辑模块、查询统计模块与图形输出模块等。本文仅列举部分典型模块的具体实现。
4.1 工程管理模块
工程管理模块主要是负责水利工程建设与管理系统的工程建设管理,其典型代码如下:
void copyfile::OnOK()
{ CString strpath,strpath2;
GetDlgItem(IDC_EDIT1)->GetWindowText(strpath);
GetDlgItem(IDC_EDIT2)->GetWindowText(strpath2);
m_filelist.ResetContent();
_StartClockCursor();
for(ii = 0; ii < m_filelist.GetCount(); ii++) {
_GoingClockCursor();
m_filelist.GetText(ii,tmp);
CString str,strn,strn2,str1,str2;
str=tmp;
strn = str;
str1=str.Right(str.GetLength()-str.ReverseFind('\\')-1)}
}
4.2 數据预处理模块
数据预处理模块主要是负责系统的数据处理与分析,验证数据是否符合系统规定的要求,其典型代码如下:
objSheet = objSheets.GetItem(COleVariant((short)1)); usedRange.AttachDispatch(objSheet.GetUsedRange());
objRange.AttachDispatch(usedRange.GetRows());
long iRowNum=objRange.GetCount();
objRange.AttachDispatch(usedRange.GetColumns());
long iColumnNum=objRange.GetCount();
int row;
for(row=1;row<=iRowNum;row++)
{ {
index[0]=row;index[1]=1;//index[1]=column;
sa.GetElement(index, &val);
switch(val.vt)
{case VT_R8:
{ char kk[50];
sprintf(kk,"%.0f",val.dblVal);
cstr2=kk;
break;}
}}}}
4.3 查询统计模块
查询统计模块主要是负责系统的查询统计分析,满足用户实时查询的需求,其典型代码如下:
strtemp.Format("%s*.*",strPath);
CFileFind findfile;
BOOL bfind=findfile.FindFile(strtemp);
while(bfind)
{ bfind=findfile.FindNextFile();
if(!findfile.IsDirectory()){
k++;
if(k==1) {
oldroad=findfile.GetFilePath();
str=oldroad.Left((oldroad.ReverseFind('\\')));
m_filelist.AddString(str); }
else continue; }
if(findfile.IsDirectory()&&!findfile.IsDots()) {
k=0;
FindFile(findfile.GetFilePath());}
if(bstop)return;
}
5 结 束 语
总之,基于ArcGIS开发水利工程建设与管理系统的对于我国水利部门建设与规划有着重要的意义。水利工程建设与管理是一个大的系统,还有很多问题需要解决,甚至包括观念的更新以及数据更新规则的修正。
参考文献
[1] 李振吉.水利工程施工企业项目管理研究[D].河北大学,2009.
[2] 孟秀麗. 小型农田水利工程建设存在的问题及管理措施[J]. 中国新技术新产品. 2010(05).
[3] 汤国安,杨昕.ArcGIS地理信息系统空间分析教程[M].北京:科学出版社,2007.