失蹤人口迴歸+爺青回,本篇介紹下Suomi NPP VIIRS夜間燈光遙感數據下載。
1 夜間燈光遙感數據簡介
夜間燈光遙感數據就是指利用遙感技術捕捉夜晚地球上的燈光分佈狀況,可以有效反映人類活動的空間分佈,因此常用於各類社會經濟數據方面的遙感反演。這方面應用的知名案例包括武漢大學李德仁院士與李熙老師利用夜間燈光監測敘利亞戰爭狀況,斯坦福大學利用夜間燈光與機器學習算法識別全球貧困人群等。
當前常用的夜間燈光遙感數據主要是兩個衛星,一個是DMSP(Defense Meteorological Sate-llite Program)是美國國防部的極軌衛星計劃,傳感器空間分辨率為3000 m,生產的夜光遙感產品空間分辨率通常為1000 m,同時DMPS夜光遙感數據是當前最長時間序列的夜光遙感數據(自1992-2013),可以提供長時間序列連續的夜光遙感監測。另一個則是2011年發射的新一代對地觀測衛星Suomi NPP,該衛星搭載的可見光/紅外輻射成像儀(Visible Infrared Imaging Radiometer Suit,VIIRS)能夠獲取新的夜間燈光遙感影像(Day/Night Band,DNB波段),空間分辨率也提高到750 m(以下簡稱NPP-DNB),生產的夜間燈光遙感產品空間分辨率通常為500 m。這兩個衛星以外,還有一些其他相關的夜間燈光衛星,但是數據較少,且不易獲取。值得注意的是,2018年中國也發射了自己的首顆專業夜間燈光衛星(由武漢大學設計與發射)——珞珈一號。
另外這裡推薦幾篇相關的夜間燈光遙感文章。第一篇是我參與的一篇RSE論文翻譯。第二篇是RSE最新的夜間燈光遙感綜述文章。
- 有GIS有意思︱運用夜燈與社交數據一眼識破北上渝三城多中心結構
- Remote sensing of night lights: A review and an outlook for the future
2 夜間燈光遙感數據下載
1 年和月尺度產品下載
DMSP夜間燈光遙感數據提供年尺度產品下載。由於該衛星存在過飽和效應,NOAA為此發佈了多套去飽和的校正影像,關於DMSP夜間燈光遙感數據的詳細介紹可以參考ENVI/IDL的博客:DMSP衛星介紹和數據下載。
DMSP夜間燈光遙感數據年尺度產品下載地址:https://ngdc.noaa.gov/eog/dmsp.html
NPP夜間燈光遙感數據提供了年,月和日尺度數據下載。其中年和月的數據為合成產品,經過一定校正處理和合成。當前NPP夜間燈光遙感數據的年產品和月產品合成工作由科羅拉多礦業大學承擔。NPP夜間燈光遙感數據的年產品和月產品下載鏈接,其中月產品數據存在3個月滯後期。
科羅拉多礦業大學提供的NPP夜間燈光遙感數據年尺度和與尺度下載地址:https://eogdata.mines.edu/download_dnb_composites.html
此外,這裡要介紹另一套夜間燈光遙感數據產品。約莫兩年前我曾經收到一位當老師的同學提出的一個關於夜間燈光遙感問題:為什麼印度的燈光比中國亮?之前我不是特別明白怎麼回答,一直到看到我即將介紹的這套產品,終於有了答案,這套產品名為“火石(Flint)”,是由中國科學院中國遙感衛星地面站陳甫團隊研製的地球夜光產品數據集。
這裡引用該團隊在科普中國發表的文章中的文字“之前說NASA公佈的夜光圖上印度比中國亮,主要原因那是圖沒做好,另外一個原因是印度農村密度大,所以燈光分佈廣,其實不怎麼亮”來回答前面那個問題。
“火石(Flint)”產品主頁:http://satsee.radi.ac.cn/cfimage/nightlight/
科普中國文章“ 5年夜光遙感監測合成,中科院版全球高清夜光數據集來了!”:http://www.kepuchina.cn/wiki/yzts/201805/t20180518_629897.shtml
2 日尺度產品下載
本篇博客主要介紹NPP夜間燈光遙感數據日尺度產品的下載。目前NOAA官網提供從當天起到60天前的日尺度夜間燈光產品,全球被分割為6塊。
NOAA NPP夜間燈光遙感數據日尺度產品下載地址:https://ngdc.noaa.gov/eog/viirs/download_ut_mos.html
初次外,NOAA也提供了過往的歷史日尺度數據下載,被集成在NOAA的綜合大型數組數據管理系統(The Comprehensive Large Array-data Stewardship System,CLASS)中。
NOAA CLASS系統:https://www.bou.class.noaa.gov/saa/products/welcome
如果想下載需要先註冊該網站的賬戶,接著選擇傳感器,NPP夜間燈光遙感數據請選擇VIIRS_SDR的數據。
點擊GO以後,跳轉到如下的頁面。
接著可以設置感興趣研究區以及研究時間段。
選擇所需的波段。
NPP夜間燈光遙感數據常用的波段文件為以下兩個,一個是DNB數據。
另一個是對應的定位數據。
選擇完畢以後,點擊quick search % order。
接下來就會等收到NOAA CLASS的下載郵件(如下圖)。
這個數據同樣是採用FTP進行下載,對於FTP不瞭解的同學可以翻一下前面這篇博客:葵花8號衛星數據簡介與下載(一)——數據介紹與FTP下載。
這裡不贅述FileZilla軟件的安裝,只介紹如何配置FTP站點進行下載。
點擊站點管理器。主機地址就是郵件最上面第一行FTP地址,用戶為anonymous,密碼為user@internet。設置完畢點擊連接。
接下來會看到很多文件夾。根據你的訂單號找到對應的文件夾下。
然後把選擇的文件拖拽到左邊的本地文件夾即可下載。
NPP夜間燈光遙感數據用戶文檔:https://ncc.nesdis.noaa.gov/documents/documentation/viirs-users-guide-tech-report-142a-v1.3.pdf
NPP夜間燈光遙感數據初學者slides。
http://rammb.cira.colostate.edu/projects/npp/Beginner_Guide_to_VIIRS_Imagery_Data.pdf"
數據命名規則。
除了以上數據,日尺度的產品數據還有NASA製作的一套校正產品——NASA Black Marble Product。
下載鏈接:https://viirsland.gsfc.nasa.gov/Products/NASA/BlackMarble.html
3 NPP夜間燈光遙感數據讀取與可視化
1 Google Earth Engine
Google Earth Engine是Google推出的行星尺度的遙感雲計算平臺,提供了大量遙感數據的集成與運算工具。同時也包括DMSP和NPP夜間燈光遙感數據(月尺度和年尺度)。這裡給出樣例的可視化代碼。
var dataset = ee.ImageCollection('NOAA/VIIRS/DNB/MONTHLY_V1/VCMSLCFG')
.filter(ee.Filter.date('2020-01-01', '2020-02-28'));
var nighttime = dataset.select('avg_rad');
var nighttimeVis = {min: 0.0, max: 60.0};
Map.setCenter(-77.1056, 38.8904, 8);
Map.addLayer(nighttime, nighttimeVis, 'Nighttime');
運行結果。
月尺度和年尺度產品提供的是tiff產品。可以在ArcGIS和ENVI裡進行進一步處理。
2 日尺度hdf5數據讀取與可視化(ENVI)
關於用ENVI讀取日尺度hdf5數據的方式,詳情參見以下ENVI/IDL博客與L3HARRIS。
3 日尺度hdf5數據讀取與可視化(R語言)
這裡也介紹下如何在R語言裡讀取hdf5以及轉換格式。基礎的兩個包分別為raster和rhdf5。其中rhdf5必須通過BioManager包安裝。這裡是安裝命令。
install.packages('raster')
install.packages('BioManager')
BioManager::install('rhdfr')
hdf5是一個在科學計算領域有廣泛應用的數據格式,可以理解為多個文件夾壓縮而成的格式。對於這類文件讀取,首先需要先了解文件的結構才能讀取。這裡採用的命令就是h5ls。
h5ls(filename)
filename為hdf5文件名。如下圖所示給出了NPP夜間燈光遙感數據hdf5文件的具體結構。
我們所需要用到的屬性包括All_Data/VIIRS-DNB-GEO_All/下的Longitude和Latitude,以及All_Data/VIIRS-DNB-SDR_All/下的radiance,即夜間燈光DNB波段值。利用h5read函數讀取這幾個數據,命令行如下。
dnblat <- h5read(filename, 'All_Data/VIIRS-DNB-GEO_All/Latitude')
dnblon <- h5read("filename, 'All_Data/VIIRS-DNB-GEO_All/Longitude')
dnbrad <- h5read(filename, 'All_Data/VIIRS-DNB-SDR_All/Radiance')
這樣即得到了夜間燈光遙感數據矩陣形式存儲的經度,緯度以及波段值。接下來將三個矩陣組合成一個柵格即可。根據這樣即可得到一個柵格數據。
radpts <- cbind(long = as.vector(dnblon), lat = as.vector(dnblat), rad = as.vector(dnbrad))
radpts <- data.frame(radpts)
colnames(radpts) <- c("x", "y", "radiance")
e <- extent(randpts[, (1:2)])
r <- raster(e, ncol = ncol(dnbrad), nrow = nrow(dnbrad), crs = "+proj=longlat + datum=WGS84")
radr <- rasterize(radpts[, (1:2), r, radpts[,3], fun = mean)
簡單可視化結果如圖。
另外可以看到這個DNB波段值數值較小,是經過縮放的,需要乘以10的9次方使得DNB波段值呈現正常範圍。當然日尺度的數據由於雲,月相等因素的影響,質量還有待提升。
這裡也提供一些轉換NASA的hdf5夜間燈光遙感相關數據的代碼。
Working with Daily NASA VIIRS Surface Reflectance Data
參考鏈接: