通过Python成功地集成了Hawth的工具和arcgis10.1?

2024-06-02 11:32:05 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我一直致力于通过Python将地理空间建模环境工具(以前是Hawth的)与arcgis10.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工具的工作原理类似于tablate Area,因此理论上,这些值都应该附加到多边形数据中,但是通过Python它似乎没有做到这一点……(我使用GME是因为tablate Area无法处理数据文件的大小,并且在Arc中崩溃,同时作为Python脚本崩溃)。在

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

谢谢你的反馈!在


Tags: thepath代码inenvsysbefull
1条回答
网友
1楼 · 发布于 2024-06-02 11:32:05

明白了!在

GME可以使用文本文件来读取所需的代码,因此我用Python编写输入,就像它们在GME中应该出现的那样,并将它们写入文本文件。然后将它们读入子进程调用中,该子进程调用将打开GME并运行文本文件。很有魅力。在

做了些修补,但值得!在

相关问题 更多 >