999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

MICAPS第四類數(shù)據(jù)格式Python處理庫的實(shí)現(xiàn)和應(yīng)用

2018-01-08 02:52:08袁鵬艷段中夏
河南科技 2017年23期

朱 楓 袁鵬艷 段中夏

(1.新鄉(xiāng)市氣象局,河南 新鄉(xiāng) 453003;2.延津縣氣象局,河南 延津 453200)

MICAPS第四類數(shù)據(jù)格式Python處理庫的實(shí)現(xiàn)和應(yīng)用

朱 楓1袁鵬艷2段中夏1

(1.新鄉(xiāng)市氣象局,河南 新鄉(xiāng) 453003;2.延津縣氣象局,河南 延津 453200)

本文基于Python語言設(shè)計(jì)和實(shí)現(xiàn)了MICAPS第四類數(shù)據(jù)格式的通用接口庫Diamond4,包含數(shù)據(jù)讀寫,格點(diǎn)到站點(diǎn)的插值,數(shù)據(jù)格式轉(zhuǎn)換等功能。Diamond4庫簡潔高效,可有效支持對MICAPS數(shù)據(jù)的本地開發(fā)。最后展示了Diamond4庫結(jié)合其他Python第三方庫在新鄉(xiāng)市氣象臺本地業(yè)務(wù)應(yīng)用的兩個(gè)實(shí)例:結(jié)合Bokeh庫的多模式站點(diǎn)兩米溫度的自動提取和結(jié)合Arcpy庫的多模式降水對比郵票圖的自動生成。

MICAPS;第四類數(shù)據(jù);Diamond4庫

分氣象信息綜合分析和處理系統(tǒng)MICAPS(Meteo?rology Information Comprehensive Analysis Process Sys?tem)是我國氣象業(yè)務(wù)的基礎(chǔ)軟件[1],其中第四類數(shù)據(jù)是MICAPS系統(tǒng)自定義的格點(diǎn)數(shù)據(jù)格式。國家氣象信息中心通過CMACast衛(wèi)星系統(tǒng)下發(fā)的多種氣象實(shí)況數(shù)據(jù)和數(shù)值預(yù)報(bào)模式結(jié)果通常最終被解碼成第四類格式,供MICAPS系統(tǒng)可視化呈現(xiàn)或處理。因此,基層預(yù)報(bào)員接觸最多的氣象數(shù)據(jù)通常以MICAPS第四類格式呈現(xiàn)。這種格式都是單個(gè)的文本文件,相對于Grib1、Grib2、HDF或者NetCDF等高級格式要簡單明了許多。鑒于MICAPS第四類數(shù)據(jù)使用的簡單性和普遍性,如何開發(fā)一個(gè)通用的、簡潔高效的針對MICAPS第四類數(shù)據(jù)格式的程序接口庫,以便基層預(yù)報(bào)員在這類格式的數(shù)據(jù)基礎(chǔ)上定制開發(fā)本地化應(yīng)用,是本文要解決的主要問題。

1 設(shè)計(jì)背景和思路

Python是一門簡潔且功能強(qiáng)大的開源編程語言,因其活躍的社區(qū)支持,涌現(xiàn)了大量優(yōu)秀的第三方庫,涵蓋了網(wǎng)絡(luò)編程、數(shù)據(jù)庫、嵌入式、游戲等多個(gè)領(lǐng)域[2],尤其在科學(xué)計(jì)算和機(jī)器學(xué)習(xí)領(lǐng)域,Python變得越來越受歡迎。此外,Python語言還被應(yīng)用于氣象領(lǐng)域,主要用于開發(fā)、繪圖[3]。Python簡明易學(xué),且易快速上手。考慮到需要開發(fā)的程序接口庫主要供基層預(yù)報(bào)員使用,因此,選擇Python作為開發(fā)語言不僅可以減少開發(fā)成本,也能減少學(xué)習(xí)和使用的難度。本文設(shè)計(jì)開發(fā)的庫是純Python庫,除Py?thon內(nèi)置的庫外,不依賴其他第三方庫,包括在科學(xué)計(jì)算領(lǐng)域使用較多的Numpy、Pandas等,以保證其簡潔易用。因?yàn)镸ICAPS數(shù)據(jù)格式的頭文件大都以英文Diamond開頭,因此將處理MICAPS第四類數(shù)據(jù)格式的庫命名為Dia?mond4。

