地理处理--第四章 地理处理脚本

地理处理--第四章 地理处理脚本

脚本, 地理
第一节 ArcGIS脚本

  在地理处理中,脚本可以用来完成自动的任务,例如数据转化,或生产geodatabase,这些脚本可以在脚本应用中运行,也可以添加到toolbox中。地理处理脚本可以用任意支持COM脚本语言,例如Python,Perl,Jsccript,或VBScript。任何在ModelBuilder中创建的模型都可以转成脚本文件

为什么使用脚本?

  脚本和模型相似,你可以把处理过程链接在一起,并在一定的次序下运行这些过程。和模型一样,脚本可以用来建立在ArcGIS Desktop系统工具中所没有欧的功能。例如,你可以建立定制批处理。

  ArcGIS桌面支持哪些脚本软件
   每个脚本软件程序都有自己的语言,其中有一些可以用来写运行在ArcGIS桌面的地里处理工具中的脚本。这些脚本语言包括Python,Perl,VBScript,以及Jscript。在这一节当中,我们重点在介绍Python语言,因为它随ArcGIS桌面软件安装时候一起安装,另外Python语言许多优势,它可以支持运行在不同的操作系统环境中。
  在下表中,描述了同样的两行代码在不同的脚本语言中的表现形式。这两个代码表示用来检查一个名为“Roads_clip”的要素类,并且如果检查到的话,就把它删除。从表上可以看到所不同的仅仅是语法,而对于处理的过程是一样的。
脚本语言                                   例子代码

Python                                                    if gp.Exists ("Roads_clip"):
                                                              gp.Delete("Roads_clip")




VBScript                                                 If gp.Exists("Roads_clip") then

                                                             gp.Delete("Roads_clip")

JScript                                                  If (gp.Exists("Roads_clip"))

                                                           gp.Delete("Roads_clip");


   你同样的可以基于一定的条件使用脚本来处理数据。例如,可以用脚本用来检测是否某个输入的数据是线类型或多边形的要素类,然后再接着处理这个数据。在后面的例子中,你同样可以看到如何在脚本中进行循环工作。

  你可以在ArcGIS桌面环境中查看它所包含的任意地理处理工具的脚本例子。在ArcToolBox中,鼠标右击系统工具,然后选择帮助。在ArcGIS桌面帮助系统中,展开脚本语法部分,你就可以看到工具的脚本语法。

  例如,对于”Add XY Coordinates”工具的帮助,提供了脚本的语法描述,解释了每个参数的意义,以及如何在脚本中使用这个工具,如图4-1。


脚本剖析

   即使你从来没有写过一行代码,你可能也要使用别人写过的脚本。但是要记住,你需要有可用的licenses和扩展,你也可以在脚本中执行系统的任何工具。什么意思呢?即如果你要使用的功能有一些是arcinfo的license,有些是arcview的license,还有一些是扩展功能,如3D Analyst里面的工具。这些可以从第二章的arcgis桌面地理处理的三个产品级别的表中可以看出来。那么我们如果要使用某些工具,必定需要有相应级别的arcgis license和扩展的license,这样才可用。
  言归正传,下面我们通过例子来解释一下Python的脚本语言。Python实现地理处理语法有几部分内容,主要包括如下:
  (1)、注释
  在Python当中,任何一行的代码处理都可以通过#标志为注释,这和其他编程语言环境相似。如下代码:
(#-----------------------------------------------------------------------------------
#ClipAll.py
#ESRI Python script example
#Created on:25/3/2007
#Description: Clips all of the feature classes in a workspace
#and puts the clipped feature classes in a specified workspace
)
  (2)、标准代码

  一个以Python代码开始的地理处理功能,必须,也是最少需要要以一下两行代码:

  #Import system modules

Import win32com.client

  和

#Create the Geoprocessor object

  Gp = win32com.client.Dispatch(“esriGeoprocessing.GpDIspatch.1”)


