建了一个QQ群,大家可以在里边聊聊水色遥感数据下载和数据处理方面的事情:1087024529
喜大普奔,ACOLITE可以大气校正OLCI传感器数据了。虽然2021年8月就可以了,但…(忙)
这里介绍一下如何使用ACOLITE大气校正算法校正OLCI影像,及如何进行批处理。ACOLITE改版之后,之前我写过的批处理博客已经不再适用,但是思路还是原来的。ACOLITE对其它传感器的批处理流程也可参考本博客。
首先下载新版的ACOLITE
下载地址:https://github.com/acolite/acolite/releases
给作者一个Star吧!
下载完之后,还要再下载ACOLITE的查找表。下载地址:https://github.com/acolite/acolite_luts
至于为什么要再下载查找表,主要是是为了减小软件的初始体积。其实也可以不提前下载查找表,它可以边处理边下载,但可能特别慢,以至于下载断开,导致无法处理。
详见说明:https://github.com/acolite
下载好查找表之后,要把对应的文件进行替换,替换方法见:https://github.com/acolite/acolite_luts
首先用一幅影像走一下处理流程,并保存出一份setting文件。
使用界面操作的话,比较简单,但可以修改的参数较少。只需选择数据输入文件(如:xxxx.SEN),选择输出的文件夹。研究区,输出参数可根据需要填写。
选好后,点击Run processing按钮即可。
正在处理
下面来到了激动人心的批处理环节。
ACOLITE其实在处理时,是根据setting文件里的参数进行处理。这样我们的思路就是,根据GUI界面保存出一个setting文件例子,然后使用一个小程序循环修改setting文件中的输入和输出文件路径。再操作ACOLITE循环调用setting文件完成批处理。
首先保存出一个setting文件,在选择好输入输出路径后,点击Save按钮。
接下来看一下保存出来的setting文件里的内容
可以看到setting文件的内部结构,inputfile为输入文件夹,outputfile为输出文件夹,接下来是其它参数。其实ACOLITE还可以设置很多其它参数,这里只需要把你需要的参数加在setting文件里即可,具体可改的参数可参考ACOLITE说明文档。例如,我这里修改后的setting文件:
接下来是一个批处理的示例,供大家参考,具体参考注释:
#-*-coding: utf-8-*-
#@Author: zhaohaiyang
#@E-mail: [email protected]
#使用Acolite进行大气校正批处理Sentinel-3
#
#
#
################################################
import os
import shutil
import netCDF4 as nc
from subprocess import check_call
#--------------------------------------------------------
#需要修改的变量
example='D:/Data/test.txt' #一个Setting文件例子
s3dir='D:/Data/input/' #存放大量OLCI数据的文件夹
resultDir='D:/Data/output/' #输出文件路径
acolitepath='D:/acolite_202108/acolite_py_win/dist/acolite/acolite.exe' #acolite.exe的路径
#--------------------------------------------------------
#读出例子Setting文件的内容
with open(example,'r') as ef:
examplecon=ef.read().split('\n')
s3fileList=os.listdir(s3dir)
settingList=[] #存放各setting文件的路径
for s3f in s3fileList:
inputfile=s3dir+s3f
outputDir=resultDir+s3f.split('.')[0]
os.mkdir(outputDir)
examplecon[2]='inputfile='+inputfile #修改输入的文件路径
examplecon[3]='output='+outputDir #修改输出的文件路径
settingFile=resultDir+s3f.split('.')[0]+'_setting.txt' #不断生成新的setting文件的文件名
settingList.append(settingFile)
with open(settingFile,'w') as outsetting:
for ec in examplecon:
outsetting.write(ec+'\n') #生成新的setting文件
for stl in settingList: #循环调用setting文件,进行批处理
cmdline=acolitepath+' --cli --settings='+stl
callout=check_call(cmdline)