2012-05-06 9 views
0

初めての投稿と他のすべてのオプションを使い果たしたpython newb。私は選択されたラスタプロパティ(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') 

答えて

0

は別のQ &私のスクリプトのフォーラムからの助けを受けた後、私は今:)このスレッドを閉じて(とgis.stackexchangeに移動するには私自身のGIS関連の質問への答えを提供しています - Lのおかげで.Yipのコメント)。

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() 

実行した後に私の結果:ここでは.txtファイルにラスタのリストについては、私の2つのラスタプロパティ(X方向のセルサイズ、Y方向のセルサイズ)を出力し、最終的な修正スクリプトがありますスクリプト:
S01Clip_30m、88.937158083333,88.9371580833333
S02Clip_30m、88.937158083333,88.937158083333
S03Clip_30m、88.9371580833371,88.9371580833333
S04Clip_30m、88.9371580833308,88.937158083333
S05Clip_30m、88.9371580833349,88.937158083333

ありがとうございます!

+0

あなたの質問に答えが得られない理由は、「ラスタープロパティ」が何であるかわからないからです。私の魔法のクリスタルボールを使って、あなたはGIS関連の何かを話していると思います。[[gis]]タグを適用すると助けになったかもしれません。また、「スタック交換があります!」:http://gis.stackexchange.com。 –

+0

ああ、これはとても役に立ちました - ありがとう。新しいユーザーであるため、どのレベルの詳細とどのコンテキストを提供するべきかを判断することは困難でした。私はStack Overflowが大きな傘だったことを知っていたので、gis.stackexchangeを使用することをお勧めします。ありがとうございました。 – Dre

+0

心配はいりません。 StackOverflowは確かに大きな傘ですが、私たちは専門分野に恵まれていません。適切なタグを使用すると、後になっている専門家の注意を引くのに役立ちますが、しばしば、より良い方法は、いつもどこにいても適切なスタック交換に行くことです。 :) –

関連する問題