(在arcgis9.2当中有一些变化,可以用以下代码来替代这两行:

#Import system modules

    Import arcgisscripting

  #Create the Geoprocessor object

    gp=arcgisscripting.create()

)

 脚本中地理处理代码例子

    (1)、脚本标准代码

  下面图4-2是Python地理处理脚本包括注释的标准代码:


  其它需要导入的特定模块是sys和os.语法如下:

   Import win32com.client,sys,os


      (2)、Script arguments

  也称为system arguments,这个代码允许用户与脚本的交互,并可以为变量指定值,例如像输出工作空间。

下面图4-3是三个script arguments的代码和注释:

  这些script arguments必须按照一定的要求才能够保证脚本运行的成功。在图上,这是一个运行裁切功能的工具,sys.argv[1]表示输入的数据的工作空间或所在的工作路径,sys.argv[2]表示用来作裁切的要素,sys.argv[3]表示输出空间。这三个参数与我们在使用ArcToolbox中的clip工具对话窗口中所使用的参数使用是一致的。


     (3)、环境设置

  即脚本运行时候所需要的设置应用到整个的处理过程中,例如默认的工作空间等。下面就是一个环境设置的语法与注释:

     (# Set the current workspace

   gp.workspace = InputWS



  你可以在脚本中使用环境设置,这时候你就可以忽略在ArcToolbox中的环境设置了。


      (4)、工具

  在脚本中,只需要通过指定工具名加工具箱的别名和工具参数,那么任何的系统工具都可以在脚本代码程序中运行。

  下图4-4种的代码(带注释)是用”裁切”工具对一系列的要素类进行循环的工作。从图上你能否找到裁切的工具吗?


  我们注意到裁切工具包括了gp.prefix和这个工具使用的脚本语法如下图4-5:


  在上面的语法中我们可以看到,对于使用任何工具,首先需要指定这个工具所在的工具箱,即gp.prefix中prefix所示的部分,例如clip工具,就是在Analysis工具箱中。在ArcToolbox中,每个工具都有别名如图4-6




第二节 使用脚本工具

第二节 如何在ArcGIS环境中使用脚本

  脚本的运行可以在独立的脚本环境中,也可以把脚本添加到工具箱中,然后通过对话框运行脚本,或把脚本加入到Model中运行。

  把脚本作为独立程序运行,你就不需要打开任何ArcGIS桌面的应用程序来完成地理处理的操作。例如,你可以在脚本编辑器中运行脚本,象Pythonwin,或在命令窗口中运行。

  在把地理处理脚本作为独立程序运行时候,你需要考虑到以下几点:

1、  ArcGIS桌面使用的许可

2、  脚本中使用地理处理的许可

3、  安装了Python(如果你使用的是Python脚本)

4、  能够访问到脚本中所设置的数据和工作空间参考。

   如果你需要在ArcGIS桌面应用中运行脚本,把脚本作为系统工具,或在模型中使用,那么你必须把脚本加到toolbox中,并且作为脚本工具来运行。
  
   在ArcToolBox中添加script,只需要在某个已有的工具箱或新建的工具箱下,通过鼠标右键AddàScript,就可以把脚本添加进来。我们以一个实例为参考,通过某些要素对整个文件夹下的所有要素进行裁切,并输出。代码如图4-3与4-4所示。在ArcToolBox中根据向导,设置参数,包括在工具对话框中显示的名称和输入的数据类型,如图4-7所示。图4-8为所生成的工具对话框。如果我们需要使用帮助系统,可以象在Model Builder章节中所提到一样,使用Document Editor就可以实现和系统工具一样的帮助系统,这样可以方便工具的共享。对于这些加进来的脚本工具,我们也可以当作系统工具一样来使用,可以直接运行对话框,也可以把它们放到Model Builder中使用,设置可以通过ArcGIS Server发布成地理处理服务,通过互联网来共享。



你可能感兴趣的:(工作,python,脚本,VBScript,语言,工具)