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

基于CIMISS和TeeChart 8.0的氣象臺站風向玫瑰圖的快速繪制

2021-06-30 01:44:12饒傳新劉仁進
氣象水文海洋儀器 2021年2期
關鍵詞:設置

王 華,饒傳新,劉仁進,陳 星

(宜昌市氣象局,宜昌 443000)

0 引言

風向玫瑰圖因其形狀酷似玫瑰花朵而得名,也叫風向頻率玫瑰圖,它是根據某一地區多年平均統計的各個風向及其頻率,并按照一定比例繪制而成的圖形。根據精度不同,將圓周分為8個或16個方位,即每隔45°或22.5°確定1個風向。以北(N)為0°方向,以16個方位為例,逆時針每增加22.5°所確定的風向依次為:西北偏北(NNW)、西北(NW)、西北偏西(WNW)、西(W)、西南偏西(WSW)、西南(SW)、西南偏南(SSW)、南(S)、東南偏南(SSE)、東南(SE)、東南偏東(ESE)、東(E)、東北偏東(ENE)、東北(NE)、東北偏北(NNE)。除此之外,將風速低于0.2 m/s的風稱為靜風,用C表示。

風向玫瑰圖的繪制可采用Excel[1,2]或編程[3-5]實現,但這兩類方法一般使用的是本地數據源,且存在繪制過程工作量大、通用性不足等問題。隨著氣象數據向集約化、共享化方向發展,CIMISS(全國綜合氣象信息共享平臺)[6]日益成為天氣業務“一站式”數據供給,支撐氣候業務主要數據來源和數據開放服務完全數據來源。因此,選用CIMISS作為風向玫瑰圖繪制的數據源符合當代氣象業務發展的趨勢和需要。TeeChart是專業的圖表類控件,它提供數以百計的2D及3D圖表類型和幾十種統計學函數,風向玫瑰圖是其提供的圖表類型中的一種。與傳統繪制方法相比,使用TeeChart提供的風向玫瑰圖繪制功能不僅能縮短系統開發時間,還能提高繪圖的靈活性和通用性[7-9]。使用CIMISS和TeeChart相結合的風向玫瑰圖繪制方式,能夠有效解決因氣象數據向云端遷移而導致的本地風向玫瑰圖繪制系統無效等問題。TeeChart可以看做是CIMISS數據可視化[10]的一種工具,它在氣象業務系統中還可以有更廣泛的用途。

1 CIMISS和TeeChart 8.0簡介

CIMISS系統于2016年底投入業務運行,它是由1個國家中心和31個省中心構成的,集數據收集與分發、質量控制與產品生成、存儲管理、共享服務、業務監控于一體的氣象信息共享業務系統。CIMISS通過建立氣象數據標準化框架,規范各類數據命名、格式和算法,定義國和省一致的氣象數據存儲結構和數據服務接口,實現了國省數據同步和實時歷史數據一體化管理。CIMISS包含了豐富的氣象數據種類和海量的氣象數據,用戶可使用客戶端、WebServices、REST服務或腳本調用等方式獲取所需數據。文章采用客戶端方式從CIMISS中獲取風向數據。

TeeChart是西班牙Steema公司開發的圖表類控件,TeeChart 8.0是TeeChart系列中的一個版本。TeeChart為不同的開發環境提供了不同的產品,如TeeChart Pro ActiveX、TeeChart Pro for Java、TeeChart for PHP,分別用于可識別的ActiveX、Java和PHP開發環境。TeeChart不僅提供豐富的圖表類型,而且為每一類圖表的屬性提供多種樣式,僅折線圖就有幾十種。圖1給出了TeeChart提供的典型圖表。文中在VC++編程環境下,通過ActiveX控件的方式使用該控件。

圖1 TeeChart提供的典型圖表

2 系統設計及實現

2.1 CIMISS數據獲取

2.1.1 開發環境搭建

