Поэтому я работал над интеграцией инструментов среды геопространственного моделирования (ранее Hawth) с ArcGIS 10.1 через Python. Ниже приведен код, который я использую, и он отлично работает, чтобы создать текстовый файл кода, а затем вызвать GME через Python для обработки шейп-файлов, которые я использую. Насколько я могу судить, мне удалось дословно воспроизвести то, что, по словам создателя, будет работать в 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).
Мне интересно, смог ли кто-нибудь успешно запустить GME через Python для использования в том, что будет сценарием ArcPy, чтобы задачу можно было автоматизировать, вместо того, чтобы проходить через GME, а затем в Arc. Мои поиски показывают, что это обычная проблема для тех, кто пытается автоматизировать процесс, но, насколько я знаю, я просто где-то пропустил двоеточие или какой-то другой фрагмент кода.
Спасибо за ответ!