用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()
现在我们想通过利用FME的PythonCaller转换器,调用python语句运行gp工具,并能利用FMEServer对其进行下载。
模板如下:
PythonCaller中设置如下:
还需要设置一些参数:
如上图两个公共参数分别为:源dem数据路径和本机ArcGIS的安装目录
私有参数为生成结果的路径,以及FMEServer扇出目录参数,在进行扇出操作后,发布时参数名称必须为“FME_Server_DEST_DIR”
本模板通过调用本机ArcGIS的gp工具,生成结果,并通过“Filecopy”写模块将数据拷贝到FMEServer上进行下载。
此外还有些注意事项:
1.在运行模板之前需要在工作空间参数–高级的–启动python脚本处,增加以下代码:import sys
sys.path.append(‘%s\\bin’ % FME_MacroValues[‘ARCGIS_HOME’])
用于获取本机的ArcGIS的gp服务,否则的话程序无法获取gp工具,会报出以下错误:
2.如果遇到FMEDesktop报出如下错误:
Python Exception <ImportError>: Module use of python26.dll conflicts with this version of Python.
需要在FME选项处指定python路径:
指定本机的Python解译器路径:由于操作系统使用的python不同,这个编译器可能为python25.dll或python27.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