3

因此,我一直致力于通过 Python 将地理空间建​​模环境工具(以前称为 Hawth 的)与 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 工具的工作原理类似于制表区域,因此理论上,值应该全部附加到多边形数据中,但通过 Python 似乎并没有这样做......(我正在使用 GME,因为制表区域无法处理我的数据文件的大小和在 Arc 中以及作为 Python 脚本中的崩溃)。

我想知道是否有人能够成功地通过 Python 运行 GME 以用于将成为 ArcPy 脚本的内容,以便任务可以自动化,而不必通过 GME 然后进入 Arc。我的搜索表明,对于那些试图自动化该过程的人来说,这是一个常见问题,但据我所知,我只是在某处缺少冒号或其他一些代码。

感谢您的反馈!

4

1 回答 1

0

弄清楚了!

GME 可以使用文本文件来读取所需的代码,因此我在 Python 中按照它们应该出现在 GME 中的方式编写了输入,并将这些写入到文本文件中。然后将它们读入一个子进程调用,该调用会启动 GME 并运行文本文件。奇迹般有效。

花了一些修补,但值得!

于 2013-07-26T18:46:31.810 回答