Windows7 64位環境6sv2.1大氣傳輸模型修改源碼添加國產高分衛星GF-1 GF-2光譜響應支持


下面開始添加國產衛星光譜響應的支持:

以下主要參考文章“6S大氣傳輸模型修改源碼添加、自定義衛星光譜響應(以HJ-1B CCD為例)”網址:http://blog.csdn.net/sam92/article/details/50390556

我是在Windows7 64位系統下做的。6sv2.1版本,還是有很多注意問題的。

添加GF-1與GF-2傳感器光譜響應支持,從中國資源衛星網站上下載。

 

1. 修改main.f 

解壓壓縮包之后,找到main.f打開。 可以發現首先出現與傳感器有關的代碼是在第363行的nsat變量:

 

 

nsat保存了傳感器波段名稱字符串,會顯示在輸出結果的傳感器名稱上。所以我們要在nsat的末尾加上我們自己的傳感器:

GF1 PMS1

GF1 PMS2

GF1 WFV1

GF1 WFV2

GF1 WFV3

GF1 WFV4

GF2 PMS1

GF2 PMS2 

SPOT5 HRG

 

我加了8個字符串。注意保持字符串長度和之前的字符串長度一致(包含空格17個字符),看到代碼292行: 

 

     這里是nsat的定義,nsat(200)*17改為nsat(209)*17。

接下來,看到代碼大約1319行,關於spectral conditions的說明,可以添加傳感器的說明,添加編號(200-240),

 

這個編號是索引依據,大約1407行左右: 

 

這個注釋說明了不同傳感器輸入對應應該goto哪一個語句,把自己的傳感器加進去。如果輸入是200-225,則goto 165編號的GF1行。如果輸入是226-235,則goto 166編號GF2的行。如果輸入是236-240,則goto 167編號SPOT5的行。注意檢查一下goto的編號是否已經存在了。 
這只是修改了注釋,接下來修改代碼。就在注釋下方編號18的goto,觀察一下就是與注釋相對應的,我們把自己的傳感器加在下方: 

 

    然后就是寫編號為165、166、167的代碼行了,在編號164的下方,稍微修改一下函數名就好,注意括號里的(iwave-199),而不是(iwave-200),這是保證輸入參數波段號從1開始。

 

對mian.f的修改完成!

GF1波段26個,編號200-225

GF2波段10個,編號226-235

SPOT5波段5個,編號236-240

2. 制作傳感器文件(SPOT5.f 

下面制作傳感器光譜響應文件。新建一個文件,取名為SPOT5.f,注意文件名和上一步call的函數名一致。 內容拿MODIS.f全部復制粘貼過來。 

由於SPOT5有5個波段,所以定義sr需要5行,下面定義每一個波段上的光譜響應了。用excel很簡單就能把光譜響應函數的光譜間隔差值到了2.5nm。

 

一行一行解釋,首先注釋行說明了起始波長和終止波長,下面是具體每一個波長上光譜響應值。注意每一行是1501列的,這個不能修改。因為6s中光譜范圍是0.25-4um,間隔為0.0025um,所以有(4-0.25)/0.0025+1=1501個波長。7行的數據中第一項92*0說明這一行數據前92個數為0;最后一項1343 * 0說明最后1343個數為0。中間有66個光譜響應值,一共是92+1343+66=1501個波段。具體計算方法是:假定光譜響應的范圍是(a,b),則前面的0計算方法是(a-250)/2.5,中間非零的計算方法是(b-a)/2.5+1;后面的0是(4000-b)/2.5。

按照上面的方法繼續完成剩余的3個波段,最后需要修改各個波段的上下限: 

 

3. 修改makefile 

最后要修改一下makefile,很簡單,打開makefile,在那一長串的字符最后加上我們的 GF1.o、GF2.o、SPOT5.o就OK了: 

 

編譯 即可

如果編譯成功的話,就可以運行6s程序了, 

 output中可以看到我們自己加入的傳感器波段名  以及大氣校正的結果。

 

 

添加光譜響應還是很有比較的,比如實驗結果表明,GF2的兩個PMS傳感器波段2的差異還是很小的,但與TM的對應波段還是有差距的,大氣校正過程不建議近似替代。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM