李云春


摘要 等值線圖繪制研究是氣象服務工作中的一項重要內容,氣象服務關系到工農業生產、交通運輸、電力、航空航天等各領域的健康發展,提高服務水平意義重大。本文通過C#調用Surfer提供的API(應用程序接口)實現雨量分布圖等值線的自動生成,可大幅提高繪圖效率,有效提高氣象服務的可視化效果,提供更加直觀科學的決策依據,目前已將該產品應用到日常服務工作當中。實踐證明,通過C#調用Surfer繪制等值線在氣象服務工作中有著廣泛的應用。
關鍵詞 等值線;自動繪制;C#;Surfer;氣象服務
中圖分類號 P209 文獻標識碼 B 文章編號 1007-5739(2017)11-0205-02
隨著經濟社會的快速發展,氣象服務在各行業生產以及人們的生活當中發揮了重要的作用,氣象服務關系到工農業生產、交通運輸、電力、航空航天等各領域的健康發展。由于氣象服務在國民經濟中具有重要地位,故提高氣象服務水平的意義重大。目前,等值線圖繪制研究是氣象服務工作中的一項重要內容,通過氣象要素數據繪制的等值線圖科研體現區域內的氣象形勢,是形成眾多氣象服務產品的基礎。與此同時,等值線需要依靠人工進行繪制,存在一定的局限性,面對復雜而大量的氣象數據,技術人員的工作量大,繪制效果并不理想。為了提升等值線繪制的水平、減少工作量,筆者通過對Surfer API的學習研究,利用C#編程實現等值線的自動化繪制,從而制作出各類氣象要素等值線服務產品,為氣象服務提供了豐富的圖形產品。
1 技術介紹
1.1 C#技術
C#語言由C和C++衍生而來,是由微軟公司發布的高級程序設計語言,其運行于.NET Framework虛擬機平臺上,借鑒了Delphi與組件對象模型直接集成的特點,其語法、接口等又與Java類似,因而具有安全、穩定、簡單等特點。C#是一種很實用的語言,兼顧系統開發和應用開發,適宜于為獨立和嵌入式的系統編寫程序,對于系統的適用性均較強。因為C#與C/C++相似,C++程序員對熟悉的語言更能較為容易地掌握,還可以調用相關原生函數,因而提高了效率;同時因為C#是面向對象的編程語言,針對MICROSOFT .NET平臺的應用程序編寫更為方便。C#所開發的程序源代碼被編譯成為中間代碼,類似于Java,然后通過虛擬機通用語言運行庫執行,由于.Net Framework緩沖區存儲了各類代碼,減少了重復翻譯,顯著提高了運行的效率[1]。
1.2 Surfer API
Surfer由美國Golden Software 公司發布,是一款專業的三維圖形繪制軟件,可用于等高線、地形地貌圖、三維表面圖、矢量圖、點位圖等的圖件制作。Surfer 對于處理三維數據具有明顯的優勢,主要是因為結合了數據差值功能和圖件繪制功能[2]。在數據處理方面,該軟件包含了大部分數據統計計算方法,有11種數據網格化方法可供選擇,支持多種圖形圖像文件格式,為其提供了導入和導出的接口,應用十分方便。對各類GIS軟件的文件格式也提供相應的接口,非常適合于制作地理信息類的圖件,其方便的文件、數據交換功能很受用戶青睞。此外,還提供了腳本編輯引擎,大大提升了軟件的自動化功能,使用更為簡便[3-6]。
2 基于C#/Surfer Api的編程
2.1 Surfer內置對象
Surfer Application主要包括文檔、窗體、風格、函數4個對象(圖1),其中文檔對象是一個集合,不能直接使用,分為圖形對象和工作表對象。另外,還存在一些獨立的對象,比如線條對象、顏色對象等。
2.2 核心程序設計
//創建Surfer應用程序實例
Surfer.ApplicationClass surapp=new Surfer.ApplicationClass();
//網格化數據
try
{
surapp.GridData(DataFile,1,2,3,Type.Missing,Surfer.SrfDupMethod.srfDupNone,0.03,0.03,Type.Missing,Type.Missing,102.68239593506,103.85780334473,34.939952850342, 36.221523284912,Surfer.SrfGridAlgorithm.srfInverseDistance,……,OutGrid,Surfer.SrfGridFormat.srfGridFmtAscii,OutGrid,Surfer.SrfGridFormat.srfGridFmtAscii,Type.Missing,Type.Missing,Type.Missing,Type.Missing);
surapp.GridSplineSmooth(OutGrid,8,8,SrfSpline Method.srfSplineInsert,SmoothGrid,SrfGridFormat.srfGridFmt Ascii);
surapp.GridBlank(SmoothGrid,BlankFile,BlankedGrid,Surfer.SrfGridFormat.srfGridFmtAscii);
Surfer.IPlotDocument Doc =(Surfer.IPlotDocument)surapp.Documents.Add(Surfer.SrfDocTypes.srfDocPlot);
Surfer.IMapFrame mapframe = Doc.Shapes.AddContourMap(BlankedGrid);
IContourMap contourMap=(IContourMap)mapframe.Overlays. Item(1);
contourMap.Levels.LoadFile(System.Windows.Forms.Application.StartupPath + @"\100.lvl");
Surfer.IText Text1 = Doc.Shapes.AddText(contourMap.Left + 1,contourMap.Top - 5.5,sdata.Substring(0,4)+ "年" + sdata.Substring(4,2)+ "月" + sdata.Substring(6,2)+ "日" + sdata.Substring(8,2)+ "時" + sdata.Substring(10,2)+ "分");
Text1.Font.Size = 11;
Surfer.IText Text2 = Doc.Shapes.AddText(contourMap.Left + 3,contourMap.Top - 5.5,"臨夏州雨量分布圖");
Text2.Font.Size = 12;
IMapFrame mapframe1=Doc.Shapes.AddPostMap(PoseFile, 1,2,3,0,0);
IPostMap map1 =(IPostMap)mapframe1.Overlays.Item(1);
IMapFrame boundryMapFrame = Doc.Shapes.AddBaseMap(qyFile);
IBaseMap boundryBaseMap=(IBaseMap)boundryMapFrame. Overlays.Item(1);
boundryBaseMap.Line.Width = 0.01;
string strWH = string.Format("width = {0:f0},height = {1:f0},KeepAspect = 1,ColorDepth = 32",1044,1092);//設置輸出圖片的高度和寬度
Doc.Shapes.SelectAll();
Doc.Selection.OverlayMaps();
Doc.SaveAsSystem.Windows.Forms.Application.StartupPath + @"\1.srf");
Doc.Export(System.Windows.Forms.Application.StartupPath + @"\bmp\" + sdata + ".png",false,strWH );//設置輸出圖片格式名
Doc.Close(SrfSaveTypes.srfSaveChangesNo); //不生成srf文件
surapp.Quit();
//清理臨時文件
File.Delete(SmoothGrid);
File.Delete(OutGrid);
File.Delete(BlankedGrid);
File.Delete(DataFile);
3 產品在日常工作中的應用
目前,臨夏州已將繪制出來的產品應用到了日常服務工作之中,為相關部門提供更加直觀科學的決策依據。圖2為自動繪制的雨量分布圖產品。
4 結語
通過C#調用Surfer提供的API(應用程序接口)實現等值線的自動生成,大大提高了繪圖效率,節省了氣象工作者的時間,有效提高氣象服務的可視化效果,提供更加直觀科學的決策依據。
5 參考文獻
[1] 齊立波.C#入門經典[M].4版.北京:清華大學出版社,2008.
[2] 王建,白世彪,陳曄.Surfer8地理信息制圖[M].北京:中國地圖出版社,2004:124-128.
[3] 崔芳鵬,胡瑞林,劉照連,等.基于Surfer平臺的FLAC~(3D)復雜三維地質建模研究[J].工程地質學報,2008(5):699-702.
[4] 韓麗娜,石昊蘇.利用Surfer8.0繪制地質等值線圖[J].計算機與現代化,2008(11):84-87.
[5] 宋明藝,張春灌.借助Surfer軟件實現快速繪制平面等值線圖[J].工程地球物理學報,2009(2):244-246.
[6] 武俊紅,汪云甲.基于Surfer的煤礦等值線空間插值方法有效性評價[J].中國礦業,2007(1):108-110.