MICAPS第四類數(shù)據(jù)具有統(tǒng)一的定義方式(具體定義說明請參見官方論壇網(wǎng)站或MICAPS自帶的幫助文檔),每個(gè)第四類數(shù)據(jù)文件的文件頭都對特定的屬性進(jìn)行了明確規(guī)定,各個(gè)屬性以空格分割,只是具體數(shù)據(jù)不一樣。因此,可以將MICAPS第四類數(shù)據(jù)看做一個(gè)類,將一個(gè)MI?CAPS第四類文件視為一個(gè)對象。很自然地,采用面向?qū)ο蟮脑O(shè)計(jì)方式,更容易保障代碼的結(jié)構(gòu)性和邏輯性。Dia?mond4類根據(jù)MICAPS第四類數(shù)據(jù)的格式,定義了相應(yīng)屬性,每個(gè)屬性作為對象的一個(gè)字段,實(shí)際格點(diǎn)數(shù)據(jù)也是對象的一個(gè)字段,以一維列表的方式保存數(shù)據(jù)部分。格點(diǎn)數(shù)據(jù)是二維數(shù)據(jù),用一維列表保存,是為了減少內(nèi)存消耗,為了更容易獲取格點(diǎn)值,可以定義取值方法Value,根據(jù)行列號直接獲取對應(yīng)值,從而在邏輯上屏蔽數(shù)據(jù)實(shí)際存儲的組織方式。在此基礎(chǔ)上,可以很方便地再設(shè)計(jì)定義其他方法。

2 Diamond4庫的主要實(shí)現(xiàn)

下面的代碼給出了Diamond4實(shí)現(xiàn)的主要部分,即初始化方法和取值方法。Diamond4類庫的具體實(shí)現(xiàn)代碼托管在GitHub上,網(wǎng)址為https://github.com/LuckyBoy314/MeteoPlot/blob/master/pyMicaps.py。

class Diamond4(object):

diamond=4

#構(gòu)造函數(shù)

def__init__(self,file_path):

with open(file_path,'r')as f:

#讀入原始數(shù)據(jù)

data_raw= [word for line in f.readlines()if line[:-1].strip()for word in

line.split()]

#定義相關(guān)屬性

self.doc=data_raw[2].decode('gbk') # 說明字符串

(self.size_lon, #經(jīng)度(x方向)格距,一般為正

self.size_lat,#緯度(y方向)格距,有正負(fù)號

self.lon_start,#起始經(jīng)度

self.lon_end, #終止經(jīng)度

self.lat_start,#起始緯度

self.lat_end)=(float(i)for i in data_raw[9:15]) #終止緯度

(self.cols,#緯向格點(diǎn)數(shù)目,即列數(shù)

self.rows)=(int(i)for i in data_raw[15:17]) # 經(jīng)向格點(diǎn)數(shù)目,即行數(shù)

#日期時(shí)間處理

(month,day,hour,interval)=data_raw[4:8]

year=data_raw[3]

if len(year)==2:

year=('20'+year)if int(year)<49 else('19'+year)

elif len(year)==4:

pass

else:

raise Exception('year parameter error!')

#注意start_time和valid_time沒有統(tǒng)一規(guī)定,要看具體情況

self.start_time=datetime.datetime(int(year),int(month),int(day),int(hour))

self.valid_time=self.start_time+datetime.timedelta(hours=int(interval))

#數(shù)據(jù)部分,以一維數(shù)組表示

self.data= [float(i)for i in data_raw[22:]]

del data_raw

def value(self,row,col):

