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

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

2013-12-06 08:43:00彭秀英王宗強(qiáng)張尊良
測繪工程 2013年5期
關(guān)鍵詞:語言

彭秀英,王宗強(qiáng),張尊良

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

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

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

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

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

圖1 軟件基本流程

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

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

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

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

具體程序?qū)崿F(xiàn)如下:

1)利用C#語言,讀取“設(shè)置”窗口中所輸入的控制參數(shù)值(所有的控制參數(shù)全部寫到一個(gè)類里面,并定義成靜態(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)的地址和名稱。實(shí)現(xiàn)語句如下:

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

controlPara.Ctr_FileName=dz5+controlfilename;

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

部分代碼如下:

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

outputstream.WriteLine("PPP control parameter");

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

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

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

1)在C#中將字符串分割為字符數(shù)組,再將字符數(shù)組轉(zhuǎn)換為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文件地址和名稱字符串進(jìn)行轉(zhuǎn)換,放在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 動(dòng)態(tài)鏈接庫(DLL)文件的制作和調(diào)用

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

!DECMYM ATTRIBUTES DLLEXPORT::PPP

!DECMYM ATTRIBUTES ALIAS:'UNIP'::PPP

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

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

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

2)創(chuàng)建一個(gè)新類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)用多個(gè)DLL,只要在這個(gè)類中加兩句聲明即可。

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

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

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

2 精密單點(diǎn)定位軟件的精度驗(yàn)證

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

圖2 軟件主界面

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

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

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

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

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

3 結(jié)束語

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

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

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

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

[4]李勤,李慶春,馮宏.C#和FORTRAN混合編程在地震速度分析中的應(yīng)用[J].地球物理學(xué)進(jìn)展,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]馬國元,李廣云,李宗春.機(jī)載PPP與動(dòng)基線測量相對(duì)定位精度比較與分析[J].測繪工程,2012,21(5):69-70.

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

[9]張小紅,劉經(jīng)南,Rene Forsberg.基于精密單點(diǎn)定位技術(shù)的航空測量應(yīng)用實(shí)踐[J].武漢大學(xué)學(xué)報(bào):信息科學(xué)版,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.

猜你喜歡
語言
詩之新,以語言創(chuàng)造為基
中華詩詞(2023年8期)2023-02-06 08:51:28
語言是刀
文苑(2020年4期)2020-05-30 12:35:30
讓語言描寫搖曳多姿
多向度交往對(duì)語言磨蝕的補(bǔ)正之道
累積動(dòng)態(tài)分析下的同聲傳譯語言壓縮
日常語言與播音語言
新聞傳播(2016年10期)2016-09-26 12:15:04
語言技能退化與語言瀕危
我有我語言
論語言的“得體”
Only Words慎用你的語言
主站蜘蛛池模板: 99这里精品| 国产打屁股免费区网站| 在线欧美国产| 日韩国产欧美精品在线| 久久精品一品道久久精品| 国产精品手机在线观看你懂的| 亚洲女人在线| 精品一区二区三区四区五区| 波多野结衣中文字幕一区二区 | 亚欧成人无码AV在线播放| 国产v精品成人免费视频71pao| 久久人妻xunleige无码| 色悠久久综合| 日本久久久久久免费网络| 91精品久久久无码中文字幕vr| 亚洲熟女偷拍| 亚洲精品无码不卡在线播放| 一级一级特黄女人精品毛片| 在线观看国产黄色| 亚洲中久无码永久在线观看软件| 久久亚洲国产最新网站| 免费xxxxx在线观看网站| 亚洲无码高清一区二区| 亚洲日韩AV无码一区二区三区人| 色哟哟色院91精品网站| 亚洲综合天堂网| 午夜人性色福利无码视频在线观看| 欧美精品在线免费| 99久久国产综合精品2020| 国产精品入口麻豆| 国产精品原创不卡在线| 成人免费黄色小视频| 无套av在线| 一区二区三区四区精品视频 | 精品超清无码视频在线观看| 88av在线播放| 重口调教一区二区视频| 久久精品无码一区二区国产区| 亚洲天堂视频在线观看免费| 精品无码一区二区三区电影| 久久青草精品一区二区三区| 国产欧美网站| 视频二区欧美| 国产精品久久久精品三级| 欧美人在线一区二区三区| 国产精品第一区在线观看| 污污网站在线观看| 伊人查蕉在线观看国产精品| 亚洲精品成人福利在线电影| 久久人午夜亚洲精品无码区| 色综合日本| 欧洲成人免费视频| 国产在线无码av完整版在线观看| 色成人亚洲| 伊在人亚洲香蕉精品播放| 欧美综合中文字幕久久| 国产女人18毛片水真多1| 国产jizz| 亚洲精品视频免费看| 欧美国产中文| 久久久久久高潮白浆| 免费播放毛片| 99热这里只有精品免费国产| 亚洲色无码专线精品观看| 日韩精品一区二区三区大桥未久 | 国产日韩欧美一区二区三区在线| 国产精品亚洲天堂| 456亚洲人成高清在线| 成年人国产视频| 美女无遮挡免费网站| 在线看片中文字幕| 欧美有码在线观看| 天堂在线视频精品| 综合人妻久久一区二区精品| 免费国产小视频在线观看| 久久亚洲高清国产| 一级毛片在线播放| 欧美成人精品一区二区| 亚洲精品视频在线观看视频| 一级毛片不卡片免费观看| 青青青亚洲精品国产| 国产白丝av|