2012-05-06 76 views
0

第一次使用了所有其他選項的post和python newb。我有興趣將選定的柵格屬性(使用arcpy.GetRasterProperties_management(input_raster,「property_type」)函數)附加到以逗號分隔的表格中,但無法解決如何針對多個結果執行此操作的問題。作爲一個簡略的例子(我的實際腳本),我創建了兩個'for'循環;一個用於我感興趣輸出的每個柵格屬性(即單元大小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

從其他Nexus Q &在我的腳本的論壇接受幫助之後,我現在提供的答案,我自己的GIS相關的問題,關閉此線程(並移動到gis.stackexchange :) - 這要歸功於L .Yip的評論)。這裏是一個輸出的柵格的列表我的兩個光柵特性(單元格大小在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
S05Clip_30m,88.9371580833349,88.937158083333

謝謝!

+0

對於它的價值,沒有得到任何答案的可能原因是因爲我們都不知道什麼是「柵格屬性」。使用我的魔法水晶球,我認爲你在談論與GIS相關的東西 - 應用[[gis]]標籤可能會有所幫助。另外,「有一個堆棧交換!」:http://gis.stackexchange.com。 –

+0

啊,這是非常有用的 - 謝謝你。作爲一名新用戶,我很難判斷我應該提供什麼樣的細節和環境。我知道Stack Overflow是一把大傘,所以你使用gis.stackexchange的建議非常有幫助。謝謝你。 – Dre

+0

不用擔心。 StackOverflow確實是一個大傘,但另一方面是我們不擅長特色。使用正確的標籤有助於吸引你所追求的專家的注意力,但通常更好的方法是隻進行適當的堆棧交換,並將它們一直掛在外面。 :) –

相關問題