可視化之Earth NullSchool

2021-01-10 LET

上兩篇我們分別介紹了《Berkeley Earth》和《AQICN》兩個網站,今天來看一下Earth NullSchool。



這個網站的特色是風向圖,之前有一篇可視化之風向圖,曾經提到過這個網站,也詳細介紹了風向圖的技術實現原理。今天針對這個網站,再詳細的介紹一下。同樣,在公眾號中回復「worldwind」,會提供該網站的源碼Demo。


如上是該網站的一個動圖效果,有興趣的可以訪問網站了解一個大概。作者在github上公布了自己的源碼(和網站代碼略有不同),氣象數據來自NCEP,記得上周介紹的AQICN美國數據也是來自該網站,查了一下,該組織應該算是美國的國家氣象局:National Centers for Environmental Prediction。


吸取上一篇的教訓,直入主題。當然,想要了解風圖原理的,可以看看之前寫的可視化之風向圖,需要對風圖的數據和思路有一定了解,不然本文在理解上可能會有點吃力。



如上是具體數據列表,Mode裡顯示支持Air(風圖),Ocean(洋流),Chem(化學物),Particulates(顆粒物),Height指向不同高度,Overlay表示疊加圖層,比如風圖+溫度,洋流+浪高等,Control為時間軸控制項,比如歷史數據。點擊查看不同的數據效果,不難找到對應數據的url的規範。


氣象數據採用的是epak格式,二進位流,代碼中提供了數據規範。如下是數據規範和對應的JSON屬性:



從converter屬性,該數據來自netcdf,而這個格式在之前的Berkeley Earth中也提到過,而原始數據是grib形式,以我的理解,裡面應該有一個grib2netcdf2epak的過程,都提供了對應的轉換工具。至於為何繞圈,我搜索了一下大概,知道一個大概優劣,但貌似都不絕對,在此就不妄論了。


對我個人而言,花時間最久的是如何以localhost方式獲取該數據,因為它是HTTPS服務,做了Referer限制,對於我這個Java小白,絕對算得上是一個難題,不過反過來想,這不就是上天給我一個機會,讓我學JavaWeb嗎。花了不少時間,也請教了研發兩位牛人,終於在Jetty+Servlet下實現了一個Java版的Proxy,是本次最有收穫的地方,代碼一併奉上,見笑。


有了本地代理服務,對源碼進行簡單的修改,讓其走代理,就實現了localhost的部署,兩個參數:url和type。



在地圖初始化的時候,先構建了全球格網,是一個2:1的矩形,下面是經過投影后的球狀格網效果,主要用於後續獲取任意點在地球上的位置,進而獲取對應的風速(X,Y),該方法提供了臨近插值和雙線性插值兩種方式,該過程封裝在rectangularGrid函數中。



接著,開始請求氣象數據數據,解析過程封裝在decodeEpak函數中:獲取對應的JSON屬性,全球風圖是720*360大小,精度為0.5℃,每個點有X和Y兩個分量,在X和Y方向的向量,米單位。


萬事俱備只欠東風——起風。這裡有兩點,第一,平移縮放時沒有任何效果的,這是因為當bounds變化時,需要根據更新後的區域重新插值,計算量比較大,而插值的價值是精度上有保證,清晰,所以這是一個取捨。第二,不僅有一個風圖,還有一個柵格底圖,下圖藍綠色效果圖,仔細看,和風的走勢是吻合的,同時滑鼠點擊時,能獲取對應位置的屬性值。



對風場向量的插值過程是在interpolateField方式中實現的,這裡邏輯如下:1:創建當前窗口對應的掩膜,如上圖,全部區域都是黑色(0,0,0,0),只有地球對應的區域顏色為(255, 0, 0, 1) ;2隨機生成風粒子,每一個粒子有五個屬性,位置(XY),風速(UV)和生命周期(t);3類似一條掃描線,遍歷可視區域的每一像素點,通過掩膜判斷是否在有效範圍內,如果該點有效,則獲取其對應的經緯度;4以全球網格為索引,獲取該點對應的風場Field,保存到對應的向量場wind field,用於後面的風圖效果;5根據風場的強度,對應顏色表設置當前點的顏色強度,保存到mask掩膜中,這樣mask在更新時用來判斷區域是否可見,更新後則用於顯示地圖效果,也算是一圖兩用。如上是初始化的核心部分,裡面有很多小的細節,比如風向,在平面上,XY兩個向量是直線,而在球面上,要調整為對應的經緯度,是曲線(distortion函數)。


接著,每一幀根據風圖的原理,實時更新:風粒子的當前位置,根據當前位置的風速獲取下一幀的位置,數據更新(createField::field.move)後則開始渲染(animate.draw),這部分在風向圖原理裡面有很清楚的介紹,思路完全一致,這裡只是把關鍵點和對應函數實現對應起來,關鍵還是要思路,如果有意願不妨自己調試,便一目了然。


至於滑鼠點擊顯示當前狀態,代碼我沒有看,不過上述過程中已經提供了位置轉換,數據存儲,很容易獲取映射關係。


技術內容介紹完畢。


下一篇會拋開技術,從產品,數據,以及可視化效果等非技術層面上,和大家分享一下我對這三個網站的對比和想法。想要源碼的同學請回復「worldwind」~

