Успех в интеграции инструментов Hawth и ArcGIS 10.1 через Python?

Поэтому я работал над интеграцией инструментов среды геопространственного моделирования (ранее 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. Мои поиски показывают, что это обычная проблема для тех, кто пытается автоматизировать процесс, но, насколько я знаю, я просто где-то пропустил двоеточие или какой-то другой фрагмент кода.

Спасибо за ответ!


person user2547367    schedule 03.07.2013    source источник


Ответы (1)


Догадаться!

GME может использовать текстовый файл для чтения нужного кода, поэтому я записал входные данные в Python так, как они должны отображаться в GME, и записал их в текстовый файл. Затем они были прочитаны в вызове подпроцесса, который запускает GME и запускает текстовый файл. Работает как шарм.

Пришлось немного повозиться, но оно того стоило!

person user2547367    schedule 26.07.2013