arcgis批量計算柵格資料平均值(arcpy方法)
arcgis批量裁剪柵格資料
arcgis批量柵格重取樣(arcpy方法)
二、多資料夾場景
總結多源遙感資料的使用如何快速計算?處理為相同維度的柵格資料,那麼,乙個nb的批處理指令碼派上了用場!祭出arcpy
柵格資料重取樣主要使用arcpy的resample_management函式。
函式使用:
resample_management (in_raster, out_raster,
,)
常用引數簡介:
in_raster:想要更改空間解析度的柵格資料集
out_raster:要建立的資料集的名稱、位置和格式
cell_size:使用現有柵格資料集的新柵格的像元大小或指定其寬度 (x) 和高度 (y)
resampling_type:根據待處理資料型別選擇相應的重取樣方式
nearest — 適用於離散資料,例如土地覆被 | 處理速度最快,對畫素值的更改最小(常用)
bilinear — 適用於連續資料 | 平均化(距離權重)周圍 4 個畫素的值
cubic — 適用於連續資料 | 擬合周圍16個畫素的平滑曲線
majority — 適用離散資料 | 賦值像元 3 x 3 視窗中的最高頻值
注意:重取樣時應根據不同的需求進行插值方式選取,盡量避免對畫素值的改變,從而避免對地物光譜資訊或分類屬性的錯解。
輸入:乙個含有若干柵格資料的資料夾(本例為「.tif」格式)
輸出:在輸出路徑資料夾下生成若干tif格式資料
**例項:
# -
*- coding: utf-8-
*-import glob
import os
import arcpy
# 輸入路徑 應該注意,中文路徑,會導致讀不出檔案
inws = r"f:\mekong\tif-8day\2017"
# 參考檔案路徑 使用柵格資料集(從其匯入方形像元大小)的路徑
inf = r"h:\myd09a1\b1\myd09a1_a2008001.mekongriver_basin.sur_refl_b01.tif"
cellsize =
" ".
format
(arcpy.
describe
(inf)
.meancellwidth,arcpy.
describe
(inf)
.meancellheight)
# 輸出路徑
outws = r"f:\tif-8day-re\2017"
# 利用glob包,將inws下的所有tif檔案讀存放到rasters中
rasters = glob.
glob
(os.path.
join
(inws,
"*.tif"))
# 迴圈rasters中的所有影像,進行按掩模提取操作
for raster in rasters:
print str
(raster)
namet = os.path.
basename
(raster)
.split
(".")[
0]+"_re.tif" # 自定義檔名
outname = os.path.
join
(outws, namet) # 合併輸出檔名+輸出路徑
arcpy.
resample_management
(raster, outname, cellsize,
"nearest"
)print
("ok!"
)
上例可實現對輸入路徑資料夾下的所有柵格資料的重取樣,但多年的資料都需要重取樣怎麼辦?
修改邏輯為進入二級目錄、**目錄…然後呼叫核心函式即可。
柵格重取樣費時、費事、費心思?想掛機處理?perfect,繼續來!
**如下:
# -
*- coding: utf-8-
*-import arcpy
import glob
import os
# 輸入路徑 應該注意,中文路徑,會導致讀不出檔案
inws = r"e:\tif-8day-glt"
# 參考檔案路徑 使用柵格資料集(從其匯入方形像元大小)的路徑
inf = r"j:\myd09a1\b1\myd09a1_a2008001.mekongriver_basin.sur_refl_b01.tif"
cellsize =
" ".
format
(arcpy.
describe
(inf)
.meancellwidth,arcpy.
describe
(inf)
.meancellheight)
# 輸出路徑 需做到輸入資料夾組織形式 與 輸出資料夾組織形式相同(可進一步自動化,懶)
outws = r"e:\tif-8day-glt-re"
# 以下邏輯為:
# 獲得子目錄全路徑,並進入子目錄
# 執行資料夾批量重取樣操作
path_list = os.
listdir
(inws) # 如果這裡是存了三年的資料,那裡面有三個資料夾,每個資料夾直接放了每年的資料
target_path_list = os.
listdir
(outws) # 輸出路徑,也是裡面有三個年份的資料夾
for i in range
(len
(path_list)):
path = inws +
"\\"
+ path_list[i] # 資料夾列表 # 那這裡就得到了年份的路徑
target_path = outws +
"\\"
+ target_path_list[i] # 這裡,應該是進入了年份的路徑,是處理後的資料存放的地方
# 利用glob包,將inws下的所有tif檔案讀存放到rasters中
rasters = glob.
glob
(os.path.
join
(path,
"*.tif"))
# 迴圈rasters中的所有影像,進行重取樣操作
for raster in rasters:
print str
(raster)
namet = os.path.
basename
(raster)
+"_re.tif" # 構造 輸出檔名
outname = os.path.
join
(target_path, namet) # 合併輸出檔名+輸出路徑 = 輸出檔案全路徑
arcpy.
resample_management
(raster, outname, cellsize,
"nearest"
) # 執行操作
print
(path_list[i]
+" --- ok!"
)print
(" --- all project is ok! --- "
)
arcpy牛皮!畢業萬歲!中期快樂!
定量遙感中的重取樣、按掩膜提取等操作均會對像元值產生一定改變,應注意。尤其是在重取樣時,要考慮不同插值方式對結果的影響。
arcgis批量處理柵格資料
在arcgis中,柵格資料的處理比較繁瑣,自帶的工具箱中可做的統計有限。本次借助arcpy對柵格資料進行批量處理,並可以實現柵格到numpy陣列的轉變,從而可以對其進行中位數 平均數 眾數等更多元化的統計分析。選用的arcgis版本為10.2,python版本為2.7,還需要numpy arcpy等...
ArcGIS批量裁剪柵格資料
arcpy批量計算柵格資料平均值 arcgis批量裁剪柵格資料 arcpy批量柵格重取樣 arcpy批量裁剪柵格資料 idl多程序批處理遙感資料 arcpy批量拼接柵格資料 做遙感資料處理,經常會用到,長時間序列的某些影像。這些資料的特點是 相同區域,不同時間,要使用同乙個shp來進行柵格裁剪。關於...
Arcgis(二) 掩膜與重取樣區別
掩膜與重取樣都可以達到改變解析度的作用,但側重點不一樣 掩膜主要是更改柵格面積達到與目標區域一樣 重取樣主要通過下面幾種取樣方法達到優化柵格的目的 方法 特點 適用物件 nearest 最近鄰分配法 最鄰近法直接將與某像元位置最鄰近的像元值作為該像元的新值。該方法的優點是方法簡單,處理速度快,且不會...