ArcGIS的GeoProcessing的原理及实现(1)

 ArcGIS将GIS看作3种视图:地图、数据集、空间处理模型,分别对应于其产品的ArcMap、GeoDatabase、GeoProcessing。其中,对于研究者,GeoProcessing更具有实用价值和意义,因为对于研究者,面对问题,构建的解决方案很多都是地学模型。

ArcGIS 9提供了Model Builder这个工具来构建模型(ArcView 3.3也有,孤陋寡闻,从ArcGIS 9的文档里才知道的),也可以通过Python或者传统的AML(ESRI的二次开发脚本语言)来构建模型。

对于初接触Model Builder,而又有程序开发背景的很多人来说,Model Builder确实是一个非常神奇的工具,可以通过类似画流程图的方式来构建模型,然后运行之。对于一般的GIS工作或研究,无须学习写程序而获得程序的能力,确实非常之好。

模型界面
 

运行界面
 

模型中主要有2种模型,参数输入(圆圈)、输出,和运算模块(矩形)。

输入可以设置为界面输入(右键,Make Parameter)或者其他运算模块的输出(通过连接工具,工具条上),这样,只要设置好了输入输出,一系列的模块就会依次运算,最后完成复杂的地学模型的模拟。

 由于ArcGIS 9以上版本可以使用Python来写模型,因此,对Model Builder的实现有一个大概的想法。

 首先说Python来写可以在ArcGIS中使用的分析工具,其实现大概是这样:

  • ArcGIS建立了一个GP(GeoProcessing)的COM对象,通过这个对象可以获取空间数据的性质,写入数据,返回参数等;
  • 对于每个工具,不管是Python写的与否,可以定义其输入的参数类型,ArcGIS生成用户界面(HTML生成的,在“C:\Documents and Settings\[用户名]\Application Data\ESRI\ArcToolbox\Dlg”目录下);
  • 调用这些工具,首先显示界面,获取参数,然后通过操作系统执行方式调用(Shell "..."),由于调用过程中与ArcGIS的交互是通过GP(GeoProcessing)这个对象来进行的,可以在界面显示信息;
  • 而对于模型方式的工具,ArcGIS内部通过某种脚本方式来保存并执行,其前后过程由于输入、输出都是文件或者变量,并且以参数方式传递,因此可以相对容易的实现顺序执行(ArcGIS目前的建模只可以是顺序的,虽然地学模型简单的都是这样,但毕竟不完整,也许就是因为这个原因,ArcGIS 9才提供了Python脚本);
  • 整体的思路其实应该就是操作系统的“管道”思想。

 另外,ArcGIS也支持VBScript,JScript(支持COM即可),JScript我没有用过,所以不好说,VBScript虽然也简单易用,但功能等不是很好,个人也不喜欢。

 而其调用,都是通过Shell方式,和在操作系统里双击运行是一样的道理和效果,如果计算机的文件关联设置有问题,那么脚本就不可以用了,本人认为这点作的非常不好。

2005-8-13 更新:今天翻到了这篇东西,大概总结一下。

当时是想写一个系列,然后在其他平台也实现一个原型。但深入以后,发现ArcGIS这点做的很不好,首先整合方式太老土,不是说不可以,但现在和Windows下,使用Process方式整合问题很多;其次,效率问题;最后,既然封装,但只是很薄的一层封装,所以说有无其封装,我使用Python也可以调用ArcObject;如此而已。

很多人谈到ESRI的创新,实在是笑掉大牙,如果说保守,没有比这个公司保守的公司了。

posted on 2005-01-12 16:08  马维峰  阅读(6586)  评论(1编辑  收藏  举报