'''根據(jù)行列號獲取格點(diǎn)值,將格點(diǎn)數(shù)據(jù)看成self.cols*self.nums_lat的二維數(shù)組,返回第row行,第col列的值,row和col必須為整數(shù),從0開始計(jì)數(shù),坐標(biāo)原點(diǎn)在左上角'''

if row <0 or row >=self.rows or col<0 or col>=self.cols:

raise Exception('out of data spatial range')

return self.data[row*self.cols+col]

3 Diamond4庫在本地業(yè)務(wù)中的應(yīng)用

開發(fā)Diamond4的主要目的就是方便有開發(fā)經(jīng)驗(yàn)的基層預(yù)報(bào)員直接在MICAPS數(shù)據(jù)基礎(chǔ)上進(jìn)行開發(fā)。現(xiàn)在將展示兩個(gè)應(yīng)用了Diamond4庫的兩個(gè)實(shí)例,分別是多模式2m站點(diǎn)溫度的提取和多模式降水對比郵票圖繪制,這兩個(gè)應(yīng)用每天定期自動化運(yùn)行,已經(jīng)在新鄉(xiāng)市氣象臺的實(shí)際業(yè)務(wù)中使用,并顯著提升了預(yù)報(bào)員的工作效率。

3.1 多模式2m站點(diǎn)溫度的自動提取

Diamond4在多模式2m站點(diǎn)溫度的自動提取中的應(yīng)用主要是利用Diamond4類的IDW方法,將格點(diǎn)數(shù)據(jù)插值到特定站點(diǎn)。IDW的以站點(diǎn)位置經(jīng)緯度為輸入?yún)?shù),可以是多個(gè)站點(diǎn),且必須以[(lon1,lat1),(lon2,lat2),…(lonN,latN)]形式的一系列站點(diǎn)位置,經(jīng)緯度必須是弧度形式,返回值是對應(yīng)各個(gè)站點(diǎn)值的列表。具體是利用反距離加權(quán)的方法,根據(jù)站點(diǎn)距離周圍四個(gè)格點(diǎn)值的距離進(jìn)行加權(quán)計(jì)算,各個(gè)點(diǎn)的權(quán)重與距離的平方成反比(平方是IDW方法的默認(rèn)值,也可以用其他冪次)。

