所以我一直致力于通过Python将地理空间建模环境工具(以前称为Hawth's)与ArcGIS 10.1集成。下面是我正在使用的代码,它非常有用,可以创建代码的文本文件,然后通过Python调用GME来处理我正在使用的shapefile。据我所知,我已经能够逐字模仿创作者在Python中的作用(参见他的文档:http://www.spatialecology.com/gme/images/SpatialEcologyGME.pdf)
代码:
import arcpy, sys, os, subprocess
from arcpy import env
#Supply the following arguments:
#Workspace (full path)
#Catchment Polygons (full path)
#Raster Data (full path)
#Prefix for the output: 6 characters to denote the raster dataset.
#Thematic value: TRUE or FALSE
#An output txt file (full path -> eg. C:/Users/Alison/Desktop/file.txt)
########
#Each argument must be in double quotes, and they must be separated by a space.
#The polygon and raster datasets must be in same coordinate system.
env.workspace = sys.argv[1]
print env.workspace
inputPoly = sys.argv[2]
inputRast = sys.argv[3]
prefix = sys.argv[4]
thematic = sys.argv[5]
code = 'isectpolyrst(in="' + inputPoly + '", raster="' + inputRast + '", prefix="' + prefix + '", thematic="' + thematic +'");'
print code
newFile = sys.argv[6]
print newFile
newFileObj = open(newFile, 'w')
newFileObj.write(code)
newFileObj.close()
print newFile
os.system(r'C:\Program Files (x86)\SpatialEcology\GME\SEGME.exe')
print "subprocess.call(r'C:\Program Files (x86)\SpatialEcology\GME\SEGME.exe -c run(in=\\\"" + newFile + "\\\");');"
subprocess.call(r'C:\Program Files (x86)\SpatialEcology\GME\SEGME.exe -c run(in=\\\"" + newFile + "\\\");');
然而,虽然这个过程很好,但我最终还是打到了另一面墙......它打开了GME,但是唉,它实际上并没有做任何事情。它最终似乎不运行创建的文本文件。 isectpolyrst工具的工作方式与Tabulate Area类似,所以理论上,这些值都应该附加到多边形数据上,但是通过Python它似乎不会这样做....(我使用的是GME,因为Tabulate Area无法处理我的数据文件的大小和崩溃都在Arc中,但也作为Python脚本)。
我想知道是否有人能够通过Python成功运行GME以用于ArcPy脚本,因此任务可以自动完成,而不必通过GME然后进入Arc。我的搜索表明,对于那些尝试自动化过程的人来说,这是一个常见的问题,但据我所知,我只是在某个地方或某些其他代码中缺少冒号。
感谢您的反馈!
答案 0 :(得分:0)
想出来!
GME可以使用文本文件来读取所需的代码,因此我在Python中编写了输入,因为它们应该出现在GME中,并将这些输入写入文本文件。然后将它们读入一个子进程调用,该调用将调出GME并运行文本文件。奇迹般有效。
做了一些修补,但值得!