測(cè)量方位角計(jì)算公式VB源代碼_第1頁(yè)
測(cè)量方位角計(jì)算公式VB源代碼_第2頁(yè)
測(cè)量方位角計(jì)算公式VB源代碼_第3頁(yè)
測(cè)量方位角計(jì)算公式VB源代碼_第4頁(yè)
測(cè)量方位角計(jì)算公式VB源代碼_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

測(cè)量方位角計(jì)算公式VB源代碼角度化弧度

PublicFunctionRadian(aAsDouble)AsDouble

DimRaAsDouble

DimcAsDouble

DimFSAsDouble

DimIbAsInteger

DimIcAsInteger

Ra=pi/180#

Ib=Int(a)

c=(a-Ib)*100#

Ic=Int(c)

FS=(c-Ic)*100#

Radian=(Ib+Ic/60#+FS/3600#)*Ra

EndFunction

'弧度化角度

PublicFunctionDegree(aAsDouble)AsDouble

DimBAsDouble

DimFs1AsDouble

DimIm1AsInteger

DimId1AsInteger

B=a

CallDMS(B,Id1,Im1,Fs1)

Degree=Id1+Im1/100#+Fs1/10000#

EndFunctionPublicSubDMS(aAsDouble,IDAsInteger,IMAsInteger,FSAsDouble)

DimBAsDouble

DimcAsDouble

c=a

c=180#/pi*c

ID=Int(c+0.0000005)

B=(c-ID)*60+0.0005

IM=Int(B)

FS=(B-IM)*60EndSub'計(jì)算兩點(diǎn)間的方位角

PublicFunctionazimuth(x1AsDouble,y1AsDouble,x2AsDouble,y2AsDouble)AsSingle

DimdxAsDouble

DimdyAsDouble

DimfwjAsDouble

dx=x2-x1

dy=y2-y1

Ifdy<>0Then

fwj=pi*(1-Sgn(dy)/2)-Atn(dx/dy)

azimuth=Degree(fwj)

Else

Ifdx>0Then

azimuth=0

Else

azimuth=180

EndIf

EndIfEndFunction5.2程序字母代表含義La—起點(diǎn)里程,R—圓曲線半徑,l0—兩端緩和曲線長(zhǎng),α—曲線轉(zhuǎn)向角,T—切線長(zhǎng),L—曲線長(zhǎng),E0—外矢距,q—切曲差,cc—線路轉(zhuǎn)向(cc=1時(shí),線路向右轉(zhuǎn);cc=-1時(shí),線路向左轉(zhuǎn)),d―樁距,m―邊樁距,Li―i點(diǎn)的里程,ZH―直緩點(diǎn),HY―緩圓點(diǎn),JD―交點(diǎn),QZ―曲中點(diǎn),YZ―圓直點(diǎn),YH―圓緩點(diǎn),HZ―緩直點(diǎn),LJD—交點(diǎn)里程,LZH―直緩點(diǎn)里程,LHY―緩圓點(diǎn)里程,LQZ―曲中點(diǎn)里程,LYH―圓緩點(diǎn)里程,LHZ―緩直點(diǎn)里程。5.3程序設(shè)計(jì)思路及具體程序的編寫(xiě)程序的基本構(gòu)思:本程序利用已知直、曲線要素、交點(diǎn)坐標(biāo),計(jì)算出曲線上逐樁坐標(biāo),根據(jù)逐樁坐標(biāo)就可實(shí)地放樣。此程序在不同測(cè)站測(cè)設(shè)同一曲線時(shí),調(diào)用程序只需改變測(cè)站和后視點(diǎn)坐標(biāo)即可。不過(guò)測(cè)站點(diǎn)和后視點(diǎn)的坐標(biāo)系統(tǒng)與逐樁坐標(biāo)系統(tǒng)必須一致。程序設(shè)計(jì)中主要發(fā)現(xiàn)的問(wèn)題及解決辦法:5.3.1起點(diǎn)為非整樁的情況本程序采用將非整樁起點(diǎn)的坐標(biāo)通過(guò)變換成為整樁的方法。直線起點(diǎn)

L1=Int((la/10)*10+k)第一緩和曲線L2=Int(Ljd–T+K)圓曲線

L3=Int(Ljd-T+lo+K)第二緩和曲線L4=Int(Ljd-T+L–lo+K)并計(jì)算出這些點(diǎn)的坐標(biāo)。

表5.1起點(diǎn)是否整樁的判斷線型整樁起算點(diǎn)非整樁起算點(diǎn)直線起終點(diǎn)(兩端曲線的端點(diǎn))L1點(diǎn)第一緩和曲線ZH點(diǎn)L2點(diǎn)圓曲線ZH(帶緩和曲線)或ZY點(diǎn)L2點(diǎn)第二緩和曲線HZ點(diǎn)HZ點(diǎn)

5.3.2路線方位角的計(jì)算程序中采用的起算數(shù)據(jù)中不包含方位角一項(xiàng),因此必須要由已知的兩點(diǎn)坐標(biāo)計(jì)算出線路的方位角。本程序中利用ZH點(diǎn)和JD的坐標(biāo)計(jì)算。建立一個(gè)計(jì)算方位角的模塊:Functionαab#(Xa#,Ya#,Xb#,Yb#)αab=Atn(Abs(Yb-Ya)/Abs(Xb-Xa))

IfYb-Ya>=0AndXb-Xa>=0Then

αab=αab

ElseIfYb-Ya>0AndXb-Xa<0Then

αab=3.141592654-αab

ElseIfYb-Ya<=0AndXb-Xa<=0Then

αab=3.141592654+αab

Else

αab=2*3.141592654-αabEndIfEndFunctionαab——某點(diǎn)的方位角,Xa——起點(diǎn)X坐標(biāo)(ZH或ZY點(diǎn)坐標(biāo)),Ya——起點(diǎn)Y坐標(biāo)(ZH或ZY點(diǎn)坐標(biāo)),Xb——終點(diǎn)X坐標(biāo)(JD的X坐標(biāo)),Yb——終點(diǎn)Y坐標(biāo)(JD的Y坐標(biāo))5.3.3計(jì)算曲線邊樁坐標(biāo)的程序Xi=x0+Xxi*Cos(A0)-cc*Yyi*Sin(A0)

'i點(diǎn)的X坐標(biāo)Yi=y0+Xxi*Sin(A0)+cc*Yyi*Cos(A0)

'i點(diǎn)的Y坐標(biāo)Ai=A0+cc*βXz=Xi+m*Cos(Ai-3.141592654/2)

'左邊樁X坐標(biāo)

Yz=Yi+m*Sin(Ai-3.141592654/2)

'左邊樁Y坐標(biāo)

Xy=Xi+m*Cos(Ai+3.141592654/2)

'右邊樁X坐標(biāo)

Yy=Yi+m*Sin(Ai+3.141592654/2)

'右邊樁Y坐標(biāo)A0計(jì)算參考起點(diǎn)的方位角,Ai為計(jì)算點(diǎn)的方位角,m為邊樁距,Xi為計(jì)算點(diǎn)的X坐標(biāo),Yi為計(jì)算點(diǎn)的Y坐標(biāo),cc為轉(zhuǎn)向(左轉(zhuǎn)-1,右轉(zhuǎn)+1),β=li^2/(2*r*lo)。5.3.4計(jì)算數(shù)據(jù)的保存與顯示Open"C:\DocumentsandSettings\Administrator\桌面\道路放樣\計(jì)算結(jié)果\直線.txt"ForAppendAs#1

'打開(kāi)文件進(jìn)行寫(xiě)操作并保存Print#1,"K+";li;"左邊樁",Left(xil,10),Left(yil,10)Print#1,"K+";li;"中

樁",Left(Xi,10),Left(Yi,10)

'保存為T(mén)XT格式文檔Print#1,"K+";li;"右邊樁",Left(xir,10),Left(yir,10)Print#1,Close#1Open"C:\DocumentsandSettings\Administrator\桌面\道路放樣\計(jì)算結(jié)果\直線.dat"ForAppendAs#1Print#1,,"K+"&li;",,";Left(xil,10);",";Left(yil,10);",";0Print#1,,"K+"&li;",,";Left(Yi,10);",";Left(Xi,10);",";0

'保存DAT格式文檔Print#1,,"K+"&li;",,";Left(xir,10);",";Left(yir,10);",";0Print#1,Close#1“K+”表示樁號(hào),li表示里程,xi,yi,xil,yil,xir,yir分別表示計(jì)算點(diǎn)的中邊樁坐標(biāo)。Left()表示取計(jì)算成果的錢(qián)10位有效數(shù)字。在編寫(xiě)程序的時(shí)候,成果保存的關(guān)鍵詞有Append,Output等,在第一次保存時(shí)用Output,目的是清除以前的舊項(xiàng)目數(shù)據(jù);在同一段曲線以后計(jì)算保存中用Append,目的是在前面基礎(chǔ)上繼續(xù)添加數(shù)據(jù),使原來(lái)的數(shù)據(jù)不被替代。Open"C:\DocumentsandSettings\Administrator\桌面\道路放樣\計(jì)算結(jié)果\第一緩和曲線.txt"ForInputAs#1DoWhileNotEOF(1)

'文本框顯示計(jì)算的數(shù)據(jù)LineInput#1,inputdataText5.Text=Text5.Text+inputdata+vbCrLfLoopClose#15.3.5引用CAD成圖的方法將計(jì)算結(jié)果輸入到【成圖數(shù)據(jù)】文件中,采用【X,Y,Z】的格式一行一行的存儲(chǔ)在TXT文本文檔中,此時(shí)Z為0。首先引用“AutoCAD2000ObjectLibrary”,然后輸入以下語(yǔ)句:DimappcadAsObject

'建立Application對(duì)象DimacadDocAsObject

'建立Document對(duì)象DimmospaceAsObject

'建立ModelSpace對(duì)象Setappcad=CreateObject("autocad.application")IfErrThen

Err.Clear

'調(diào)用CAD

OnErrorResumeNext

'容錯(cuò)

Setappcad=CreateObject("autocad.application")

IfErrThen

Err.Clear

MsgBox"不能運(yùn)行AutoCAD,請(qǐng)檢查是否安裝!",vbOKCancel,"警告!"

ExitSub

EndIfEndIfappcad.Visible=True

'CAD顯示SetacadDoc=appcad.ActiveDocumentSetmospace=acadDoc.ModelSpaceDimstp(0To2)AsDoubleDimetp(0To2)AsDoubleDimfnameAsStringfname="C:\DocumentsandSettings\Administrator\桌面\道路放樣\成圖數(shù)據(jù)\直線中.txt"

'CAD成圖OpenfnameForInputAs#1

'打開(kāi)數(shù)據(jù)文件Input#1,stp(0),stp(1),stp(2)DoWhileNotEOF(1)Input#1,etp(0),etp(1),etp(2)Callmospace.AddLine(stp,etp)stp(0)=etp(0)stp(1)=etp(1)stp(2)=etp(2)LoopClose#15.3.6計(jì)算的數(shù)據(jù)輸出到全站儀的格式問(wèn)題軟件結(jié)合公路放樣的實(shí)例編制,根據(jù)實(shí)際工作需要,采用手工輸入。程序輸出采用TXT文擋和DAT文檔。TXT文檔便于進(jìn)行打印查詢(xún)及檢查。DAT文檔易于將數(shù)據(jù)傳輸?shù)饺緝x直接進(jìn)行方放樣工作。除此以外,DAT格式的文檔還可直接導(dǎo)入到AUTOCAD中進(jìn)行道路的成圖,完成各種動(dòng)態(tài)報(bào)表的繪制與輸出。經(jīng)過(guò)學(xué)習(xí)經(jīng)驗(yàn)和對(duì)儀器的考察,DAT文件的格式在本程序采用“點(diǎn)名,編碼,Y,X,Z”的格式輸出。>反算->正算后,Y坐標(biāo)與原來(lái)的差了0.5-0.7mm,不知道怎么回事,這兩年工作忙也沒(méi)有時(shí)間再深究,但是這樣的計(jì)算精度做控制足夠了,如果樓主或是者是哪位同仁見(jiàn)此貼能順便把這個(gè)問(wèn)題解決了,咱們就一起進(jìn)步了!代碼如下:'高斯坐標(biāo)正算PrivateSubDadiZs()DimtAsDouble,ItpAsDouble,X0AsDouble,NAsDouble,L0AsDoubleDimVAsDouble,llAsDouble,WAsDouble,MAsDoubleLat=Radian(Lat)Lon=Radian(Lon)L0=Radian(Lo)IfTq=0Thena=6378245'54橢球參數(shù)b=6356863.01877305ep=0.006693421622966ep1=0.006738525414683f=(a-b)/ac=a^2/bd=b^2/aX0=111134.8611*(Lat*180#/Pi)-(32005.7799*Sin(Lat)+133.9238*(Sin(Lat))^3+0.6973*(Sin(Lat))^5+0.0039*(Sin(Lat))^7)*Cos(Lat)'X0=111134.8611*(Lat*180#/Pi)-(32005.7798*Sin(Lat)+133.9238*(Sin(Lat))^3+0.6972*(Sin(Lat))^5+0.0039*(Sin(Lat))^7)*Cos(Lat)Elsea=6378140'75橢球參數(shù)b=6356755.28815753ep=0.006694384999588ep1=0.006739501819473f=(a-b)/ac=a^2/bd=b^2/aX0=111133.0047*(Lat*180/Pi)-(32009.8575*Sin(Lat)+133.9602*(Sin(Lat))^3+0.6976*(Sin(Lat))^5+0.0039*(Sin(Lat))^7)*Cos(Lat)EndIfll=Lon-L0t=Tan(Lat)Itp=ep1*Cos(Lat)^2W=Sqr(1-ep*Sin(Lat)^2)V=Sqr(1+ep1*Cos(Lat)^2)M=c/V^3N=a/W'x=X0+N*t*(Cos(Lat))^2*ll^2/2+N*t*(5-t*t+9*Itp+4*Itp*Itp)*(Cos(Lat))^4*ll^4/24+N*t*(61-58*t^2+t^4+270*Itp-330*t^2*Itp)*(Cos(Lat))^6*ll^6/720+N*t*(1385-3111*t^2+543*t^4-t^6)*Cos(Lat)^8*ll^8/40320x=X0+N*t*(Cos(Lat))^2*ll^2/2+N*t*(5-t*t+9*Itp^2+4*Itp^4)*(Cos(Lat))^4*ll^4/24+N*t*(61-58*t^2+t^4+270*Itp^2-330*t^2*Itp^2)*(Cos(Lat))^6*ll^6/720+N*t*(1385-3111*t^2+543*t^4-t^6)*Cos(Lat)^8*ll^8/40320y=N*Cos(Lat)*ll+N*(1-t*t+Itp)*(Cos(Lat))^3*ll^3/6+N*(5-18*t*t+t^4+14*Itp-58*Itp*t*t)*(Cos(Lat))^5*ll^5/120+N*(61-479*t^2+179*t^4-t^6)*Cos(Lat)^7*ll^7/5040r=Sin(Lat)*ll+Sin(Lat)*(Cos(Lat))^2*ll^3*(1+3*Itp+2*Itp^2)/3+Sin(Lat)*(Cos(Lat))^4*ll^5*(2-t*t)/15r=Degree(r)y=y+500000#EndSub'高斯反算PrivateSubDadiFs()DimtAsDouble,ItpAsDouble,X0AsDouble,BfAsDouble,NAsDoubleDimvAsDouble,llAsDouble,WAsDouble,MAsDouble,L0AsDoubleL0=Radian(Lo)X0=x*0.000001y=y-500000#IfTq=0Thena=6378245'54橢球參數(shù)b=6356863.01877305ep=0.006693421622966ep1=0.006738525414683f=(a-b)/ac=a^2/bd=b^2/aIfX0<3ThenBf=9.04353301294*X0-0.00000049604*X0^2-0.00075310733*X0^3-0.00000084307*X0^4-0.00000426055*X0^5-0.00000010148*X0^6ElseIfX0<6ThenBf=27.11115372595+9.02468257083*(X0-3)-0.00579740442*(X0-3)^2-0.00043532572*(X0-3)^3+0.00004857285*(X0-3)^4+0.00000215727*(X0-3)^5-0.00000019399*(X0-3)^6EndIfElsea=6378140'75橢球參數(shù)b=6356755.28815753ep=0.006694384999588ep1=0.006739501819473f=(a-b)/ac=a^2/bd=b^2/aIfX0<3ThenBf=9.04369066313*X0-0.00000049618*X0^2-0.00075325505*X0^3-0.0000008433*X0^4-0.00000426157*X0^5-0.0000001015*X0^6ElseIfX0<6ThenBf=27.11162289465+9.02483657729*(X0-3)-0.00579850656*(X0-3)^2-0.00043540029*(X0-3)^3+0.00004858357*(X0-3)^4+0.00000215769*(X0-3)^5-0.00000019404*(X0-3)^6EndIfEndIfBf=Bf*Pi/180#t=Tan(Bf)Itp=ep1*Cos(Bf)^2W=Sqr(1-ep*Sin(Bf)^2)v=Sqr(1+ep1*Cos(Bf)^2)M=c/v^3N=a/WLat=Bf-0.5*v^2*t*((y/N)^2-(5+3*t*t+Itp-9*Itp*t*t)*(y/N)^4/12+(61+90*t*t+45*t^4)*(y/N)^6/360)ll=((y/N)-(1+2*t*t+Itp)*(y/N)^3/6+(5+28*t*t+24*t^4+6*Itp+8*Itp*t*t)*(y/N)^5/120)/Cos(Bf)r=y*t/N-y^3*t*(1+t*t-Itp)/(3*N^3)+y^5*t*(2+5*t*t+3*t^4)/(15*N^5)Lat=Degree(Lat)Lon=Degree(L0+ll)r=Degree(r)EndSub有了正反算,換帶也就完成了!用到的子程序:PublicConstPi=3.141592653589

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論