焦方成 武雯
摘要:該文首先是通過對MeteoInfo軟件基本概念、地圖數(shù)據(jù)、氣象數(shù)據(jù)等作簡要介紹分析,然后詳述利用MeteoInfo類庫設(shè)計自己的界面程序步驟, 旨在更加方便完善我們的氣象業(yè)務(wù)需求。
關(guān)鍵詞: MeteoInfo;數(shù)據(jù)格式;界面程序
中圖分類號:TP311 文獻標(biāo)識碼:A 文章編號:1009-3044(2014)27-6513-02
Abstract: This paper first briefly introduce and analyze the basic concept of MeteoInfo software, map data, meteorological data, and then amplified using MeteoInfo class library interface design procedures of their own, to more convenient and improve our demand of meteorological service.
Key words: MeteoInfo; data formats; interface program
1 MeteoInfo簡介
MeteoInfo是一個免費的氣象數(shù)據(jù)顯示、分析軟件,具有較強的綜合數(shù)據(jù)圖形顯示、分析能力,操作簡便、圖形美觀。軟件支持多種常用氣象數(shù)據(jù)格式,具備一些基本的GIS功能。MeteoInfo還可以通過編寫IronPython腳本程序自動運行,具備強大的數(shù)據(jù)分析功能。MeteoInfo的核心是它的類庫MeteoInfoC.dll,使用該類庫可以方便快捷地開發(fā)氣象數(shù)據(jù)顯示分析類軟件。利用類庫可以在Microsoft的.Net環(huán)境中可以用C#語言開發(fā)自己的氣象信息顯示界面。
MeteInfo的免費下載網(wǎng)址是 http://www.meteothinker.com。下載后將安裝文件解壓成.exe可執(zhí)行文件。軟件安裝過程十分簡單,只需要點擊‘下一步即可完成安裝。軟件安裝后在安裝目錄下有‘Map和‘Sample子目錄,‘Map子目錄中包含了一些常用的地圖數(shù)據(jù),‘Sample子目錄下有一些示例數(shù)據(jù)可用于軟件學(xué)習(xí)。
Windows操作系統(tǒng)中MeteoInfo軟件必須有.Net Framework 3.5 SP1的支持,如果你的計算機中沒有.Net Framework 3.5 SP1,需要安裝它以后MeteoInfo才能正常使用。軟件安裝后在電腦桌面自動生成快捷按鈕,雙擊可以運行MeteoInfo.
在其它操作系統(tǒng)中,如Linux,安裝了mono以后也可以使用MeteoInfo。
2 MeteoInfo支持的數(shù)據(jù)格式
2.1 目前MeteoInfo支持以下格式的地圖數(shù)據(jù)
1) ESRI的shape格式數(shù)據(jù)(點、線、面)。
2) GrADS格式的地圖數(shù)據(jù)。
3) MICAPS格式的地圖數(shù)據(jù)。
4) wmf格式的地圖數(shù)據(jù)(MeteoInfo自定義的地圖數(shù)據(jù)格式,能夠用‘輸出地圖數(shù)據(jù)功能輸出該格式的地圖數(shù)據(jù))。
2.2 目前MeteoInfo支持下列氣象數(shù)據(jù)格式
1) NetCDF格點數(shù)據(jù);2) GRIB 1和2格式數(shù)據(jù);3) GrADS二進制格點和站點數(shù)據(jù);4) HDF EOS5 Grid和Swath數(shù)據(jù);5) ARL格式氣象數(shù)據(jù);6) HYSPLIT模式輸出數(shù)據(jù):Concentration(濃度)Particle(顆粒)、Trajectory(氣團軌跡);7) METAR格式站點數(shù)據(jù) (目前針對NOAA的cycle METAR數(shù)據(jù)格式;8) NOAA ISH數(shù)據(jù);9) MICAPS第1、3、4、7、11、13類格式數(shù)據(jù);10) ESRI ASCII格點數(shù)據(jù);11) Surfer ASCII格點數(shù)據(jù);12) AWX格式數(shù)據(jù)。
3 利用MeteoInfo類庫設(shè)計自己的界面程序
利用MeteoInfo類庫設(shè)計自己的界面程序最基本的要引用MeteoInfo類庫和添加LayersLegend、MapView和MapLayout控件。上述3個控件是MeteoInfo類庫里最重要的控件,LayersLegend是管理MapFrame和Layer的(還有Group),MapView是地圖顯示控件,MapLayout是圖形版面管理控件。使用過MeteoInfo桌面軟件應(yīng)該很容易理解這幾個控件的用途。最新MeteoInfo類庫(MeteoInfoC.dll),可以在MeteoInfo軟件中找到。下面簡單介紹一下利用類庫開發(fā)自己的界面程序的基本步驟。
1) 新建桌面程序項目,并引用MeteoInfo類庫,添加MeteoInfo類庫中的控件,并添加主要控件。
2) 添加MeteoInfo類庫中的主要控件:在主窗體中添加菜單欄、工具欄、狀態(tài)欄,以及一個SplitContainer和一個TabControl,將tabControl1的兩個TabPage分別改名為Map和Layout。將LayersLegend控件加入SplitContainer的左邊(layersLegend1) ,將MapView控件添加到tabControl1的Map頁面中(mapView1) ,將MapLayout控件添加到tabControl1的Layout頁面中(mapLayout1) ,控件的Dock屬性設(shè)置為Fill。為了將這三個控件相互關(guān)聯(lián)起來,首先要給layersLegend1添加一個MapFrame,點擊layersLegend1屬性中的MapFrames屬性,在彈出的對話框中增加一個MapFrame。將剛添加的MapFrame的MapView屬性設(shè)置為mapView1,Active屬性設(shè)置為True。將layersLegend1的MapLayout屬性設(shè)置為mapLayout1。
3) 實現(xiàn)MapView和MapLayout切換。
在tabControl1_SelectedIndexChanged事件中添加如下代碼:
1. private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
2. { if (tabControl1.SelectedIndex == 1) //Map Layout
3. { layersLegend1.IsLayoutView = true;
4. mapLayout1.PaintGraphics();
5. mapLayout1.Refresh();}
6. else if (tabControl1.SelectedIndex == 0) //Map view
7. { layersLegend1.IsLayoutView = false;
8. mapView1.IsLayoutMap = false;
9. mapView1.ZoomToExtent(mapView1.ViewExtent); } }
4) 添加圖層。在工具欄中加一個添加圖層按鈕,并在其Click事件中添加如下代碼:
1. private void TSB_AddLayer_Click(object sender, EventArgs e)
2. { OpenFileDialog aDlg = new OpenFileDialog();
3. aDlg.Filter = "Supported Formats|*.shp;*.wmp;*.bln;*.bmp;*.gif;*.jpg;*.tif;*.png|Shape File (*.shp)|*.shp|WMP File (*.wmp)|*.wmp|BLN File (*.bln)|*.bln|" +
4. "Bitmap Image (*.bmp)|*.bmp|Gif Image (*.gif)|*.gif|Jpeg Image (*.jpg)|*.jpg|Tif Image (*.tif)|*.tif|Png Iamge (*.png)|*.png|All Files (*.*)|*.*";
5. if (aDlg.ShowDialog() == DialogResult.OK)
6. { string aFile = aDlg.FileName;
7. MapLayer aLayer = MapDataManage.OpenLayer(aFile);
8. layersLegend1.ActiveMapFrame.AddLayer(aLayer);
9. layersLegend1.Refresh();} }
5) 設(shè)置MapView和MapLayout的初始鼠標(biāo)工具。
在主窗體的創(chuàng)建函數(shù)中在InitializeComponent()后加入如下代碼:
1. mapView1.MouseTool = MouseTools.Pan;
2. mapLayout1.MouseMode = MouseMode.Select;
運行程序,顯示運行結(jié)果。
4 結(jié)束語
MeteoInfo作為一款國產(chǎn)免費的氣象信息綜合處理顯示軟件,再日常的氣象業(yè)務(wù)應(yīng)用中可以作為替代大型GIS平臺的工具。一方面可以減少成本,另一方面,方便完善的氣象信息支持也為我們開發(fā)氣象業(yè)務(wù)應(yīng)用軟件提供了便捷。
參考文獻:
[1] http://www.meteothinker.com/.
[2] 樊榮,朱衛(wèi)星,馮志偉.基于MeteoInfo的雷電可視化軟件設(shè)計與實現(xiàn)[C].第30屆中國氣象學(xué)會年會論文集,2014.