星期一的早上,我在辦公區(qū)鳥瞰窗外,目光所到之處,用顧城的那首“你看天時(shí)很近,看我時(shí)很遠(yuǎn)”倒是格外的應(yīng)景。作為一名父親,看著工位上3M的口罩,想想此刻還在熟睡的孩子,多少有些無奈——又是PM25指數(shù)200+的一天。這么大的中國,如何給孩子找一方凈土,讓孩子能夠健康快樂的成長。正是帶著這樣的一個(gè)想法,我查詢了幾個(gè)我比較關(guān)注的城市的PM值,比如北京,成都,杭州,深圳,廈門等地方,都不理想,一種趕盡殺絕的節(jié)奏,難道在中國只能做君子,自強(qiáng)不吸?同時(shí),我個(gè)人發(fā)現(xiàn)一個(gè)情況,我的手機(jī)是華為榮耀6plus,天氣數(shù)據(jù)顯示來自中國天氣網(wǎng),PM25指數(shù)相比AQI(Air Quality Index)上的要偏低。比如我所在的城市成都,此刻手機(jī)上顯示PM25指數(shù)為162,而AQI上顯示為212,對(duì)比如下:
這個(gè)過程中,體現(xiàn)了我對(duì)數(shù)據(jù)的三點(diǎn)需要:實(shí)時(shí)性,準(zhǔn)確性和易對(duì)比。首先數(shù)據(jù)必須是準(zhǔn)確的,及時(shí)的,這樣最有價(jià)值,這兩點(diǎn)不難理解。易對(duì)比的涵義則比較寬泛,并沒有一個(gè)絕對(duì)的標(biāo)準(zhǔn)。首先數(shù)據(jù)量上要豐富,這樣客觀上才有有代表性,其次可視化上要便于理解,比如數(shù)據(jù)都有自己的大小和位置,如何形象高效的展現(xiàn)這些信息,怎樣把數(shù)字更好的轉(zhuǎn)化為易于人類感官理解的形式,最后就是一個(gè)抽象的過程,提煉有價(jià)值的數(shù)據(jù),降低過多數(shù)據(jù)帶來的噪音。當(dāng)然,我在做這個(gè)小應(yīng)用的時(shí)候并沒有考慮這么多,只是做完后自己的總結(jié)知新,看似有用,實(shí)則完全為了提升逼格。
帶著這些疑問,我個(gè)人認(rèn)為,AQI的數(shù)據(jù)是全球各個(gè)監(jiān)測站的數(shù)據(jù),更原始一些,更具有代表性和權(quán)威性,在中國呆久了,如果不對(duì)政府提供的數(shù)據(jù)有懷疑,只能證明自己too young too naive了。所以很自然的覺得AQI的數(shù)據(jù)在準(zhǔn)確性和實(shí)時(shí)性上是目前的最佳選擇。而且我知道某網(wǎng)站上是有實(shí)時(shí)的全球的AQI數(shù)據(jù),反編譯代碼獲取里面請(qǐng)求數(shù)據(jù)的方法應(yīng)該可行。所以,從技術(shù)上是可以搞定數(shù)據(jù)需求的。
有了數(shù)據(jù),可視化上如何展示呢,如何找到一種直觀,簡單的形式來?作為一個(gè)GIS行業(yè)的碼農(nóng)Coder(以前我并不介意碼農(nóng)這個(gè)稱呼,但工作時(shí)間越久,發(fā)現(xiàn)真的大部分程序員只配做碼農(nóng),所以本著謙讓的態(tài)度,還是把這個(gè)稱號(hào)讓給他們吧),當(dāng)然要在地圖上展示了。這是某網(wǎng)站上的一個(gè)展示效果,也是我的參照物,這里通過地圖來解決對(duì)經(jīng)緯度的理解,通過數(shù)字和顏色來解決對(duì)PM指數(shù)的感官體驗(yàn):
但從細(xì)節(jié)處,我覺得還可以做到更好,第一,地圖本身就是對(duì)地球的一次抽象,因此這個(gè)抽象過程中,在數(shù)據(jù)的形象和對(duì)比上是存在損失的,第二,該網(wǎng)站的技術(shù)較為傳統(tǒng),數(shù)據(jù)都是以HTML標(biāo)簽的形式來展現(xiàn),在數(shù)據(jù)較大的情況下存在性能的瓶頸,第三,如下圖,按照AQI的標(biāo)準(zhǔn)來做的顏色區(qū)分,但這個(gè)Level是區(qū)間分段的方式,而不是單值的一一映射的關(guān)系。比如PM值300和500是有差別的,但卻對(duì)應(yīng)同一個(gè)顏色,可以更好的體現(xiàn)這種差別。
當(dāng)我看到這里就想到用球的形式來展現(xiàn)全球的PM數(shù)據(jù),應(yīng)該會(huì)有一個(gè)不錯(cuò)的視覺效果,而且也可以很好的體現(xiàn)WebGL在大數(shù)據(jù)渲染上的性能優(yōu)勢,這是吸引我的一個(gè)因素。同時(shí)我覺得霧霾目前是一個(gè)大眾比較關(guān)注的問題,所以不應(yīng)該只是我一個(gè)人的小眾喜好,對(duì)很多人或地球人而言都是一個(gè)興趣點(diǎn),坦白說,我當(dāng)時(shí)覺得想想就好,上班了,撞鐘時(shí)間開始了。這時(shí)候是羅胖的一句話開導(dǎo)了我“如果一件事情可做可不做,而你又有時(shí)間做的話,那你最好去做,萬一有什么意料之外的收獲的,這就是機(jī)會(huì)”。開工。
首先就是反編譯某網(wǎng)站的JS代碼,把請(qǐng)求PM數(shù)據(jù)的url和參數(shù)規(guī)范找到,url里面竟然有key參數(shù),所以就得看看在自己的環(huán)境下是否能走通。說明一下,據(jù)我了解,該網(wǎng)站是一個(gè)在中國北京?居住的外國人搞的,而且數(shù)據(jù)比較敏感,畢竟有損墻國形象,我從AirNow網(wǎng)站取