趙寶筑 王彪 吳和俐 錢成偉 劉英春 羅陽
1.貴陽市烏當(dāng)區(qū)氣象局;2.貴州省氣象信息中心;3.貴州省貴陽市氣象局
為更好的研究歷史氣溫變化規(guī)律和增減發(fā)展趨勢,利用Python作為設(shè)計(jì)首選,Matplotlib、Plotnine等繪圖擴(kuò)展包作為可視化繪圖驅(qū)動(dòng),完成烏當(dāng)區(qū)各鄉(xiāng)鎮(zhèn)近十年氣溫可視化分析。本文利用烏當(dāng)區(qū)各鄉(xiāng)鎮(zhèn)2010-2020年氣溫?cái)?shù)據(jù)資料,分析烏當(dāng)區(qū)城區(qū)及各鄉(xiāng)鎮(zhèn)的氣溫分布情況,繪制氣溫?cái)?shù)據(jù)圖例。實(shí)驗(yàn)結(jié)果表明:大量的氣溫?cái)?shù)據(jù)能夠直觀形象展示并且可以有效分析出未來的氣溫大致走向及各地氣溫分布差異。
空氣溫度是我們?nèi)粘L鞖忸A(yù)報(bào)中的重要天氣要素,也是老百姓最為關(guān)心的天氣要素之一。近年來,烏當(dāng)區(qū)區(qū)域自動(dòng)氣象站得到飛速發(fā)展,站網(wǎng)網(wǎng)格逐漸精細(xì)。自2009年以來,陸續(xù)以溫度、雨量為主的氣象要素監(jiān)測站已基本達(dá)到數(shù)據(jù)全自動(dòng)監(jiān)測,全自動(dòng)傳輸?shù)闹笜?biāo),并且隨著氣象現(xiàn)代化的快速發(fā)展,烏當(dāng)區(qū)各鄉(xiāng)鎮(zhèn)區(qū)域站點(diǎn)已100%覆蓋。但由于縣級(jí)氣象臺(tái)站業(yè)務(wù)人員對(duì)預(yù)報(bào)服務(wù)欠缺扎實(shí)的預(yù)報(bào)理論基礎(chǔ),對(duì)各鄉(xiāng)平均氣溫分布趨勢、整體季節(jié)性溫度變化情況不明朗、不清晰,因此開展氣溫?cái)?shù)據(jù)可視化分析對(duì)了解歷史平均溫度的分布變化趨勢和季節(jié)性分布情況都有著一定的參考作用,也為地方政府掌握各鄉(xiāng)鎮(zhèn)溫度變化及季節(jié)性播種耕作工作提供一定的指導(dǎo)意義。
本文運(yùn)用2010年1月-2020年12月烏當(dāng)區(qū)國家氣象觀測站和8個(gè)具有代表性的各鄉(xiāng)鎮(zhèn)區(qū)域氣象自動(dòng)站地面觀測數(shù)據(jù),以Python為主要數(shù)據(jù)處理語言,Matplotlib、Plotnine為等圖例繪制擴(kuò)展包,對(duì)各鄉(xiāng)鎮(zhèn)區(qū)域站氣溫?cái)?shù)據(jù)和烏當(dāng)區(qū)國家站氣溫?cái)?shù)據(jù)進(jìn)行具現(xiàn)化展示,使業(yè)務(wù)人員可以更直觀、清晰的對(duì)烏當(dāng)區(qū)歷史氣溫整體變化有一定的了解,通過研究分析平均氣溫和最高最低氣溫的走向?qū)⑦M(jìn)一步對(duì)開展鄉(xiāng)鎮(zhèn)精細(xì)化氣溫預(yù)報(bào)的把控有更大把握的區(qū)間,從而提高氣象精細(xì)化服務(wù)的縱向質(zhì)量和橫向精度。
Python是一種簡單、解釋型、交互式、動(dòng)態(tài)語義、可移植、面向?qū)ο蟮某呒?jí)語言。其功能強(qiáng)大、語法簡潔、免費(fèi)開源,Python被著名國際自由軟件項(xiàng)目KDE計(jì)劃選定為標(biāo)準(zhǔn)系統(tǒng)腳本語言,微軟公司也宣布將在.NET環(huán)境中提供對(duì)Python語言的支持[1],在2008年世界著名的TIOBE編程通用語言榜單上完全成為編程黑馬,成為TIOBE2018編程通用語言,在人工智能研究領(lǐng)域排名第一,在編程腳本語言編寫工程技術(shù)研究領(lǐng)域排名第一,在電子系統(tǒng)測試工程技術(shù)研究領(lǐng)域排名第一。除此之外,Python還在微機(jī)編程和電子信息科學(xué)理論計(jì)算電子數(shù)據(jù)技術(shù)發(fā)展兩個(gè)不同方面都已經(jīng)是一直占據(jù)著重要的技術(shù)領(lǐng)導(dǎo)者這個(gè)社會(huì)地位[2]。與其他計(jì)算機(jī)程序設(shè)計(jì)語言相比,Python具有高效的數(shù)據(jù)結(jié)構(gòu)和開源帶來的眾多第三方擴(kuò)展包支持優(yōu)勢,使得能以最少的代碼量來完成同樣的功能。以下為該語言優(yōu)勢特點(diǎn):
1.1.1 簡潔高效
Python語法簡單、結(jié)構(gòu)純粹、關(guān)鍵字少、強(qiáng)制性的縮進(jìn)展示程序?qū)哟谓Y(jié)構(gòu),使程序更具嚴(yán)謹(jǐn)性,提高了代碼可讀性。
1.1.2 開源和可解釋性
Python是FLOSS(自由/開放源碼軟件)之一,用戶在使用Python完成開發(fā)后無需擔(dān)心版權(quán)問題,且可以直接從源碼運(yùn)行程序,不需要轉(zhuǎn)換。
1.1.3 強(qiáng)大的資源庫
由于高擴(kuò)展的特性,使得Python有了很多資源庫,可以較好的解決使用者出現(xiàn)的問題。
1.2.1 科學(xué)計(jì)算工具
利用Numpy數(shù)值計(jì)算擴(kuò)展包和Pandas數(shù)據(jù)分析包,來對(duì)源數(shù)據(jù)進(jìn)行一系列類似數(shù)據(jù)庫的增、刪、改、查操作,并基于內(nèi)置計(jì)算函數(shù)可以根據(jù)用戶需求來獲取想要的值數(shù)據(jù)。
1.2.2 Matplotlib可視化繪圖
數(shù)據(jù)可視化對(duì)于數(shù)據(jù)挖掘和數(shù)學(xué)建模都非常重要。對(duì)于Python來說,Matplotlib是使用最廣的繪圖庫,此庫主要用于繪制二維圖像,也可用于繪制簡單的三維圖像。利用這個(gè)庫,可以將處理好的數(shù)據(jù)以簡單圖表的形式呈現(xiàn)出來[3]。開發(fā)者僅需要幾行代碼,配合計(jì)算工具,便可以生成繪圖,直方圖、箱型圖、散點(diǎn)圖等,配合Basemap地圖驅(qū)動(dòng)引擎,可以更直觀看出數(shù)據(jù)區(qū)域分布,較為快捷的對(duì)數(shù)據(jù)進(jìn)行可視化操作。
1.2.3 Plotnine美學(xué)輔助
Plotnine是一種基于Python平臺(tái)的圖形語言,它可以在Matplotlib基礎(chǔ)上美化圖像,增加可觀賞性,代碼的簡潔和數(shù)據(jù)顯示的映射繪圖的特點(diǎn)讓它更受歡迎。
從貴州省氣象局氣候中心開發(fā)的“貴州省氣象數(shù)據(jù)查詢與顯示系統(tǒng)”上查找烏當(dāng)區(qū)各鄉(xiāng)鎮(zhèn)2010年1月至2020年12月的氣溫?cái)?shù)據(jù)集,并導(dǎo)出為CSV文件,通過Pandas結(jié)構(gòu)化數(shù)據(jù)庫讀取為DataFrame對(duì)象存儲(chǔ),利用Pandas中的isnull函數(shù)和通用函數(shù)計(jì)算來篩選和過濾掉表格里存在的空值和異常值。
2.2.1 歷年氣溫平均值分析
將源數(shù)據(jù)預(yù)處理完畢后,導(dǎo)入Pandas包,調(diào)用read_csv()函數(shù)讀取csv文件,提取出歷史氣溫中的平均氣溫、平均最高最低氣溫?cái)?shù)據(jù),利用Basemap讀取地圖SHP文件,并用Matplotlib庫為數(shù)據(jù)源加載到地圖上,進(jìn)行填色,設(shè)置坐標(biāo)等操作。如圖1(a)所示2010—2020年,烏當(dāng)區(qū)各鄉(xiāng)鎮(zhèn)的年平均氣溫呈南部高,北部低的特征,自南向北呈遞減趨勢,各鄉(xiāng)鎮(zhèn)與烏當(dāng)國家站年平均氣溫的差值絕對(duì)值最大可達(dá)2.1℃。而從圖1(b)中平均最高氣溫分布上可以看出烏當(dāng)區(qū)的東風(fēng)鎮(zhèn)平均氣溫最高,而北部鄉(xiāng)鎮(zhèn)均在19.5℃以下,由此可見,2010—2020年,全區(qū)各地年平均最高氣溫為18.1~22.8℃之間。北部鄉(xiāng)鎮(zhèn)平均氣溫較其他地區(qū)較低,均在20℃以下,年平均最低氣溫則和年平均氣溫及年平均最高氣溫表現(xiàn)一致,百宜相對(duì)于其于地區(qū)的鄉(xiāng)鎮(zhèn),溫度最低(圖1c),各地與烏當(dāng)國家站年平均最低氣溫的差值絕對(duì)值最大可達(dá)2.7℃。
圖1 烏當(dāng)區(qū)各鄉(xiāng)鎮(zhèn)2010-2020年平均氣溫、平均最高氣溫、平均最低氣溫分布Fig.1 Distribution of average temperature, average maximum temperature, and average minimum temperature of each town in Wudang District from 2010 to 2020
2.2.2 歷年各月氣溫可視化分析
烏當(dāng)區(qū)地處亞熱帶濕潤性季風(fēng)氣候,四季分明,一般1月最冷,7月最熱,以春、夏、秋、冬來代表對(duì)季節(jié)性氣溫特征進(jìn)行詳細(xì)的數(shù)據(jù)分析。
其中,據(jù)氣象資料統(tǒng)計(jì),烏當(dāng)區(qū)的春季(3~5月)十年平均溫度分布區(qū)間是主城區(qū)14.3~17.7℃、水田鎮(zhèn)12.7~16.2℃、羊昌鎮(zhèn)12.5~15.9℃、新場鎮(zhèn)12.1~16.0℃、下壩鎮(zhèn)13.7~17.1℃、偏坡鄉(xiāng)13.7~16.6℃、東風(fēng)鎮(zhèn)14.5~18.1℃、百宜鎮(zhèn)12.3~15.5℃、新堡鄉(xiāng)12.9~17.9℃。
而在夏季(6~8月),烏當(dāng)?shù)慕昶骄鶞囟确植紖^(qū)間大概:主城區(qū)22.6~24.3℃、水田鎮(zhèn)21.2~22.9℃、羊昌鎮(zhèn)21.3~22.7℃、新場鎮(zhèn)20.6~22.9℃、下壩鎮(zhèn)21.9~23.9℃、偏坡鄉(xiāng)21.9~23.4℃、東風(fēng)鎮(zhèn)22.3~24.9℃、百宜鎮(zhèn)20.2~22.0℃、新堡鄉(xiāng)21.3~23℃。從烏當(dāng)區(qū)各地氣溫分布來看,溫度最高值出現(xiàn)在2013年,主城區(qū)以及水田鎮(zhèn)分別在2013年及2016年達(dá)到近年最高值,在近十年全區(qū)的極大最高溫度出現(xiàn)在東風(fēng)鎮(zhèn)(24.9℃)。新場及下壩鎮(zhèn)的最低氣溫出現(xiàn)在2012年,主城區(qū)和水田鎮(zhèn)近十年的最低氣溫分別出現(xiàn)在2012和2015年,羊昌鎮(zhèn)、百宜鎮(zhèn)、東風(fēng)鎮(zhèn)、偏坡布依族鄉(xiāng)以及新堡布依族鄉(xiāng)等地區(qū)溫度最低值出現(xiàn)在2015年;主城區(qū)、水田鎮(zhèn)夏季平均氣溫最高分別出現(xiàn)在2013和2016年,新場鎮(zhèn)夏季平均氣溫最高溫度在2016年,而中北部鄉(xiāng)鎮(zhèn)(羊昌、百宜、東風(fēng)、下壩、偏坡、新堡)夏季的平均最高氣溫出現(xiàn)在2013年。
秋季(9~11月)的烏當(dāng)區(qū)近十年平均溫度區(qū)間分布為:主城區(qū)15.4~17.5℃、水田鎮(zhèn)13.9~16.0℃、羊昌鎮(zhèn)13.4~15.7℃、新場鎮(zhèn)13.3~18.9℃、百宜鎮(zhèn)12.0~15.3℃、東風(fēng)鎮(zhèn)15.5~17.8℃、下壩鎮(zhèn)14.7~16.9℃、偏坡鄉(xiāng)14.1~16.8℃、新堡鄉(xiāng)13.5~16.0℃。從烏當(dāng)區(qū)各地氣溫分布來看,秋季氣溫整體在19℃以下,整體極端最高溫度出現(xiàn)在新場2015年18.8℃,其余鄉(xiāng)鎮(zhèn)大多最高溫度出現(xiàn)在2011年,呈現(xiàn)南部溫度較高,北部氣溫偏低的形勢。
烏當(dāng)區(qū)全區(qū)冬季(12月至來年2月)的近十年平均溫度分布區(qū)間主要體現(xiàn)在2012年(如圖2)所示,極端最低平均氣溫是百宜鎮(zhèn)(0.8℃);各鄉(xiāng)鎮(zhèn)的近十年最高平均溫度出現(xiàn)在2017年,平均氣溫最高出現(xiàn)在東風(fēng)鎮(zhèn)(8.5℃)。近10年來,烏當(dāng)區(qū)冬季平均溫度分布區(qū)間主要在:主城區(qū)3.2~8.2℃、水田鎮(zhèn)2.5~6.9℃、羊昌鎮(zhèn)1.2~6.4℃、新場鎮(zhèn)1.2~6.5℃、百宜鎮(zhèn)0.7~5.6℃、東風(fēng)鎮(zhèn)4.3~8.6℃、下壩鎮(zhèn)2.5~7.7℃、偏坡鄉(xiāng)3.1~7.5℃、新堡鄉(xiāng)4.1~6.7℃。
圖2 烏當(dāng)區(qū)各鄉(xiāng)鎮(zhèn)2010-2020年冬季氣溫折線圖Fig.2 The broken line graph of the winter temperature from 2010 to 2020 in the towns of Wudang District
在利用Python及第三方擴(kuò)展包進(jìn)行數(shù)據(jù)可視化分析后,我們可以比較清晰直觀的看出烏當(dāng)區(qū)這近10年來的氣候特征,也為以后開展自然災(zāi)害風(fēng)險(xiǎn)普查取得一定的參考價(jià)值,從可視化結(jié)果來看,烏當(dāng)區(qū)整體平均氣溫南北地差異比較顯明,四季南北氣溫值都有著相似的分布比例,主要分析出現(xiàn)2個(gè)原因:(1)烏當(dāng)區(qū)北部鄉(xiāng)鎮(zhèn)海拔普遍高于南部鄉(xiāng)鎮(zhèn);(2)中南部鄉(xiāng)鎮(zhèn)離主城區(qū)較近,從一定程度上受到了城市效應(yīng)影響。
數(shù)字技術(shù)與應(yīng)用2021年11期