Py6s批量大氣校正Landsat8

2021-10-22 02:52:44 字數 3062 閱讀 6186

裡面涉及三個路徑,分別是大氣校正主程式的路徑,landsat8資料解壓後的路徑,校正後輸出路徑,自行替換。

思路是通過windows的bat指令碼實現進入anconda prompt,然後輸入多個命令。即多個影像輸入輸出路徑,從而實現批量處理。

首先建立乙個txt檔案,然後輸入以下。

call d:\anaconda\scripts\activate.bat d:\anaconda

python "e:\atmosphericcorrection-master\atmosphericcorrection_landsat8.py"

--input_dir=e:\lc08_l1tp_029030_20190102_20190130_01_t1 -

-output_dir=e:\a

python "e:\atmosphericcorrection-master\atmosphericcorrection_landsat8.py"

--input_dir=e:\lc08_l1tp_023036_20191124_20191203_01_t1 -

-output_dir=e:\b

call後的兩個路徑需要替換成自己本地的路徑。第乙個路徑是anaconda自帶的prompt啟用指令碼,在anaconda本地安裝的scripts資料夾下。第二個就是anaconda本地安裝的資料夾路徑。下面的第二三行就相當於在anaconda prompt中呼叫py指令碼了。

修改完畢後,將txt檔案的字尾修改為.bat。然後開啟cmd,將bat檔案拖入回車執行即可實現批量大氣校正。

由於全色波段8不支援大氣校正,所以會報錯。一般有大氣校正需求的波段多為4、3、2。所以建議校正前將landsat8影像資料夾中其他波段刪除,提高效率。

這裡補充乙個批量解壓landsat8資料的**,解壓後為原始檔案同名資料夾,執行時放在landsat8的資料的上層目錄中執行即可。

import tarfile

import os

import glob

import shutil

# 建立資料夾

defmkdir

(path)

:

path=path.strip(

)# 去除首位空格

path=path.rstrip(

"\\"

)# 去除尾部 \ 符號

# 判斷路徑是否存在

# 存在 true

# 不存在 false

i***ists=os.path.isdir(path)

# 判斷結果

ifnot i***ists:

# 如果不存在則建立目錄

# 建立目錄操作函式

os.makedirs(path)

print

(path +

' 建立成功'

)return path

else

:print

(path +

' 目錄已存在'

)# 如果目錄存在則不建立,並提示目錄已存在

if os.listdir(path)

:print

('資料夾已存在且有檔案'

)else

: os.rmdir(path)

os.makedirs(path)

print

('已刪除同名空資料夾並建立'

)return path

pypath = os.path.split(os.path.realpath(__file__))[

0]file_floder_list = os.listdir(pypath)

# 路徑下資料夾和檔名列表

floder_list =

[pypath+os.sep+

file

forfile

in file_floder_list if os.path.isdir(pypath+os.sep+

file)]

# 資料夾列表

angfile_list =

for floder in floder_list:

tarfile_list = glob.glob(floder+os.sep+

'*.gz'

)# 獲取站點資料夾下的壓縮檔案

forfile

in tarfile_list:

jieya_floder = mkdir(

file[0

:-7]

)# 建立同名資料夾

tar_file = tarfile.

open

(file

) tar_file.extractall(path=jieya_floder)

# 解壓至新建同名資料夾

tar_file.close(

)# 關閉檔案,必須有,釋放記憶體

# 下面的**是刪除landsat8資料中的_ang.txt檔案, 是我個人的需求,已經注釋掉

後續有需要的時候會補充批量刪除無需校正波段生成bat指令碼的指令碼。

6S大氣校正模型說明

6s second simulation of satellite signal in the solar spectrum 輻射傳輸模型是由vermote e 和 tanre d 等人用fortran編寫的適用於太陽反射波段 0.25 4um 的大氣輻射傳輸模型。這種模型是在假定無雲大氣的情況下考...

Py6S配置教程(win10 64)

打算工程化6s模型,批量處理資料,首先需要配置6s模型,配置過程如下,本系統為win10 專業版 x64,版本號1909 在此資料夾路徑中輸入cmd下開啟命令列,輸入make進行編譯。編譯成功後,生成.o檔案,將sixsv1.1修改字尾為sixsv1.1.exe即可。出現上圖所示即編譯完成,編譯好後...

基於6s模型的遙感影像大氣校正方法

目的 針對光學遙感影像 landsat 8 sentinel 2 gf 1 gf 2 的大氣校正自動化實現方法,大多數是使用envi的flassh模組進行大氣校正,雖然現在envi提供了flassh模組的呼叫介面。但是當需要對大規模資料進行處理時,尤其是在linux環境下,envi的環境配置特別麻煩...