采用客戶端方式從CIMISS中獲取數據,首先需要搭建本地客戶端開發環境。CIMISS官方網站為各類開發語言,如C++、Java、C#等提供相應的客戶端開發包以及DEMO工程(示范工程)。客戶端開發包由1組庫文件(或jar包)和配置文件組成。庫文件主要是ICE(Internet Communications Engine)和接口定義庫文件。CIMISS采用了ICE技術[11],它是Zero C公司研發的一種開源、高性能的面向對象中間件平臺,具有機器無關性、語言無關性、實現無關性和操作系統無關性等特點[12-14]。接口定義庫文件定義了相關接口,建立了客戶端與ICE中間件的聯系。配置文件設置了API代理服務器地址、端口號和ICE相關參數。

客戶端與服務器端具體交互過程由ICE中間件負責,開發者根據所選開發語言以及客戶端開發包、DEMO工程,能夠快速完成ICE開發環境的搭建。圖2給出了VC++編程環境下ICE的搭建及客戶端、服務器交互示意圖。圖中,配置文件client.config里的IP地址需要修改為CIMISS為各省分配的地址;接口定義庫文件有v1.4.0和v1.6.0兩個版本,文中使用的是v1.4.0版本。需要注意的是,VC++編程環境下開發客戶端還需要動態鏈接庫的支持,如bzip2d.dll、ice34d.dll、iceutil34d.dll等,將相關動態鏈接庫文件按開發說明放置在指定位置即可。

圖2 ICE的搭建及客戶端、服務器交互示意圖(基于VC++)

2.1.2 接口調用

CIMISS系統將氣象資料分為地面、高空和海洋等14個類別,每個類別下又分為多個子類。如高空資料,它包含全球高空定時值資料、全球飛機高空探測資料等29個子類。根據子類資料的特征,CIMISS為每個子類設計了豐富的接口。如全球高空定時值資料有按時間檢索高空數據要素、按時間和氣壓層檢索數據要素等15種接口;而GPS/MET壓縮文件包則有按時間檢索高空數據文件和按時間區站號檢索高空數據文件等3種接口。依據資料獲取方式以及資料在用戶端的呈現形式,接口有多種調用方法。如方法callAPI_to_array2D和callAPI_to_saveAsFile分別可以獲取二維(站)點數據和檢索結果并存入文件。文中從CIMISS獲取風向數據及數據處理流程方法如下:

1)數據選用:選用CIMISS地面資料類別下的中國地面月值資料和中國地面年值資料;

2)接口調用:調用“按時間段、臺站檢索地面數據要素”接口;

3)方法調用:調用callAPI_to_array2D方法,返回的是RetArray2D類型數據;

4)數據檢索:檢索得到RetArray2D類型數據data[n][19],其中,n表示檢索時段內月份或年份總數,19表示檢索的數據要素項目總數;

5)數據處理:各風向頻率數據取平均,得到最終數據,存入數組wind_freq[17]中,17代表風向總數,包括靜風。

2.2 TeeChart 8.0的應用

2.2.1 注冊及接口調用

TeeChart 8.0是以對象類別擴充組件(OCX)的文件形式存在,成功注冊組件是調用組件的前提條件。在管理員權限下,使用Windows操作系統命令regsvr32可以很容易完成組件的注冊。注冊成功后,使用插入ActiveX控件的方式將TeeChart 8.0加載到軟件圖形用戶界面,并為控件設置關聯對象m_TeeChart。鼠標左鍵雙擊該控件,彈出如圖3所示的包括序列、圖表、數據等選項的初始編輯對話框。通過對話框序列選項中的增加按鈕,可以添加如圖1所示的各種圖形。

TeeChart 8.0提供豐富的圖形繪制接口,通過添加接口生成的類,用戶可以完成各種圖形的繪制、屬性設置及更改等操作。文章使用了ISeries、IWindRoseSeries、IBMPExport和IBrush等13種接口生成的類。

2.2.2 添加序列、數據

TeeChart 8.0提供的眾多圖形中,比較適合繪制風向玫瑰圖的是Wind Rose和Radar。為此,通過圖3中的增加按鈕添加兩個序列Series0和Series1,在彈出的如圖1所示工具箱中,分別從Other和Extended選項中選中上述兩類圖形。可以通過圖3中的序列、圖表、數據等選項繪制初始默認設置,如設置字體、線型、坐標軸等。

