1

ArcPy を使用して、ArcGIS で地理データを分析し始めたところです。分析にはさまざまなステップがあり、次々に実行されます。

ここにいくつかの疑似コードがあります:

import arcpy

# create a masking variable
mask1 = "mask.shp"    

# create a list of raster files
files_to_process = ["raster1.tif", "raster2.tif", "raster3.tif"]

# step 1 (e.g. clipping of each raster to study extent)
for index, item in enumerate(files_to_process):
        raster_i = "temp/ras_tem_" + str(index) + ".tif"
        arcpy.Clip_management(item, '#', raster_i, mask1)

# step 2 (e.g. change projection of raster files)
...

# step 3 (e.g. calculate some statistics for each raster)
...

etc.

このコードは、これまでのところ驚くほどうまく機能します。ただし、ラスター ファイルはサイズが大きく、一部のステップの実行にはかなりの時間がかかります (5 ~ 60 分)。したがって、入力ラスター データが変更された場合にのみ、これらの手順を実行したいと思います。GIS ワークフローの観点からは、これは問題にはなりません。各ステップでハード ディスクに物理的な結果が保存され、次のステップで入力として使用されるからです。

#たとえば、ステップ 1 を一時的に無効にしたい場合は、このステップのすべての行の前にa を置くだけでよいと思います。ただし、実際の分析では、各ステップに多数のコード行が含まれる可能性があるため、各ステップのコードを別のファイル (例: "step1.py"、"step2.py"、.. .)、各ファイルを実行します。

を試してみexecfile(step1.py)ましたが、エラーが発生しましNameError: global name 'files_to_process' is not definedた。メインスクリプトで定義された変数は、によって呼び出されるスクリプトに自動的に渡されないようexecfileです。

これも試しましたが、上記と同じエラーが発生しました。

私はまったくの Python 初心者です (Python 関連の式の誤用からわかるかもしれませんが)、このような GIS プロジェクトを編成する方法についてアドバイスをいただければ幸いです。

4

1 に答える 1