通过Python成功整合Hawth工具和ArcGIS 10.1?

时间:2013-07-03 16:26:12

标签: python gis arcgis

所以我一直致力于通过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。我的搜索表明,对于那些尝试自动化过程的人来说,这是一个常见的问题,但据我所知,我只是在某个地方或某些其他代码中缺少冒号。

感谢您的反馈!

1 个答案:

答案 0 :(得分:0)

想出来!

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

做了一些修补,但值得!