相關焦點

  • Earth NullSchool全球天氣可視化模擬網 在地理教學中的應用初探
    摘要:Earth NullSchool全球天氣可視化模擬網是一款表現和再現力極強、參與性高、調控簡單靈活的在線網頁版地理教學軟體
  • Google Earth不能用了,地理老師還能用什麼
    提示:以下資源全部都是PC端,不確保手機能用1.佛系找衛星照片(僅俯視視角)推薦資源:NASA官網的「地球事件」https://earthobservatory.nasa.gov/map#2/0.0/0.0
  • 從太空告訴你,中國極度貧困之地如何改變
    氣流受阻之處形成了深藍色的強降水地帶內側則是黃色的乾旱和半乾旱地區這就是青藏高原這裡有中國最乾旱的土地新華社新媒體中心出品人:馮瑛冰製片人:蘇會志  賀大為  鍾昊熹執行製片/導演:程瑛編導:馮春數據及遙感技術:喬柯 張灝 劉柳視覺設計:郭超 王嘉棟後期製作:江育東 李奇 李東澤數據及可視化技術
  • 淺談數據可視化
    我主要進行了少量數據處理和系統可視化部分,在這個過程中,覺得數據可視化是一個非常迷人的話題,這過程中也了解了很多相關的資料,學習了一些基礎的工具,在這裡分享給大家,也是為自己做一個整理和記錄。1、什麼是數據可視化?
  • 「校花」可不是school flower啊!「校草」也不是school grass!
    小夥伴們,俗話說得好,愛美之心人皆有之,相信大家在讀書時代,都會忍不住對學校裡長得好看的人兒多看幾眼,我們美其名曰——校花校草。那「校花」、「校草」用英語該怎麼來描述呢?這「校花」可不是「school flower」啊!「校草」也不是「school grass」!
  • 《我的世界》都市傳說,關於Null歷史故事,比HIM和實體303還神秘
    在我的世界中,有him,實體303,null這三大巨頭。而且每個都表現得非常神秘,但是今天我們要聊的null比前兩個都要神秘。其實null他的意思是表示無效的代表的數字是零。所以我們經常把null稱為零值。
  • Down-to-earth 翻譯成到地球?外星人都不敢這麼說!
    哈嘍,大家早上好今兒周末,天氣晴前段時間看張藝謀導演的影裡面鄧超和孫儷組銀幕cp👫想到之前一個外國小哥哥評價鄧超He's trustworthy and down to earthtrustworthy 的意思是「靠譜兒」那 down to earth 是什麼意思?
  • 無錫高中英語補習班:on earth和on the earth有何區別?
    很多同學在學on earth和on the earth時候,都覺得一頭霧水。事實上,這兩個短語也確實容易搞混。下面馮老師就給同學們來小結一下如何區分這兩個短語。1、on earth這是一個很強勢的短語,等於-ever後綴,意思為「究竟,到底」舉例說明:We asked him what on earth he was up to.我問他究竟想幹什麼。Nothing on earth can stop us from going ahead.
  • Bunker及NullVoid幾項特性問答[官方快訊]
    問:我仍然有個疑問:null void可以阻止那些不消耗能量的技能麼?(例如閃耀,過載,修理,製造攔截機) 答:null void只阻止那些消耗能量的技能---這不包括你所提到的那些:比如閃耀,過載,修理,製造攔截機.另一方面,null void可以作為一種反隱形的手段.它可以在一定範圍內解除隱形單位的隱形.
  • Scientific Reports新特刊開放徵稿|Remote sensing of Earth...
    特刊簡介 遙感技術、方法及數據具有優秀的成像波段、模式、空間尺度和時間觀測能力,受益於此,地球的地表和深層動力學、地球地質過程、自然災難災害可以被探測,被更好地理解、監測、建模甚至進行預測。由此,關於地球過程的科學技術知識可以轉化為用於加強風險管理、適應和緩和戰略的關鍵信息。
  • Eyes on the Earth:美國宇航局地球可視化軟體
    其實這是「NASA(美國國家航空航天局)」聯合「噴氣推進實驗室、加州理工學院(「生活大爆炸」主角之一「霍華德·沃洛維茲」就在為這些機構效力)」推出的地球衛星可視化軟體。上圖就是ISS(國際空間站)飛過中國上空時的截圖。除了衛星的運行軌跡,還可以查看衛星的3D模型!
  • 基於WebGL的3D可視化告警系統關鍵技術解析 ThingJS
    #三維可視化# #3D開發#WebGL 3D技術新一代3D框架-ThingJS3D可視化告警系統案例基於ThingJS的通用架構設計WebGL 3D技術WebGL是一種在網頁瀏覽器中渲染3D圖形的 JavaScript API,無需加裝插件,只需編寫網頁代碼即可實現3D圖形的展示。
  • 英語作文:Save Earth
    新東方網>英語>英語學習>英語寫作>中小學英語作文>正文英語作文:Save Earth 2013-01-15 21:51 來源:恆星英語 作者:   Save Earth   This is the earth
  • 基於WebGL的倉儲糧食溫度告警可視化 ThingJS
    #三維可視化##3D開發#Web端糧堆溫度可視化什麼是B樣條曲線ThingJS 3D引擎技術糧堆的溫度可視化告警Web端糧堆溫度3D可視化為了控制穀物儲藏溫度,需要創造一個不利於蟲黴生長低溫環境的儲糧技術環境,然而出於成本考慮以及進出糧的需要,糧堆內的溫度傳感器設置數量有限,因此在儲糧當中測得的溫度值只是傳感器附近的溫度,其他部分則需要利用相應的方法進行數值模擬
  • 你還傻傻分不清on earth和on the earth嗎?
    Why on earthwould I go?the earth02:00來自隨唐英語電影口語一、on earthon earth主要是用在口語中,用來強調以下3種情況的說話語氣。例句1:How on earth did that happen?那到底是怎麼發生的?例句2:What on earth do you like about me? I swear I'm going to get rid of it.你究竟喜歡我哪一點?我改還不行嗎!2、和否定詞連用,表示「一點也不、絕對沒有」,相當於at all。