3

そこで私は、地理空間モデリング環境ツール (以前の Hawth のツール) を Python を介して ArcGIS 10.1 に統合することに取り組んできました。以下は私が使用しているコードです。コードのテキスト ファイルを作成し、Python 経由で GME を呼び出して、使用しているシェープファイルを処理します。私が知る限り、作成者が 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 ではそうではないようです....(Tabulate Area では処理できないため、GME を使用しています。 Arc と Python スクリプトの両方でクラッシュします)。

Python を介して GME を実行し、ArcPy スクリプトで使用することに成功した人がいるかどうか疑問に思っています。これにより、GME を介してから Arc に移行するのではなく、タスクを自動化できます。私の検索では、これはプロセスを自動化しようとしている人にとって一般的な問題であることが示唆されていますが、どこかでコロンまたはその他のコードが欠落しているだけです。

フィードバックをお寄せいただきありがとうございます!

4

1 に答える 1

0

理解した!

GME はテキスト ファイルを使用して目的のコードを読み取ることができるため、GME に表示されるように Python で入力を書き込み、これらをテキスト ファイルに書き込みました。これらは、GME を起動してテキスト ファイルを実行するサブプロセス コールに読み込まれます。魅力のように機能します。

いじくり回しましたが、それだけの価値があります。

于 2013-07-26T18:46:31.810 に答える