Polymer大气校正环境配置

目录

1.polymer源码下载
2.配置环境
3.事例

建了一个QQ群,大家可以在里边聊聊水色遥感数据下载和数据处理方面的事情:1087024529

首先说一下我的系统及Python版本号

Ubuntu 20.04
Python 3.6.5

1.polymer大气校正

POLYMER(POLYnomial based approach applied to MERIS data)大气校正算法最初是为MERIS传感器开发的,该算法的主要优势是对太阳耀光区域进行大气校正。对于该算法的详细说明,请参考论文:

STEINMETZ F, DESCHAMPS P Y, RAMON D. Atmospheric correction in presence of sun glint: application to MERIS[J]. Opt Express, 2011,19(10): 9783-9800.

作者将该算法的源码进行了发布,并且提供了很多接口方便其他人使用(为作者的开源精神干杯)。
polymer官方链接(请大家不要再被骗积分了,有些无良博主也真是够了):
https://www.hygeos.com/polymer
在这里插入图片描述

polymer的作者建的有博客页(Forum),有不懂的问题可以在里边提问。

下载后,其实是一个压缩包(文件结构如下),需要自己配置环境然后才能使用。
在这里插入图片描述

2.配置环境

其实作者提供了一个说明书(README.md),可以按照里边的步骤一步一步安装。所以这里按照说明书种的步骤进行说明。

注意:作者在说明文档里说,他只在Linux系统下进行了测试,因此我这里也在Linux系统下安装

2.1.安装需要的软件,首先,需要系统中已经安装了python、cython和gcc软件。
我直接在系统中安装的anaconda,所以直接跳过了安装python和cython的步骤,这两个的安装比较常规,不再说明。安装gcc可以在终端中输入:

sudo apt-get install gcc

2.2.安装需要的python库,作者在说明文档里提供了所需python库的列表。如下:

  numpy             
  scipy             
  python-hdf4 (or pyhdf)           
  pandas           
  pyepr            
  netCDF4                           
  lxml           
  glymur         
  pyproj      
  ecmwf-api-client            
  cdsapi        
  xarray            
  pygrib        
  gdal      

如果你使用的是anaconda,作者提供了一个一键安装的脚本:install-anaconda-deps.sh。不过我还是建议一个库一个库安装。
在安装gdal库前,需要系统中安装libgdal-dev,安装pyhdf前需要在系统中安装libhdf4-alt-dev。

sudo apt-get install libhdf4-alt-dev
sudo apt install libgdal-dev

2.3.以上装好之后,在polymer文件夹中打开终端,在终端中输入make,进行编译即可

make

即可。

3.事例

下面就可以利用polymer提供的接口处理自己的数据了,作者提供了很多事例,这里就不再介绍。最好在自己的脚本里把polymer的路径加上,在python程序中加入如下代码:

sys.path.append('/home/hyzhao/polymer-v4.13/')

之后就可以导入polymer提供的函数。
下面是我批量处理数据的一个例子。

ancillary参数,就是在大气校正时,利用的一些臭氧、风速等数据,Ancillary_NASA就是在校正的时候,从NASA上下载这些数据,还有其他数据源,利用不同的数据源,最后的结果可能会不同。对于OLCI的大气校正,可以不用指定该参数。

关于对OLCI的大气校正,我在polymer作者建立的博客页中做了提问,这里也贴出来供大家参考。
https://forum.hygeos.com/viewtopic.php?f=7&t=80

下边的代码,关键部分就是我定义的Process_OLCI函数。其他的只是在改变输入文件路径和输出文件路径。

import os 
import sys
import time
import datetime
from subprocess import call
sys.path.append('/home/hyzhao/polymer-v4.13/')
from polymer.main import run_atm_corr
from polymer.main import Level1
from polymer.main import Level2
from polymer.level2_hdf import Level2_HDF
from polymer.level2_nc import Level2_NETCDF
from polymer.level1_nasa import Level1_NASA
from polymer.level1_olci import Level1_OLCI
from polymer.ancillary import Ancillary_NASA


def Process_OLCI(inputFile,outputFile):
    run_atm_corr(Level1_OLCI(inputFile,ancillary=Ancillary_NASA()),
    Level2_NETCDF(filename=outputFile),
    calib=None,
    bands_corr=[412,443,490,510,560,620,665,754,779,865],
    bands_oc=[412,443,490,510,560,620,665,754,779,865],
    bands_rw=[400,412,443,490,510,560,620,665,674,681,709,754,779,865,885,1020])


#--------------------------------------------------------------
#需要更改的变量
#inputFilePath='/home/hyzhao/321/Data/'
#outputDir='/home/hyzhao/321/Polymer/'
inputFilePath='/home/hyzhao/ShareWin/Data/'
outputDir='/home/hyzhao/ShareWin/Polymer/'
#--------------------------------------------------------------

inputFilePathList=[]
outputFilePathList=[]

fileList1=os.listdir(inputFilePath)
for fl1 in fileList1:
    outputFilePath=outputDir+fl1+'_Polymer_Add_Para.nc'
    if os.path.exists(outputFilePath):
        continue
    else:
        outputFilePathList.append(outputFilePath)
        filePath2=inputFilePath+fl1
        fileList2=os.listdir(filePath2)
        filepath3=filePath2+'/'+fileList2[0]
        inputFilePathList.append(filepath3)


for ifpl,ofpl in zip(inputFilePathList,outputFilePathList):
    try:
        print('开始处理-----------'+str(datetime.datetime.now()))
        print(ifpl)
        Process_OLCI(ifpl,ofpl)
        print('处理结束-----------'+str(datetime.datetime.now()))
        time.sleep(5)
        print('\n\n')
        
    except:
        print(ifpl+'处理失败')
        continue
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值