VB测量坐标正反算程序代码
>反算->正算后,Y坐标与原来的差了0.5-0.7mm,不知道怎么回事,这两年工作忙也没有时间再深究,但是这样的计算精度做控制足够了,如果楼主或是者是哪位同仁见此贴能顺便把这个问题解决了,咱们就一起进步了!代码如下:'高斯坐标正算Private Sub DadiZs()Dim t As Double, Itp As Double, X0 As Double, N As Double, L0 As DoubleDim V As Double, ll As Double, W As Double, M As DoubleLat = Radian(Lat)Lon = Radian(Lon)L0 = Radian(Lo)If Tq = 0 Then a = 6378245 '54椭球参数 b = 6356863.01877305 ep = 0.006693421622966 ep1 = 0.006738525414683 f = (a - b) / a c = a ^ 2 / b d = b ^ 2 / a X0 = 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)Else a = 6378140 '75椭球参数 b = 6356755.28815753 ep = 0.006694384999588 ep1 = 0.006739501819473 f = (a - b) / a c = a ^ 2 / b d = b ^ 2 / a X0 = 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)End Ifll = 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#End Sub'高斯反算Private Sub DadiFs()Dim t As Double, Itp As Double, X0 As Double, Bf As Double, N As DoubleDim v As Double, ll As Double, W As Double, M As Double, L0 As DoubleL0 = Radian(Lo)X0 = x * 0.000001y = y - 500000#If Tq = 0 Then a = 6378245 '54椭球参数 b = 6356863.01877305 ep = 0.006693421622966 ep1 = 0.006738525414683 f = (a - b) / a c = a ^ 2 / b d = b ^ 2 / a If X0 Bf = 9.04353301294 * X0 - 0.00000049604 * X0 ^ 2 - 0.00075310733 * X0 ^ 3 - 0.00000084307 * X0 ^ 4 - 0.00000426055 * X0 ^ 5 - 0.00000010148 * X0 ^ 6 ElseIf X0 Bf = 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) ^ 6 End IfElse a = 6378140 '75椭球参数 b = 6356755.28815753 ep = 0.006694384999588 ep1 = 0.006739501819473 f = (a - b) / a c = a ^ 2 / b d = b ^ 2 / a If X0 Bf = 9.04369066313 * X0 - 0.00000049618 * X0 ^ 2 - 0.00075325505 * X0 ^ 3 - 0.0000008433 * X0 ^ 4 - 0.00000426157 * X0 ^ 5 - 0.0000001015 * X0 ^ 6 ElseIf X0 Bf = 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) ^ 6 End IfEnd IfBf = 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)End Sub有了正反算,换带也就完成了!用到的子程序:Public Const Pi = 3.14159265358979, p = 206264.806Public Cktq As String'角度化弧度Public Function Radian(a As Double) As Double Dim Ro As Double Dim c As Double Dim Fs As Double Dim Ib As Integer Dim Ic As Integer If a Ro = Pi / 180# Ib = Int(a) c = (a - Ib) * 100# Ic = Int(c + 0.000000000001) Fs = (c - Ic) * 100# If t = 1 Then Radian = -(Ib + Ic / 60# + Fs / 3600#) * Ro Else Radian = (Ib + Ic / 60# + Fs / 3600#) * RoEnd Function'弧度化角度Public Function Degree(a As Double) As Doub...
大地测量计算课程设计 高斯投影坐标正反算,c#程序源代码。
以及不...
展开全部 1.主程序1:一般放样反算程序(①正算坐标、放样点至置仪点方位角及距离;②反算桩号及距中距离)程序名:1ZD-XYLb1 0:Norm 2F=1:(正反算判别,F=1正算,F=2反算,也可以改F前加?,改F为变量)Z[1]=90(与路线右边夹角)Prog"THB":F=1=>Goto 1:F=2=>Goto 2Lb1 1:Fix 3:" X=":Locate 6,4,X◢" Y=":Locate 6,4,Y◢Prog"3JS”:Goto 0:Lb1 2:Fix 3:" KM=":Locate 6,4,Z◢" D=":Locate 6,4,D◢Goto 02.主程序2:高程序横坡程序(设计任意点高程及横坡)程序名:2GCLbI 0:Norm 2“KM”?Z:?D:Prog”H”:Fix 3:” H=”:Locate 6,4,H◢“ I=”: Locate 6,4,I◢Goto 03.主程序3:极坐放样计算程序(计算放样点至置仪点方位角及距离)程序名:3JSX:Y:1268.123→K(置仪点X坐标)2243.545→L(置仪点Y坐标,都是手工输入,也可以建导线点数据库子程序,个人认为太麻烦)Y-L→E:X-K→F:Pol(F,E):IF JA:Then Goto 1:Else If G>Z[10]:Then Goto 2:Else Goto 3:IfEnd:LbI 1:L+Z[12]+Z[13]+Z[14]+(G-A)*Z[9]+Z[11]*Z[8]+Z[10]*Z[7]:Goto Z:LbI 2:L+Z[12]+Z[13]+(G-Z[10])*Z[8]+Z[10]*Z[7]:Goto Z:LbI 3:L+Z[12]+G*Z[7]:Goto z:LbI T:L+0.5→N:If G>Z[17]:Then (N+Z[18]+(G-Z[17])*Z[16]+Z[17]*Z[15])→S:Goto Z:Else (N+G*Z[15])→S:Goto z:LbI Z:Z[3]→D:Fix 2:Abs(D)-S→T:” L0=”:L Locate 6,4,T◢" KM=":Locate 6,4,Z◢" D=":Locate 6,4,D◢“ TW=”: Locate 6,4,Z[5]◢Goto 06.主程序6:路基标准半幅宽度计算程序(对于设计有加宽渐变的有用,如路基宽度无变化,则把此程序直接输入半幅宽度值至L)程序名:6GDProg “G0”Z-C→E:(B-A)*E/S+A→L:L:7.坐标计算次程序(THB)程序名:THB18→DimZ:"KM"?Z:Prog "X0"1÷P→C: (P-R)÷(2HPR) →S: 180÷π→E:F=1=>Goto 1:F=2=>Goto 2←┘Lbl 1:?D: Abs(Z-O) →W:Prog "A":X:Y:Goto 3LbI 2:X:Y:X→I:Y→J:Prog "B":O+W→Z:D→D:Goto 3LbI 3:IF F=1Then X:Y:Else Z:D 8. 正算子程序(A)程序名:A0.1184634425→A: 0.2393143352→B:0.2844444444→N 0.046910077→K: 0.2307653449→L:0.5→M: U+W(Acos(G+QEKW(C+KWS))+Bcos(G+QELW(C+LWS))+Ncos(G+QEMW(C+MWS))+Bcos(G+QE(1-L)W(C+(1-L)WS))+Acos(G+QE(1-K)W(C+(1-K)WS))) →X:V+W(Asin(G+QEKW(C+KWS))+Bsin(G+QELW(C+LWS))+Nsin(G+QEMW(C+MWS))+Bsin(G+QE(1-L)W(C+(1-L)WS))+Asin(G+QE(1-K)W(C+(1-K)WS))) →Y:G+QEW(C+WS)+Z[1]→Z[2]:X+Dcos(Z[2])→X: Y+Dsin(Z[2])→Y9. 反算子程序(B)程序名:BG-90→T: Abs((Y-V)cos(T)-(X-U)sin(T)) →W: 0→D:Lbl 0:Prog "A": T+QEW(C+WS) →L: (J-Y)cos(L)-(I-X)sin(L)→D:IF Abs(D) Goto 0:W=2=>Goto 1:LbI 0:If L=0:Then Abs(D)*M→V:Goto 2:Else Abs(D)*((N-M)*(Z-C)÷L+M)→V:Goto 2:IfEnd:LbI 1:If L=0:Then Abs(D)*M→V:Goto 2:Else Abs(D)*(((3((Z-C)÷L)2-2((Z-C)÷L)∧(3))*(N-M))+M)→V:Goto 2:IfEnd:LbI 2:Abs(D)→E:V÷E→I:I(E-K)→V:12.数据子程序(附后示例)①程序名:X0(坐标计算要素程序)If Z≥25900 A...
求Excel 表格 坐标正反算程序(自动推算方位角)
展开全部 正算子程序(ZS)(不运行)1÷P→C:(P-R)÷(2HPR) →D: 180÷π→E←┚0.1739274226→A: 0.3260725774→B: 0.0694318442→K: 0.3300094782→L: 1-L→F: 1-K→M:U+W(Acos(G+QEKW(C+KWD))+Bcos(G+QELW(C+LWD))+Bcos(G+QEFW(C+FWD))+Acos(G+QEMW(C+MWD)))→X: V+W(Asin(G+QEKW(C+KWD))+Bsin(G+QELW(C+LWD))+Bsin(G+QEFW(C+FWD))+Asin(G+QEMW(C+MWD)))→Y: G+QEW(C+WD)+90→F: X+ZcosF→X: Y+ZsinF→Y3反算子程序(FS)(不运行)G-90→T: Abs((Y-V))cos(T)-(X-U)sin(T)→W: 0→Z←┚Lbl 0←┚prog"ZS":T+QEW(C+WD)→L:(J-Y)cosL-(I-X)sinL→Z:If Abs(Z)Lbl 1: 0→Z:Prog"ZS":(J-Y)÷sinF→ZZX-WN(运行主程序,该程序适用于匝道,对全段完整非对称曲线计算太过麻烦)"CZX"?S(仪站X坐标):"CZY"?W(仪站Y坐标)LbI 0: "K"?K: If K≤126.9(第1条单一曲线的终点下面同上): Then Goto A:Else If K≤176.9 And K>126.9: Then Goto B:Else If K≤259.562 And K>176.9: Then Goto C:Else If K≤309.562 And K>259.562: Then Goto D: IfEnd:IfEnd:IfEnd:IfEnd←┚LbI A:92094.336(起点X坐标)→U:8287.962(起点Y坐标)→V:0起点桩号→O:145°11'54"(方位角)→G:126.9(曲线长度)→H:10^(45) (起点半径)→P:10^(45) (止点半径)→R:+1(路线左右偏,左负右正,直线输0)→Q:Prog "WN":Goto WLbI B:91990.134→U:8360.388→V:126.9→O:145°11'54"→G:50→H:10^(45) →P:150 →R:+1→Q:Prog "WN":Goto WLbI C:91947.609→U:8386.570→V:176.9→O:154°44'51"→G:82.662→H:150 →P:150 →R:+1→Q:Prog "WN":Goto WLbI D:91867.101→U:8399.992→V:259.562→O:186°19'19"→G:50→H:150 →P: 10^(45) →R:+1→Q:Prog "WN":Goto WLbI W:"PJ1"?T←┚(该项是只左右边桩再左右偏距,输0为不再左右偏,可以直接出方位角、距离,适用于桥梁桥台、盖梁、涵洞八字墙等放样,以路线前进方向,前-,后+)If T=0:Then Z[3]→Z: Z[4]→M: Goto P: Else Goto V: IfEnd←┚LbI V:"JJ1"? O←┚(左右边桩再偏夹角,用180°减去路线夹角)"X1=": Z[3]+Tcos(F+N+ O)→U◢"Y1=" :Z[4]+Tsin(F+N+ O)→V◢U→Z: V→M: GotoP←┚LbI P:Pol(Z-S,M-W): If J≤0:Then J+360°→J: IfEnd←┚"JL=":I◢(仪站至测点的距离)"FWJ=":J DMS◢(仪站至测点的方位角)Goto0备注:1. 规定以道路中线前进方向(即里程增大的方向)区分左右;当线元往左偏时Q=-1;当元线往右偏时,Q=1:当元线为直线时,Q=0。
2. 当线元为直线时,其起点、止点的曲率半径为无穷大,以10的45次方代替。
3. 当线元为圆曲线时,无论其起点、止点与什么线元相接,其曲率半径均等于
正在放样时能点测量功能键测量吗??
完全可以,就拿拓普康来说,放样之前肯定是正常定向后视,后视完毕直接进行放样!这时如果你要测量,退出放样,进入点测量,直接按F4就OK了!你测量完之后,如果再想放样,再退出;点放样即可!放样之前一定要先后视完毕才可放样,要不根本放不出来!呵呵其他仪器都是大同小异,就橡南方的宾得,那的放样功能经个人感觉就比较人性化!如果还有这方面的问题可以问我,我的QQ:215719560;多多交流!
MFC编写计算器具体步骤 方法 代码,拜托高手急用!
展开全部 下面是我以前看过的一个程序,现在提供出来供你参考:建议自己动手将下面的代码组织运行一遍,你会受益的!祝你好运!简易计算器(MFC)1.设计目标了解Windows应用程序的结构与DOS程序的不同,掌握应用MFC类库编写Windows应用程序的基本模式。
2.设计内容以简易计算器为例,通过对简单应用软件计算器的设计,编制、调试,实现简单的加,减,乘,除等运算,以学习应用MFC库类编写对话框的原理,加深对C++类的学习及应用。
3. 设计思想基于MFC库类对对话框界面的设计,通过创建类成员函数成员变量,编辑控件创建消息映射,调用消息函数完成数据的输入输出,实现计算功能。
生成简单的应用软件。
4. 设计说明(1)包含的功能有:加、减、乘、除运算,开方、平方等功能。
(2)计算器上数字0—9为一个控件数组,加、减、乘、除为一个控件数组,其余为单一的控件。
(3)输入的原始数据、运算中间数据和结果都显示在窗口顶部的同一个标签中。
(4)计算功能基本上是用系统内部函数。
(5)程序可以能自动判断输入数据的正确性,保证不出现多于一个小数点、以0开头等不正常现象。
(6)“CE”按钮可以清除所有已输入的数据从头计算5. 设计步骤(1)选择FileNewlProject命令,选择MFC AppWizard(exe)创建Project名为Caa,按确定。
在弹出界面选择创建对话框,单击Finish按钮(2)在生成的设计界面中加入控件,得到计算器应用界面。
如图:(3)为控件编辑框编辑ID,如图:按钮名称 ID 用途0 IDC_0 按键01 IDC_1 按键12 IDC_2 按键23 IDC_3 按键34 IDC_4 按键45 IDC_5 按键56 IDC_6 按键67 IDC_7 按键78 IDC_8 按键89 IDC_9 按键9. IDC_dian 按键 .+/- IDC_zhengfu 正负+ IDC_jia 加- IDC_jian 减* IDC_cheng 乘/ IDC_chu 除CE IDC_qinglin 清零sqrt IDC_sqrt 开方x*x IDC_pingfang 平方= IDC_dengyu 等于编辑框 IDC_E1 显示数据输入输出(4)进入ClassWizard界面选择Message Maps为控件插入消息映射,插入消息函数,实现控件命令功能。
如图: (5) 进入ClassWizard界面Message Varibles为编辑框添加成员变量m_result用以显示结果。
如图:(6)在CaaDlg.h中加入在主要成员函数和成员变量的申明在CaaDlg.cpp中加入主要成员函数实现过程和成员变量的初始化(代码片段将于后面介绍)。
6. 主要成员函数关系图7. 程序主要代码//在头文件中手动添加成员函数与变量声明// caaDlg.h : header file//定义两个euum型结构enum Operator { OpNone, OpAdd, OpSubtract, OpMultiply, OpDivide };enum CalcError { ErrNone, ErrDivideByZero }; float m_operand; //存储当前输入的操作数 float m_accum; //存储当前的计算处理结束 BOOL m_bCoff; //标识当前输入是否是小数 float m_coff; //小数输入时的系数 Operator m_operator; //enum型变量用以标识当前运算符 CalcError m_errorState; //enum型变量用以标识当前运算状态 BOOL m_bOperandAvail; //标识当前输入是否是新输入数字 void UpdateDisplay(); //处理显示 void Calculate(); //处理计算 void OnOperandInput(int a); //处理数字输入//在执行文件中添加成员函数实现部分与变量初始// caaDlg.cpp : implementation file //以下是对声明变量进行初始CCaaDlg::CCaaDlg(CWnd* pParent /*=NULL*/) : CDialog(CCaaDlg::IDD, pParent){ //{{AFX_DATA_INIT(CCaaDlg) m_result = _T(""); //默认为m_result变量初始 //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); m_coff=0.1; //为变量进行初始 m_bCoff=0; //为变量进行初始 m_errorState = ErrNone; //为变量进行初始 m_bOperandAvail=FALSE; //为变量进行初始 m_operator=OpNone; //为变量进行初始}//以下是消息处理函数,用以响应消息映射void CCaaDlg::On0() //处理“ 0”按钮{ // TODO: Add your control notification handler code here OnOperandInput(0);}void CCaaDlg::On1() //处理“ 1”按钮{ // TODO: Add your control notification handler code here OnOperandInput(1);}void CCaaDlg::On2() //处理“ 2”按钮{ // TODO: Add your control notification handler code here OnOperandInput(2);}void CCaaDlg::On3() //处理“ 3”按钮{ // TODO: Add your control notification handler code here OnOperandInput(3);}void CCaaDlg::On4() //处理“ 4”按钮{ // TODO: Add your control notification handler code here OnOperandInput(4);}void CCaaDlg::On5() //处理“ 5”按钮{ // TODO: Add your control notification handler code here OnOperandInput(5);}void CCaaDlg::On6() //处理“ 6”按钮{ // TODO: Add your control notification handler code here OnOperandInput(6);}void CCaaDlg::On7() //处理“ 7”按钮{ // TODO: Add your control notification handler code here OnOperandInput(7);}void CCaaDlg::On8() //处理“ 8”按钮{ // TODO: Add your control notification handler code here OnO...
转载请注明出处51数据库 » 测量正反算编程代码及软件操作截图