• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于C#與FORTRAN混合編程的精密單點定位軟件研制

    2013-12-06 08:43:00彭秀英王宗強張尊良
    測繪工程 2013年5期
    關鍵詞:字符串控制參數(shù)單點

    彭秀英,王宗強,張尊良

    (中國石油大學 地球科學與技術學院,山東 青島 266580)

    FORTRAN是一種非常適合科學計算的底層程序開發(fā)語言,擁有強大的程序集和計算類的數(shù)據(jù)結構,數(shù)值計算速度快,在GPS定軌和定位軟件開發(fā)中應用廣泛。C#是目前最新的一種基于.NET平臺的面向對象開發(fā)語言,具有強大的界面開發(fā)平臺,適用于交互式圖形界面的系統(tǒng)開發(fā)[1]。因此,基于C#與FORTRAN語言的混合編程技術,充分利用兩種語言各自的優(yōu)點,優(yōu)勢互補,可以開發(fā)出既具有高效計算能力又具有友好界面的應用程序軟件,如數(shù)值仿真系統(tǒng)[2]、土木工程計算[3]、地震速度分析[4]等。

    精密單點定位(Precise Point Positioning,PPP)技術采用精密衛(wèi)星星歷和鐘差以及一臺GPS雙頻接收機的偽距和載波相位觀測值,單機即可實現(xiàn)從毫米到厘米級的靜態(tài)定位以及厘米到分米級的動態(tài)定位[5-7]。PPP技術無需建立基準站,不受作用距離的限制,目前已成為GPS精密定位和導航的重要手段,在GPS氣象學、地震形變監(jiān)測、遠程海上動態(tài)精密定位等領域得到廣泛應用。目前,國際上著名的幾個定軌/定位軟件如GIPSY、BERNESE、EPOS等均具有精密單點定位功能,國內(nèi)武漢大學研制的PANDA軟件[8]和TRIP軟件[9],也均實現(xiàn)了精密單點定位的數(shù)據(jù)處理。筆者在已有精密單點定位FORTRAN程序的基礎上,基于C#與FORTRAN混合編程技術,實現(xiàn)精密單點定位軟件的研制。采用txt文件進行控制參數(shù)信息的傳遞以及基于數(shù)組的字符串傳遞方法,很好地解決了PPP軟件輸入?yún)?shù)多、參數(shù)傳遞中容易出錯等問題。利用IGS跟蹤站數(shù)據(jù),采用研制的精密單點定位軟件,對PPP單天解的精度進行了驗證。

    1 C#與FORTRAN混合編程的關鍵技術與實現(xiàn)

    實現(xiàn)C#和FORTRAN混合編程,常用的方法是將FORTRAN控制臺應用程序編制成動態(tài)鏈接庫(DLL)文件,用C#開發(fā)友好的用戶界面,并調(diào)用該DLL文件實現(xiàn)混合編程。由于C#和FORTRAN語言有著許多各自不同的約定(如命名約定、函數(shù)調(diào)用、參數(shù)傳遞約定等),因此在實現(xiàn)C#與FORTRAN的混合編程時,必須統(tǒng)一這些基本約定[1-4]。本文基于C#與FORTRAN混合編程,實現(xiàn)精密單點定位軟件的研制,其基本流程如圖1所示。

    圖1 軟件基本流程

    在精密單點定位的數(shù)據(jù)處理中,需輸入較多的控制參數(shù)信息,如GPS觀測值數(shù)據(jù)文件、接收機天線類型和天線高信息、IGS精密星歷與鐘差產(chǎn)品的類型和采樣間隔、定位類型(靜態(tài)、動態(tài),陸地、水上、空中)、衛(wèi)星截止高度角、GPS原始數(shù)據(jù)采樣率、數(shù)據(jù)處理間隔、數(shù)據(jù)處理的時間窗口(起始歷元和結束歷元)等。上述控制參數(shù)和字符串的傳遞是實現(xiàn)C#與FORTRAN混合編程的關鍵。在FORTRAN語言編制的精密單點定位程序中,上述信息是以控制參數(shù)文件(*.txt)的形式,傳遞給FORTRAN程序調(diào)用的。因此,采用C#與FORTRAN語言混合編程時,本文仍然利用txt文件實現(xiàn)精密單點定位中眾多控制參數(shù)信息的快速傳遞,并采用數(shù)組形式進行C#與FORTRAN之間的字符串傳遞,從而很好地解決了傳遞參數(shù)多、容易出錯等問題。

    1.1 基于txt文件的快速參數(shù)傳遞

    首先,將精密單點定位所需控制參數(shù)信息通過C#開發(fā)的交互式圖形界面?zhèn)鬟f給軟件;然后,利用C#語言將傳遞進來的控制參數(shù)信息輸出并寫入控制參數(shù)文件(*.txt);最后,由C#調(diào)用定位模塊(FORTRAN動態(tài)鏈接庫),從txt文件中讀取定位所需控制參數(shù)信息,從而實現(xiàn)C#到FORTRAN動態(tài)鏈接庫的快速參數(shù)傳遞。

    由于需要使用C#的文件操作函數(shù),因此需要使用命名空間using System.IO,該命名空間包含允許讀寫文件和數(shù)據(jù)流的一些操作方法。

    具體程序實現(xiàn)如下:

    1)利用C#語言,讀取“設置”窗口中所輸入的控制參數(shù)值(所有的控制參數(shù)全部寫到一個類里面,并定義成靜態(tài)類方便后面調(diào)用)。

    列舉3種范例:

    controlPara.CutoffAngle=double.Parse(textBox1.Text);%截止高度角

    controlPara.AntTypeFile=this.comboBox1.Text;%天線類型

    if(radioButton13.Checked)

    controlPara.PositioningType=0;%定位類型

    2)利用新建工程地址和觀測值文件地址,得到控制參數(shù)文件(*.txt)的地址和名稱。實現(xiàn)語句如下:

    string controlfilename="control_parameter_"+controlPara.ObsFile+".txt";

    controlPara.Ctr_FileName=dz5+controlfilename;

    3)利用C#語言,將控制參數(shù)信息輸出并寫入上述控制參數(shù)文件(*.txt)。輸出的txt文件可為定位模塊(FORTRAN動態(tài)鏈接庫)提供定位所需的控制參數(shù)信息,從而快速實現(xiàn)C#到FORTRAN的參數(shù)傳遞。

    部分代碼如下:

    StreamWriter outputstream=File.Create-Text(@controlPara.Ctr_FileName);

    outputstream.WriteLine("PPP control parameter");

    使用上述基于txt文件的參數(shù)傳遞方法,在制作和調(diào)用FORTRAN動態(tài)鏈接庫(DLL)文件時,可以避免許多由參數(shù)類型和長度而引起的混亂,且該方法可以實現(xiàn)修改較少代碼就能輕松實現(xiàn)混合編程的功能。此方法也可以用于C#和Matlab等語言的混合編程,同時給其他語言之間的混合編程提供了借鑒。

    1.2 基于數(shù)組形式的字符串傳遞

    C#語言使用\O表示字符串的結束,而FORTRAN語言采用最右端添加空格的方式表示字符串的結束,并在最右端使用一個隱藏的參數(shù)表示字符串的實際長度。因此在兩種語言間傳遞字符串時極易出錯。本文采用了基于數(shù)組形式的字符串傳遞,該方法簡單而實用。

    1)在C#中將字符串分割為字符數(shù)組,再將字符數(shù)組轉換為ASCII碼數(shù)組,然后傳遞給FORTRAN語言。

    部分代碼如下:

    string c=controlPara.Ctr_FileName;

    ASCIIEncoding ascii=new ASCIIEncoding();

    int[]num=new int[c.Length];

    for(int i=0;i<c.Length;i++)

    num[i]=(int)ascii.GetBytes(c)[i];

    執(zhí)行上述代碼,即可把控制參數(shù)txt文件地址和名稱字符串進行轉換,放在ASCII碼數(shù)組num[]中。

    2)在FORTRAN中利用char()函數(shù)將ASCII碼數(shù)組還原為字符串。

    部分代碼如下:

    character(m)::str

    dimension num(m)

    integer i

    do i=1,m

    str(i:i)=char(num(i))

    end do

    執(zhí)行上述代碼,即可將ASCII碼數(shù)組還原為字符串,從而得到控制參數(shù)txt文件的地址和名稱。

    1.3 動態(tài)鏈接庫(DLL)文件的制作和調(diào)用

    在FORTRAN語言中,將精密單點定位FORTRAN程序以子程序進行編譯,生成可以在C#中調(diào)用的動態(tài)鏈接庫(DLL)文件。在FORTRAN子程序中需要進行以下說明:

    !DECMYM ATTRIBUTES DLLEXPORT::PPP

    !DECMYM ATTRIBUTES ALIAS:'UNIP'::PPP

    這是FORTRAN制作DLL文件和編寫一般FORTRAN程序的根本區(qū)別,即在程序代碼中要說明哪些函數(shù)可以被外界調(diào)用。

    在C#平臺中調(diào)用FORTRAN動態(tài)鏈接庫(DLL)文件,即可執(zhí)行軟件的精密單點定位功能。

    1)須把制作的FORTRAN動態(tài)鏈接庫(DLL)文件,拷貝到C#應用程序目錄的bin文件夾下的Debug中,以保證該DLL文件在調(diào)用目錄下。

    2)創(chuàng)建一個新類calldll,用于存放調(diào)用DLL的聲明語句,以方便DLL文件的調(diào)用。

    public static class calldll

    [DllImport("PPP.dll",SetLastError=true,CharSet=CharSet.Unicode,CallingConvention=CallingConvention.StdCall)]

    public static extern void PPP(ref int ka,ref int m);

    這樣也方便調(diào)用多個DLL,只要在這個類中加兩句聲明即可。

    3)在C#中調(diào)用FORTRAN動態(tài)鏈接庫(DLL)文件

    calldll.PPP(ref num[0],ref m);

    直接調(diào)用即可,需要注意的是函數(shù)名要大寫,傳遞的變量要與聲明中相對應。

    2 精密單點定位軟件的精度驗證

    精密單點定位軟件的主界面如圖2所示,其核心部分為“數(shù)據(jù)處理”菜單,具體包括“設置”和“處理”兩項。“設置”要求用戶輸入精密單點定位所需的所有控制參數(shù)信息,彈出窗口如圖3所示。

    圖2 軟件主界面

    圖3 控制參數(shù)設置

    輸入控制參數(shù)后,然后點擊“數(shù)據(jù)處理”菜單中的“處理”選項,軟件即可自動進行精密單點定位的數(shù)據(jù)處理,最后將定位結果輸出并保存在文本文件中。

    為了驗證精密單點定位(PPP)軟件的定位精度,本文基于IGS事后精密星歷和鐘差產(chǎn)品,利用IGS跟蹤站實測數(shù)據(jù),進行了靜態(tài)PPP數(shù)據(jù)處理。以IGS發(fā)布的跟蹤站周解(三維地心坐標)為參考值,對PPP單天解的精度進行評價。同時,以跟蹤站周解坐標位置為原點,將PPP單天解的三維地心坐標(X,Y,Z)轉換為站心坐標(N,E,U),從而對PPP單天解的平面位置和高程方向的精度進行評價。以chan(長春)、shao(上海)為例,各站點單天解的真誤差和均方根差(RMS)統(tǒng)計,詳見表1。

    表1 PPP單天解的誤差統(tǒng)計 m

    由表1可知:相對于IGS發(fā)布的跟蹤站周解坐標,各站點PPP單天解坐標在X,Y,Z或N,E,U方向的誤差大部分都小于1cm,其均方根差(RMS)均優(yōu)于1cm,與國內(nèi)外其他較為成熟的PPP軟件的精度相當[8]。其中N方向的RMS較小,而E,U方向的RMS稍大;分析其原因主要與GPS觀測值誤差改正模型精度以及PPP相位模糊度浮點解有關,采用PPP相位模糊度固定技術可進一步提高E坐標方向的精度[10]。

    3 結束語

    基于C#與FORTRAN混合編程技術可以充分利用C#和FORTRAN語言各自的優(yōu)點,使開發(fā)的軟件既具有高效的計算性能又具有友好的交互界面。本文采用基于txt文件的快速參數(shù)傳遞和基于數(shù)組形式的字符串傳遞方法,很好地解決了精密單點定位中眾多控制參數(shù)的傳遞問題,可為其他專業(yè)應用軟件的開發(fā)提供借鑒。

    [1]林國勇,董洵,吳婉凡.在.NET平臺下C#和FORTRAN的混合語言編程[J].計算機系統(tǒng)應用,2003(9):58-60.

    [2]朱泰山,王一一,馮國泰.基于FORTRAN與C#混編數(shù)值仿真軟件系統(tǒng)的實現(xiàn)[J].電腦編程技巧與維護,2008(14):12-15.

    [3]周濤,郭占元,郭向榮.FORTRAN與C#混合編程在土木工程計算中的應用[J].山東交通學院學報,2009,17(1):80-86.

    [4]李勤,李慶春,馮宏.C#和FORTRAN混合編程在地震速度分析中的應用[J].地球物理學進展,2010,25(4):1503-1507.

    [5]Zumberge JF,Heflin MB,Jefferson DC,Watkins MM,and Webb FH,“Precise point positioning for the efficient and robust analysis of GPS data from large networks,”J Geophy Res,102(B3),1997:5005-5017.

    [6]Kouba J and Heroux P,“Precise point positioning using IGS orbit and clock products,”GPS Solut,2001,5(2):12-28.

    [7]馬國元,李廣云,李宗春.機載PPP與動基線測量相對定位精度比較與分析[J].測繪工程,2012,21(5):69-70.

    [8]施闖,趙齊樂,樓益棟,等.衛(wèi)星導航系統(tǒng)綜合分析處理軟件PANDA及研究進展[J].航天器工程,2009,18(4):64-70.

    [9]張小紅,劉經(jīng)南,Rene Forsberg.基于精密單點定位技術的航空測量應用實踐[J].武漢大學學報:信息科學版,2006,31(1):19-23.

    [10]GE M,GENDT G,ROTHACHER M,et al.Resolution of GPS carrier-phase ambiguities in precise point positioning(PPP)with daily observations[J].J Geod,2008,82(7):389-399.

    猜你喜歡
    字符串控制參數(shù)單點
    高超聲速飛行器滑??刂茀?shù)整定方法設計*
    飛控與探測(2022年6期)2022-03-20 02:16:14
    Birkhoff系統(tǒng)穩(wěn)定性的動力學控制1)
    力學學報(2020年4期)2020-08-11 02:32:12
    歷元間載波相位差分的GPS/BDS精密單點測速算法
    超薄異型坯連鑄機非平衡單點澆鑄實踐與分析
    山東冶金(2019年5期)2019-11-16 09:09:10
    基于PI與準PR調(diào)節(jié)的并網(wǎng)逆變器控制參數(shù)設計
    黑龍江電力(2017年1期)2017-05-17 04:25:08
    數(shù)字電視地面?zhèn)鬏斢脝晤l網(wǎng)與單點發(fā)射的效果比較
    16噸單點懸掛平衡軸的優(yōu)化設計
    一種新的基于對稱性的字符串相似性處理算法
    一體化污泥干化焚燒裝置工藝控制參數(shù)的優(yōu)化及運行
    依據(jù)字符串匹配的中文分詞模型研究
    江达县| 福贡县| 贡觉县| 稷山县| 永靖县| 昭通市| 黄骅市| 黄浦区| 葫芦岛市| 新安县| 莲花县| 诏安县| 遂平县| 彝良县| 萨嘎县| 思南县| 营山县| 澄江县| 柘城县| 长沙市| 开平市| 卫辉市| 平阳县| 庆安县| 南京市| 武义县| 马尔康县| 仙游县| 遂川县| 莒南县| 社旗县| 梅河口市| 林甸县| 饶阳县| 普安县| 祁阳县| 灵宝市| 禄劝| 南漳县| 深州市| 淅川县|