0

他のすべてのオプションを使い果たした初めての投稿とpythonnewb。選択したラスタープロパティを(arcpy.GetRasterProperties_management(input_raster、 "property_type")関数を使用して)コンマ区切りのテーブルに追加することに興味がありますが、複数の結果に対してこれを行う方法を理解するのに問題があります。(実際のスクリプトの)要約例として、2つの'for'ループを作成しました。出力したいラスタープロパティごとに1つ(つまり、セルサイズX、セルサイズY)。ラスターのリストには、S01Clip_30mからS05Clip_30mが含まれています。私の目標は、次のような.txtファイルを作成することです。

RasterName, CellSizeX, CellSizeY  
S01Clip_30m, 88.9372, 88.9375  
S02Clip_30m, 88.9374, 88.9371

私がこれまでに持っているコードは以下のとおりです(下部にいくつかの不確かな、失敗した構文があります)。実行すると、次の結果が得られます。

S05Clip_30m、88.9374
(リストの最後のラスター、CellSizeY)

重要なボトムコードブロックについてご協力いただければ幸いです。

import arcpy
from arcpy import env
env.workspace = ('C:\\StudyAreas\\Aggregates.gdb')
InFolder = ('C:\\dre\\python\\tables')
OutputFile = open(InFolder + '\\' + 'RasterProps.txt', 'a')
rlist = arcpy.ListRasters('*','*')
for grid in rlist:
    if grid[-8:] == "Clip_30m":
        result = arcpy.GetRasterProperties_management(grid,'CELLSIZEX')
        CellSizeX = result.getOutput(0)
for grid in rlist:
    if grid[-8:] == "Clip_30m":
        result = arcpy.GetRasterProperties_management(grid,'CELLSIZEY')
        CellSizeY = result.getOutput(0)
> I know the syntax below is incorrect, but I know there are *some* elements that 
> should be included based on other example scripts that I have...
> if result.getOutput(0) == CellSizeX:
>     coltype = CellSizeX
> elif result.getOutput(0) == CellSizeY:
>     coltype = CellSizeY
> r = ''.join(grid)
> colname = r[0:]
> OutputFile.writelines(colname+','+coltype+'\n')
4

1 に答える 1

0

スクリプトに関する別のQ&Aフォーラムからの支援を受けた後、このスレッドを閉じるための自分のGIS関連の質問に対する回答を提供しています(そしてgis.stackexchangeに移動します:)-L.Yipのコメントに感謝します)。ラスターのリストの2つのラスタープロパティ(X方向のセルサイズ、Y方向のセルサイズ)を.txtファイルに出力する最終的な修正済みスクリプトは次のとおりです。

import arcpy
from arcpy import env
env.workspace = ('C:\\StudyAreas\\Aggregates.gdb')
InFolder = ('C:\\dre\\python\\tables')
OutputFile = open(InFolder + '\\' + 'RasterProps.txt', 'a')
rlist = arcpy.ListRasters('*','*')
for grid in rlist:
    if grid[-8:] == "Clip_30m":
        resultX = arcpy.GetRasterProperties_management(grid,'CELLSIZEX')
        CellSizeX = resultX.getOutput(0)
        resultY = arcpy.GetRasterProperties_management(grid,'CELLSIZEY')
        CellSizeY = resultY.getOutput(0)
OutputFile.write(grid + ',' + str(CellSizeX) + ',' + str(CellSizeY) + '\n')
OutputFile.close()

スクリプト実行後の結果:
S01Clip_30m、88.937158083333,88.9371580833333
S02Clip_30m、88.937158083333,88.937158083333
S03Clip_30m
、88.9371580833371,88.9371580833333
S04Clip_30m、88.9371580833308,88.937158083333

ありがとう!

于 2012-05-07T17:04:37.113 に答える