序列添加和初始設置完成后,需要在程序中添加數據以實現動態繪圖。添加的數據是2.1.2節中從CIMISS獲取的風向數據經過計算得到的wind_freq數組。添加數據使用的是AddXY函數。該函數依次包含X點坐標、Y點坐標、X點坐標名稱和顏色4個參數,其中,顏色參數在線圖中不起作用。前3個參數在文中依次代表風向角度(每隔22.5°為1個風向)、風向頻率和風向名稱。具體用法如下:

int n=m_DrawStytle.GetCurSel();//獲取用戶選擇的繪圖類型;

CSeries lineSeries=(CSeries)m_TeeChart.Series(n);//定義變量代表當前選中序列;

lineSeries.Clear();lineSeries.RefreshSeries();//清除上次繪圖序列數據并刷新序列;

for(int i=1;i<17;i++)//添加風向角度、風向頻率、風向名稱數據;默認顏色值為0,即黑色;

lineSeries.AddXY((i-1)*22.5,win_freq[i],windName.GetAt(i-1),0);

2.2.3 屬性設置

基本繪圖完成以后,通過屬性設置選項可以增強繪圖的豐富性和美觀度。屬性設置可以通過調用TeeChart 8.0提供的相關函數完成,也可以直接調用TeeChart 8.0的系統資源,后者更加便捷。設置畫筆、畫刷、透明度、各顏色和個性化定制5個繪圖屬性設置選項,其中畫筆、畫刷、個性化定制選項通過調用系統資源實現。

1)畫筆、畫刷:畫筆提供線條類型、顏色、寬度等選項;畫刷提供27種系統自帶填充圖案以及自選圖片作為填充圖案等選項。調用方法如下:

int n=m_DrawStytle.GetCurSel();//獲取用戶選擇的繪圖類型;

CPen pen=((CSeries)m_TeeChart.Series(n)).get_Pen();//獲取畫筆;

CBrush brush=((CSeries)m_TeeChart.Series(n)).get_Brush();//獲取畫刷;

pen.ShowEditor(0,_T("畫筆選項"));brush.ShowEditor();//彈出畫筆、畫刷對話框;

2)透明度:通過序列提供的put_Transparency()函數,可以動態設置圖形的透明程度。

3)各顏色:即相鄰兩個角度間的填充顏色,設有無、默認和隨機3個選項,分別實現單一顏色、默認顏色和隨機顏色等效果。各顏色通過設置AddXY()函數的第4項參數實現。隨機各顏色實現方法如下:

long color_val=(long)RGB(rand()%255,rand()%255,rand()%255);//生成隨機顏色值;

lineSeries.AddXY(…,…,…,color_val);//隨機顏色值作為AddXY的第4項參數;

4)個性化定制:個性化定制選項提供完全的屬性設置功能,包括畫筆、畫刷、透明度和各顏色等選項的效果。個性化定制通過調用TeeChart 8.0的編輯功能實現,調用方法如下:

int n=m_DrawStytle.GetCurSel();//獲取用戶選擇的繪圖類型;

m_TeeChart.ShowEditor(n);//彈出當前繪圖類型下的編輯對話框;

2.2.4 圖片導出

圖片導出提供兩種方法:一是通過界面設置的個性化定制按鈕,在彈出的編輯框中,依次選擇輸出-圖像-保存,可以將繪制的圖形以BMP、GIF、JPEG等9種格式導出;二是通過程序界面設置的導出按鈕,將圖形以BMP、GIF、JPEG、EMF等4種格式導出。以BMP格式為例,導出方法如下:

//圖片默認以導出時間命名,用戶選擇導出格式、存儲路徑部分略去;

CExport m_Print=m_TeeChart.get_Export();

CBMPExport m_BMP=m_Print.get_asBMP();

m_BMP.SaveToFile(pathName_save);//將圖片保存到路徑pathName_save下;

3 系統檢驗

系統主界面包含繪圖區、查詢選項、繪圖選項和數據展示4個部分。繪圖區包含TeeChart 8.0以控件形式提供的風向玫瑰圖和雷達圖兩種繪圖類型;查詢選項包含從CIMISS檢索臺站風向數據所必需的站號、方式、時間等條件設置信息,站號支持用戶輸入;繪圖選項包含繪圖類別、屬性設置等;數據展示包括原始數據展示和最終計算結果展示。圖4給出了系統的繪圖效果,圖中,(a)、(b)兩幅圖和(c)、(d)兩幅圖分別使用的是TeeChart 8.0的風向玫瑰圖和雷達圖風格。