Bokeh庫[4]是基于網(wǎng)頁繪圖的Python第三方庫,其繪制的圖形具有可交互的特征,不僅美觀,而且具有很大的靈活性。Bokeh的具體使用不在本文的討論范圍內(nèi),總之Bokeh繪圖使用的數(shù)據(jù)是通過Diamond4庫提取。具體繪圖代碼托管在GitHub上(參見https://github.com/Lucky?Boy314/MeteoPlot/blob/master/TempPlot.py)。

圖1展示了2017年8月28日08:00起報(bào)的多家數(shù)值模式2m溫度在新鄉(xiāng)各個(gè)國家站點(diǎn)上的提取結(jié)果,可以直觀地顯示溫度預(yù)報(bào)的時(shí)間變化特征。每個(gè)標(biāo)簽顯示一種模式,切換標(biāo)簽可以在不同模式間作對比分析。圖中顯示的是歐洲數(shù)值預(yù)報(bào)中心240h的預(yù)報(bào)結(jié)果,每一個(gè)MI?CAPS第四類文件對應(yīng)一個(gè)時(shí)次,即一個(gè)Diamond4對象,利用Diamond4類的IDW方法提取站點(diǎn)值交由Bokeh庫繪制到網(wǎng)頁上。繪制結(jié)果是可交互的動態(tài)網(wǎng)頁,可自用放大縮小,鼠標(biāo)懸停在圓圈點(diǎn)上即會顯示其代表的溫度、站點(diǎn)名和時(shí)間。

圖1 2017年8月28日08:00起報(bào)的多模式站點(diǎn)2m溫度提取在新鄉(xiāng)的應(yīng)用

3.2 多模式降水對比郵票圖的繪制

Diamond4在多模式降水對比郵票圖的繪制中的應(yīng)用主要是利用Diamond4的convert_to_EsriAscii方法簡潔高效地將MICAPS第四類的格點(diǎn)數(shù)據(jù)轉(zhuǎn)換為ArcGIS可以識別的柵格數(shù)據(jù),然后交由ArcGIS繪制成圖。郵票圖的框架和色標(biāo)通過ArcGIS的ArcMap軟件預(yù)先設(shè)定好,產(chǎn)生新的模式結(jié)果后,先由Diamond4轉(zhuǎn)換數(shù)據(jù)格式,然后通過ESRI公司提供的Arcpy庫,刷新繪圖并自動導(dǎo)出圖片。具體繪圖代碼也托管在GitHub上(參見https://github.com/LuckyBoy314/MeteoPlot/blob/master/modelRainPlot.py)。

圖2展示了2017年8月23日20:00起報(bào)的多家數(shù)值模式120h內(nèi)新鄉(xiāng)周邊地區(qū)的降水預(yù)報(bào)結(jié)果,每行表示一種數(shù)值模式,每列表示12小時(shí)內(nèi)的分段降水量。通常情況下,預(yù)報(bào)員參考數(shù)值模式要通過MICAPS平臺或者中央臺、省局的網(wǎng)絡(luò)預(yù)報(bào)平臺來查閱,需要逐一模式逐時(shí)次翻閱,耗時(shí)、繁瑣,且不利于直觀地對比各家模式的結(jié)果,此外這些平臺以全國或全省為關(guān)注點(diǎn),本地的分辨率反而不清晰。該應(yīng)用可以幫助預(yù)報(bào)員以新鄉(xiāng)本地為中心,一目了然地對比參考多家模式的預(yù)報(bào)結(jié)果,從而顯著增強(qiáng)參考數(shù)值模式結(jié)果的針對性和直觀性,大大提高工作效率。

圖2 2017年8月23日20:00起報(bào)的多模式降水預(yù)報(bào)對比郵票圖在新鄉(xiāng)的應(yīng)用(突出顯示的區(qū)域?yàn)樾锣l(xiāng))

4 結(jié)語

本文介紹了一個(gè)基于Python語言編寫的處理MI?CAPS第四類數(shù)據(jù)的通用庫Diamond4,MICAPS第四類數(shù)據(jù)除了直接在MICAPS平臺中使用外,還可以基于Dia?mond4庫進(jìn)行更加靈活的自主開發(fā),這對在MICAPS數(shù)據(jù)基礎(chǔ)上開發(fā)本地應(yīng)用的基層預(yù)報(bào)員尤其重要。本文簡要分析了使用Diamond4庫結(jié)合其他第三方python庫開發(fā)的兩個(gè)本地應(yīng)用:新鄉(xiāng)市氣象臺的多模式2m站點(diǎn)溫度自動提取和多模式降水對比郵票圖的自動生成。通過分析可知,Diamond4庫簡潔易用,可以有效地結(jié)合第三方庫開發(fā)本地應(yīng)用。Diamond4庫的功能還有待進(jìn)一步擴(kuò)展和完善,如增加計(jì)算、數(shù)據(jù)剪裁、統(tǒng)計(jì)分析、直接繪圖等功能。今后將繼續(xù)維護(hù)開發(fā)Diamond4庫,使之更加完善。

[1]李月安,曹莉,高嵩,等.MICAPS預(yù)報(bào)業(yè)務(wù)平臺現(xiàn)狀與發(fā)展[J].氣象,2010(7):50-55.

[2]Chun Wesley J.Python核心編程[M].宋廣吉,譯.北京:人民郵電出版社,2008.

[3]Lin J W.A Hands-On Introduction to Using Python in the Atmospheric and Oceanic Sciences[EB/OL].[2017-11-01].http://www.johnny-lin.com/pyintro/ed01/free_pdfs/ch10.pdf.

[4]Bokeh Development Team.Bokeh,a Python library for interactive visualization[EB/OL].[2017-11-01].http://flow?ingdata.com/2013/11/22/bokeh-a-python-library-for-interactivevisualization/.

The Implementation and Application of a Python Library for MICAPS Fourth Format Data

Zhu Feng1Yuan Pengyan2Duan Zhongxia1
(1.Xinxiang Meteorological Bureau,Xinxiang Henan 453003;2.Yanjin Meteorological Bureau,Yanjin Henan 453200)

We designed and implemented a Python library named Diamond4 for processing the MICAPS fourth format data.The library consists the utilities of data writing and reading,grid-to-station data extrac?tion,format conversion et al.which will efficiently support the native development on the MICAPS data.The last showed Diamond4 library combined with other Python third party libraries in two instances of lo?cal meteorological station business application in Xinxiang city:Combining site of multi mode Bokeh base two meters temperature automatic extraction and combination of Arcpy library multi mode contrast stamp for automatic generation of precipitation.

MICAPS;fourth format data;Diamod4 library

P451

A

1003-5168(2017)12-0152-03

2017-11-01

朱楓(1988-),男,碩士,助理工程師,研究方向:短期短時(shí)天氣預(yù)報(bào)預(yù)警。

主站蜘蛛池模板: 欧美有码在线观看| 伊人AV天堂| 麻豆精品在线播放| 亚洲嫩模喷白浆| 精品亚洲麻豆1区2区3区| 91无码网站| 无码人中文字幕| 国产成人永久免费视频| 国产丝袜第一页| 伊人色综合久久天天| 国产成人午夜福利免费无码r| 亚洲av无码久久无遮挡| 激情六月丁香婷婷| 日韩欧美中文字幕在线精品| 国产成人区在线观看视频| 亚洲色偷偷偷鲁综合| 国产青青草视频| 婷婷亚洲综合五月天在线| 怡红院美国分院一区二区| 黄网站欧美内射| 97se亚洲综合在线天天| 女人18毛片一级毛片在线| 免费在线a视频| 国产精品va| 无码高潮喷水在线观看| 久热这里只有精品6| 无遮挡国产高潮视频免费观看| 亚洲丝袜第一页| 午夜国产精品视频| 香蕉国产精品视频| 无码AV日韩一二三区| 亚洲精品少妇熟女| 国产成人精品一区二区免费看京| 国产成人久久综合777777麻豆| 三上悠亚一区二区| 亚洲毛片在线看| 狠狠色丁香婷婷综合| 久久亚洲高清国产| 国产午夜福利片在线观看| 天天婬欲婬香婬色婬视频播放| 中国美女**毛片录像在线 | 亚洲视频四区| 成·人免费午夜无码视频在线观看 | 国产精品入口麻豆| 日韩欧美国产成人| 91福利免费| 国产视频久久久久| 国产精品永久在线| 免费观看精品视频999| 亚洲欧洲一区二区三区| 日韩午夜片| 国产香蕉97碰碰视频VA碰碰看| 亚洲区欧美区| 国产97视频在线| 久久国产乱子| 欧美日韩精品在线播放| 中文字幕日韩久久综合影院| 国产AV无码专区亚洲A∨毛片| 国产午夜在线观看视频| 久久婷婷国产综合尤物精品| 亚洲高清在线天堂精品| a国产精品| 国产精品美女网站| 国产99视频在线| 国产一区二区福利| 97av视频在线观看| 婷婷色中文网| 亚洲欧美日韩另类| 国产18在线播放| 免费一极毛片| 狂欢视频在线观看不卡| 国产a v无码专区亚洲av| 亚洲床戏一区| 伊人福利视频| 国产偷国产偷在线高清| www.亚洲一区二区三区| 精品国产成人三级在线观看 | 精品99在线观看| 无码一区18禁| av在线5g无码天天| 日本高清免费不卡视频| 2020精品极品国产色在线观看|