ArcGIS批量柵格重取樣(ArcPy方法)

2021-10-12 22:57:07 字數 3962 閱讀 8783

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 最近鄰分配法 最鄰近法直接將與某像元位置最鄰近的像元值作為該像元的新值。該方法的優點是方法簡單,處理速度快,且不會...