圖4 風向玫瑰圖繪制效果

4 結束語

鑒于傳統風向玫瑰圖繪制方法存在工作量大、靈活性不足等問題,文章基于VC++編程,以CIMISS系統作為數據源,首先實現了以客戶端方式從CIMISS系統中獲取并計算任意一個臺站在任意時段內的風向頻率數據;其次,調用TeeChart 8.0插件,實現了風向玫瑰圖的快速繪制。從繪制方法和結果來看,繪圖方便快捷,靈活性、通用性較強,圖形樣式豐富、美觀。下一步工作中,將增加按月、按季節的分類統計方法和繪圖選項,進一步豐富系統的功能。

猜你喜歡
設置
中隊崗位該如何設置
少先隊活動(2021年4期)2021-07-23 01:46:22
船舶防火結構及設置的缺陷與整改
水上消防(2020年5期)2020-12-14 07:16:18
中外醫學專業與專科設置對比分析及啟示
特殊場景下列控等級轉換的設置方案
7招教你手動設置參數
動車段(所)股道有效長設置研究
我國中小學將設置人工智能相關課程
玩具世界(2017年9期)2017-11-24 05:17:29
吃紙的妖怪
本刊欄目設置說明
中俄臨床醫學專業課程設置的比較與思考
主站蜘蛛池模板: 欧美不卡二区| 国产成人无码Av在线播放无广告| 久久精品这里只有精99品| 日韩美毛片| 18禁黄无遮挡免费动漫网站| 秋霞午夜国产精品成人片| 美女扒开下面流白浆在线试听| 日本a级免费| 女人一级毛片| 在线观看亚洲精品福利片| 亚洲精品福利视频| 无码乱人伦一区二区亚洲一| V一区无码内射国产| 欧美人与性动交a欧美精品| 国产极品美女在线| 国产精品区视频中文字幕| 久青草网站| 国产超薄肉色丝袜网站| 欧美中文字幕在线播放| 操操操综合网| 国产精品极品美女自在线| 97在线公开视频| 亚洲男人天堂2020| 99久久成人国产精品免费| 国产亚洲一区二区三区在线| 五月天香蕉视频国产亚| 97免费在线观看视频| 国产一区二区三区免费观看| 欧洲亚洲一区| 国产精品亚洲欧美日韩久久| 国产杨幂丝袜av在线播放| 久久人人爽人人爽人人片aV东京热| 久久semm亚洲国产| 国产黄网站在线观看| 欧美日韩在线观看一区二区三区| 欧美成人手机在线观看网址| 人妻丰满熟妇AV无码区| 在线视频亚洲欧美| 亚洲人成网站观看在线观看| 一级毛片高清| 国产成人AV综合久久| 亚洲天堂网2014| 91亚洲视频下载| 谁有在线观看日韩亚洲最新视频 | 国产成人综合久久精品尤物| 日韩av高清无码一区二区三区| 国产精品手机视频| 国产第一页免费浮力影院| 试看120秒男女啪啪免费| 国产玖玖视频| 久久黄色小视频| 亚洲精品第五页| 国产日韩欧美在线视频免费观看| 国产美女自慰在线观看| 国产麻豆精品久久一二三| 亚洲成年人网| 中文字幕久久亚洲一区| 久久久国产精品免费视频| AV不卡无码免费一区二区三区| 久久久久国色AV免费观看性色| 国产欧美日韩va另类在线播放| 国产小视频a在线观看| 久久a毛片| 国产精品无码一二三视频| 爱色欧美亚洲综合图区| 亚洲第一成年人网站| 香蕉久久国产超碰青草| 色天天综合久久久久综合片| 无码专区国产精品第一页| 日韩国产一区二区三区无码| 久久天天躁狠狠躁夜夜躁| 亚洲人成亚洲精品| 蜜桃视频一区二区三区| 成人免费视频一区二区三区| 亚洲高清中文字幕| 午夜福利网址| 国产电话自拍伊人| 亚洲欧美成人综合| 福利一区在线| 国产拍揄自揄精品视频网站| 久久人妻xunleige无码| 青青青视频免费一区二区|