這段時(shí)間北京隔三差五就是一場(chǎng)雨据德,雨后天空簡(jiǎn)直藍(lán)的不像話滓玖,胖友圈每次都會(huì)來(lái)一波秀藍(lán)天秀風(fēng)景毫目。在這里我就來(lái)秀一下PM2.5就斤。
最終效果
工具
- 現(xiàn)代瀏覽器(支持WebGL即可)
- 代碼編輯器
- QGIS:QGIS是一個(gè)用戶界面友好的桌面地理信息系統(tǒng),可運(yùn)行在Linux庸推、Unix常侦、Mac OSX和Windows等平臺(tái)之上。QGIS是基于Qt,使用C++開發(fā)的一個(gè)用戶界面友好贬媒、跨平臺(tái)的開源版桌面地理信息系統(tǒng)聋亡。
步驟
下載數(shù)據(jù)
地理信息數(shù)據(jù)哪家強(qiáng)?NASA
http://sedac.ciesin.columbia.edu/data/set/sdei-global-annual-avg-pm2-5-2001-2010/data-download
上面的鏈接就是下載數(shù)據(jù)的地址际乘,是NASA托管在哥倫比亞大學(xué)的地球數(shù)據(jù)信息系統(tǒng)數(shù)據(jù)中心坡倔,提供了2001年到2010年的全球PM2.5數(shù)據(jù)赡译。需要翻墻才能訪問雇盖。第一次下載需要注冊(cè)搓谆,比較麻煩枚尼,最后我會(huì)上傳一個(gè)數(shù)據(jù)到網(wǎng)盤。
事實(shí)上我們下載得到的是geotiff文件蜒什,下載下來(lái)可以直接打開可以看到一幅世界地圖的圖片管毙。
這個(gè)時(shí)候就需要QGIS登場(chǎng)了
抽取數(shù)據(jù)
QGIS的使用方法我是從google上搜刮來(lái)的背桐,勉強(qiáng)能完成這次的可視化任務(wù)关拒。
現(xiàn)在我們要從下載到的tif文件中提取出經(jīng)緯度和對(duì)應(yīng)的值的數(shù)據(jù)佃蚜。
打開QGIS庸娱,在左上面板中選擇下載的tif文件,打開后就會(huì)在右邊的主窗口看到一幅有顏色差異的世界地圖谐算,在左下角可以看到這個(gè)文件包含的數(shù)據(jù)集合的最大值和最小值(54.202-1.322)熟尉。
接下來(lái)我們要導(dǎo)出數(shù)據(jù)了,點(diǎn)擊柵格=>轉(zhuǎn)化=>格式轉(zhuǎn)化
然后設(shè)置輸出文件路徑洲脂,在設(shè)置輸出路徑的時(shí)候會(huì)有一個(gè)格式選項(xiàng)斤儿,選擇Gridded XYZ。
輸出大小可以勾選25%或者不勾選(不勾選會(huì)默認(rèn)100%)恐锦,在這里輸出大小可以理解為采樣精度往果。值得一提的是在下面有一個(gè)“完成后載入畫布中”的選項(xiàng),建議把這個(gè)選項(xiàng)取消踩蔚。
點(diǎn)擊"OK",我們就會(huì)得到經(jīng)緯度和值的數(shù)據(jù)集合棚放,如果選擇100%大小的話文件體積還是蠻大的枚粘。
數(shù)據(jù)整理
打開后我們發(fā)現(xiàn)有很多經(jīng)緯度坐標(biāo)對(duì)應(yīng)的值是-999馅闽,其實(shí)就是0,我們可以把值為-999的數(shù)據(jù)去掉馍迄。另外導(dǎo)出數(shù)據(jù)的經(jīng)緯度會(huì)保留十幾位小數(shù)福也,這也是沒有必要的,可以處理為只保留小數(shù)點(diǎn)后五位攀圈。經(jīng)過這兩步處理暴凑,我們完成了對(duì)數(shù)據(jù)的瘦身。
可視化
在本例中赘来,我們將使用WebGL-Globe進(jìn)行可視化呈現(xiàn)现喳,WebGL-Globe是由google的dataarts團(tuán)隊(duì)基于Three.js開發(fā)的簡(jiǎn)單易用的地理信息數(shù)據(jù)三維可視化工具。
WebGL-Globe => https://github.com/dataarts/webgl-globe
通過查看readme文件發(fā)現(xiàn)犬辰,WebGL-Globe有自己的數(shù)據(jù)結(jié)構(gòu):
var data = [
[
'seriesA', [ latitude, longitude, magnitude, latitude, longitude, magnitude, ... ]
],
[
'seriesB', [ latitude, longitude, magnitude, latitude, longitude, magnitude, ... ]
]
];
latitude, longitude, magnitude => 緯度嗦篱,經(jīng)度,數(shù)值量級(jí)
將我們的數(shù)據(jù)處理成WebGL-Globe接收的形式幌缝,然后我們就能得到一個(gè)很棒的可視化作品了灸促。
當(dāng)然,這可是網(wǎng)頁(yè)中的可以交互的3D可視化哦涵卵,還蠻酷炫的不是嗎浴栽?