xhgWanderingsoul 2018-12-17
目前,很多学者都是从宏观上讨论遥感和GIS一体化集成的可能性及集成的方法,但这些研究在GIS和RS方向只是对Python集成研究的思路或某一功能的介绍,并没有一个基于Python开发的集成GIS与RS功能的应用系统。本文从矿山遥感监测需求出发,分析矿山遥感监测中需要集成的GIS和RS功能,介绍实用性极强的矿山遥感监测系统。
目前,进行系统开发可以选择独立开发或二次开发,一般独立开发方法周期长、经费高、对开发语言水平要求较高,而二次开发方法具有周期短、成本低、实现速度快的优势。所以本系统选择基于ArcGIS和ENVI/IDL的集成二次开发。ArcGIS和ENVI/IDL的集成开发方法较多,其中主要有以下几种方法。
1)ENVI/IDL和ArcGISEngine组件库组合的开发方法。
2)ENVI/IDL和ArcGISServer一体化组合的开发方法。
3)基于Python的ENVI/IDL和ArcGIS桌面定制的开发方法。
第一种方法在开发时,用第三方语言调用ENVI的图像处理功能则是开发的难点,需要一定编程语言和二次开发基础;第二种方法主要是将图像处理功能集成在服务端,客户端对数据进行显示和输出,但是这种方法在一定程度上会受到网络速度的限制,无法实现大数据量的遥感图像的实时传输和显示;第三种方法利用Python语言将ENVI/IDL和ArcGIS链接起来,方法简单、易实现。所以通过以上的分析对比,笔者采用第三种方法。
系统基于ArcGIS进行二次开发,需要的ArcGIS功能可以直接调用。图像处理功能则需要调用ENVI中的功能,即需要将ENVI的图像处理功能嵌入到ArcGIS中。
系统开发的详细步骤如下:
1)编写系统中需要的遥感图像处理功能。
在ENVI/IDL中编写IDL程序,将其编译成.sav文件供Python脚本调用。具体方法如下:打开IDL,设置工程名和保存路径,在工程文件中编写需要实现的图像处理功能程序,生成.pro文件并编译成.sav文件供下一步Python调用。
2)编写Python脚本文件,实现在ArcGIS中调用ENVI/IDL功能。
编写Python脚本,Python脚本可以嵌入到ArcGIS中,同时Python脚本又可以通过envipy模块运行编写好的.sav文件,并获得用户从交互界面中输入的参数,将其传递给IDL程序,从而实现在ArcGIS下运行相应的图像处理功能。
3)在ArcGIS中构建遥感图像处理功能的交互界面。
为了将编写完成的Python脚本嵌入到ArcGIS中,为实现在ArcGIS下可以直接使用图像处理功能,需要创建交互界面。交互界面创建步骤如下:在Catalog中指定或者新建一个文件夹并添加NEW-toolbox,然后在该工具箱中添加一个新的脚本,将写好的*.py文件和脚本关联。最后,设置ENVI功能程序中的参数完成交互界面的创建。当运行脚本时,就会弹出输入参数的界面,可以根据自己的情况输入所需要的参数。
4)编写系统主界面功能菜单。
通过以上方法,实现遥感图像处理功能的载入,为便于用户使用,需要建立矿山遥感监测系统的主界面菜单。基于ArcGIS10.1的平台上可以用PythonAdd-in做个加载项插入到ArcGIS for Desktop应用程序中来完成系统菜单的定制。
常用的ArcGIS二次开发语言有Python,VBA,VB,.net等。其中,Python作为一种简单而且功能强大的开放性编程语言备受瞩目,它具有简单易学、不受局限、可以跨平台使用等诸多优点,因此ArcGIS9.0以上版本开始引入Python语言,更重要的是Python模块可以把基于IDL开发的功能集成到ArcGIS中,为ArcGIS和ENVI的一体化集成提供至关重要的技术支持。因此,基于Python模块进行集成研究也是近几年的研究热点。