用PythonCaller转换器调用ArcGIS的gp工具

原文发布时间:2014-12-15

作者:lkfree

模版下载

    Gp工具(Geoprocessing)是ArcGIS提供的一个非常实用的工具,借由Geoprocessing工具可以方便的调用ArcToolBox中提供的各类工具,像做缓冲区分析、叠加分析、以及对栅格数据制作阴影图等等。除了在ArcGIS桌面版软件中可以通过ArcToolbox中的工具直接调用Geoprocessing的功能,我们也可以通过C#Python语言来调用gp工具。

    

例如我们需要利用dem生成tin,并对其进行内插。

Python代码如下:


# Purpose: Create a TIN from a raster surface.

# Create the Geoprocessor object

import arcgisscripting

gp = arcgisscripting.create()

 

#Check out the 3D Analyst extension

gp.CheckOutExtension (“3D”)

 

try:

    # Set the workspace (to avoid having to type in the full path to the data every time)设置DEM源数据路径

    gp.workspace = “D:/DEM/source”

    # Select the 3D Analyst Toolbox

    gp.toolbox = “3D”

 

    fcs = gp.listrasters()

    fcs.reset()

    fc= fcs.next()

    while fc:

设置生成tin路径和内插后dem路径

      tin_location = “D:/TIN/tin”

      out_location = “D:/DEM/dest”

    # Process: create a Tin from a raster

      gp.rastertin_3d (fc, tin_location + “/” + fc, “2”, “1500000”)

      gp.tinraster_3d (tin_location + “/” + fc, out_location + “/” + fc, “FLOAT”, “LINEAR”, “CELLSIZE 2”)

 

      fc = fcs.next()

except:

    # If an error occurred while running the tool, print the error messages

    print gp.GetMessages()


现在我们想通过利用FMEPythonCaller转换器,调用python语句运行gp工具,并能利用FMEServer对其进行下载。

模板如下:


PythonCaller中设置如下:




还需要设置一些参数: 


如上图两个公共参数分别为:源dem数据路径和本机ArcGIS的安装目录

私有参数为生成结果的路径,以及FMEServer扇出目录参数,在进行扇出操作后,发布时参数名称必须为“FME_Server_DEST_DIR

本模板通过调用本机ArcGISgp工具,生成结果,并通过“Filecopy”写模块将数据拷贝到FMEServer上进行下载。

此外还有些注意事项:

1.在运行模板之前需要在工作空间参数高级的启动python脚本处,增加以下代码:import sys

sys.path.append(‘%s\\bin’ % FME_MacroValues[‘ARCGIS_HOME’])


用于获取本机的ArcGISgp服务,否则的话程序无法获取gp工具,会报出以下错误:


2.如果遇到FMEDesktop报出如下错误:

     Python Exception <ImportError>: Module use of python26.dll conflicts with this version of  Python.

需要在FME选项处指定python路径:



指定本机的Python解译器路径:由于操作系统使用的python不同,这个编译器可能为python25.dllpython27.dll,一般在系统安装目录进行搜索。

    3.同样在FMEServer处也许要设置Python解译器路径,否则会报出

Python Exception<importError>Module use of python25.dll contticts with this version of Python Error executing string import fmeobjects.

此时,我们需要用cmd命令行来进行设置,开启指定python模块,参考safe官方帮助:http://docs.safe.com/fme/html/FME_Server_Documentation/Default.htm#AdminGuide/Configuring_Custom_Python_Interpreter.htm

 先执行<FMEserver安装目录>Server/fme/fme.exe APPLY_SETTINGS SYSTEM “Python/Use Custom Python” true

再运行<FMEserver安装目录>Server/fme/fme.exe APPLY_SETTINGS SYSTEM “Python/Python Interpreter” python26.dll路径

 

例如我的机子是这样写的:

E:\apps\FMEServer\Server\fme\fme.exe APPLY_SETTINGS SYSTEM “Python/Use Custom Python” true

 

E:\apps\FMEServer\Server\fme\fme.exe APPLY_SETTINGS SYSTEM “Python/Python Interpreter” C:\Windows\SysWOW64\python26.dll

 

如下图:



之后就可以在FMEServer上成功运行,并下载结果了。






转载自:https://blog.csdn.net/fmechina/article/details/80770607

You may also like...