《坐标方位角及距离计算小程序》代码——Access实现
卡西欧5800多功能实用坐标正反算小程序(附后方交会程序)

Goto0:
Lbl3:Cls:”X1=”?A:”Y1=”?B:?F: ”X2=”?X:”Y2=”?Y:
(X-A)cos(F)+(Y-B)sin(F)→I:
(Y-B)cos(F)-(X-A)sin(F)→Z:
Cls:“L=”: “Z=”:Locate4,1,I:Locate 4,2,Z◢
Goto0
注:程序中的“=>”是一个双箭号, 按FUNCTION选3下翻两页选3 即可输入。方Biblioteka 角L距离Z
偏距
R
斜交偏距的转角(顺时针为正数,正交输入0)
2程序名:HFJH(距离后方交会)
LBI 1 :〝XA〞?A :〝YA〞?B :〝XB〞?C :〝YB〞?D :〝D1〞?E :〝D2〞?F :?Q : 0→J : POL(C-A , D-B)→G : J+Q Cos-1((GG+EE-FF)÷(2GE))→H :〝XP=〞: A+E Cos(H)→X▲〝YP=〞: B+E Sin(H)→Y▲Goto1
显示及操作说明:
显示
功能
1.XY→LF
2.LF→XY
3.XYF→LZ
1.输入两点坐标计算距离与方位角
2.输入起点坐标及方位角、距离、偏距、偏距的转角
3.输入起点坐标及方位角,输入实测坐标,计算实测点与起点的垂直距离和垂直偏距
显示
输入及显示说明
X1、Y1
第一点(起点)坐标
X2、Y2
坐标正反算程序计算器

一、Lbl 3:"1→ZS,2→FS"?QQ=1=>Goto 1:Q=2=>Goto 2Lbl 1:"CE:X"?M:"CE:Y"?F:"JL"?L:"FWJ"?A:Rec(L,A):M+I→C:F+J→DCls"X=":Locate 3,1,C:"Y=":Locate 3,2,D◢Goto 3Lbl 2::"CE:X"?G:"CE:Y"?H:"(HOU)FY:X"?N:"(HOU)FY:Y"?EPol(N-G,E-H)If J<0:Then J+360→Y:Else J→Y:IfEndCls"FY JL=":Locate 10,1,I:"FY FWJ=":Y◆DMS◢Goto 3进入程序运行如下:1→ZS,2→FS? 输入1为正算,2为反算.以输入1为例:CE:X? 测站点X(5796.717)CE:Y? 测站点Y(5212.569)JL? 仪器测得的距离(321.889)FWJ? 仪器测得的方位角(193-41-07)得到:X=5483.966Y=5136.414再按EXE,输2为例:CE:X? 测站点X(5796.717)CE:Y? 测站点Y(5212.569)(HOU)FY:X? 后视或放样的X(5483.966)(HOU)FY:Y? 后视或放样的Y(5136.414)得到:FY JL=321.889FY FWJ=193-41-6.79二、Deg : Fix 3 : “XZ→0:YZ→1”?A : If A = 1: Then Goto 1 : IfEnd ↙If A = 0 : Then “BS→0:XY→1:AND→2:DK→3:L(I)→4 ”?O : IfEnd ↙If O = 4: Then Goto 1 : IfEnd ↙If O = 3: Then Prog “F.2 ”: If X= 0 : Then Goto 1 : IfEnd : IfEnd ↙If O≠1: Then “X1 ”?X : “Y1”?Y : X→Z[11]: Y→Z[12]: “X2 ”?P : “Y2”?Q : Pol( P-X , Q-Y) : If J﹤0 : Then J + 360→J : IfEnd : Cls : “S12= ”: Locate 6 ,1, I : “B12= ”: J ►DMS◣1→B : IfEnd ↙If O = 1: Then “XY(0) →0: ≠﹥1”? B: IfEnd ↙Lbl 1 : If A = 1 And O = 3 :Then Prog “F.2 ”: IfEnd : Prog “Q.1 ”子程序PPQX (给定综合曲线属性)“ZQX →0: *** →1: *** →2 ******* ”?C ↙If C=0: Then 100→Z[98]: n0 →Z[99]: IfEnd ↙If C=1: Then m1→Z[98]: n1 →Z[99]: IfEnd ↙If C=2: Then m2→Z[98]: n2 →Z[99]: IfEnd ↙*******Prog “PQX ”其中: mi为第i条综合曲线矩阵变量起始单元,(第1条综合曲线矩阵变量起始单元应自100开始,以便其他程序临时使用100以前的矩阵变量,综合曲线中每一基本单元需8个矩阵存储单元);ni为第i条综合曲线中基本单元数,每增加一个条综合曲线则增加一行If C=*******→Z[99]: IfEnd↙语句。
坐标方位角EXCEL计算公式

坐标方位角EXCEL计算公式
一:坐标形式:
坐标点的坐标形式有两种,分别为空间坐标(XYZ)和地面坐标(XY)。
空间坐标(XYZ),即X、Y和Z三个方向上的坐标值,其中X为从原点到当前点之间的直线距离,Y和Z分别为X的垂直方向距离,常用来表示空间点的位置。
地面坐标(XY),即基准平面上的X和Y的坐标值,X和Y分别为基准平面的两个方向的距离,常用来表示地面上的位置。
二、坐标方位角的计算:
Azimuth=ArcTan[(X2-X1)/(Y2-Y1)]
其中,ArcTan为反正切函数,ArcTan[(X2-X1)/(Y2-Y1)]是从点
(X1,Y1)指向点(X2,Y2)的正切值。
计算公式在excel中的表达式为:
=ATAN2(Y2-Y1,X2-X1)
计算结果即为两点之间的坐标方位角。
三、两点之间的真空方位角:
真空方位角(Geodetic Azimuth),也就是从一个点指向另一点的“直线”方位角,是指一点与另一点之间的空间方向的夹角,可以用两个点的经纬度坐标来表示,可以用如下公式计算:
Geodetic Azimuth=ArcTan[(cosφ2cosΔλ)/(sinφ2-sinφ1)]其中,ArcTan为反正切函数。
坐标正算、反算计算方法及在Excel中的VBA编程

坐标正算、反算计算方法及在Excel 中的VBA 编程测量中经常需要将某点相对坐标系坐标转换成线路的里程、偏距,或根据线路某一里程偏距计算出对应的相对坐标系坐标,为寻求一种快速简单高效的计算方法,本文对线路正算反算的原理进行了阐述,并结合Excel VBA 编程,将编程和Excel 的拖拽的功能相结合,编制出实用计算表,特别适用于需要大量计算边桩、围护桩的情况。
关键词:坐标方位角坐标正算坐标反算 V AB 编程循环迭代直接算法一、坐标方位角的反算1.坐标方位角反算如图1所示,已知点A 、B 的坐标,求直线AB坐标方位角α。
图1坐标方位角反算直线AB 之间的坐标增量:AB B AAB B Ax x x y y y ∆=−∆=−当0,0AB AB x y ∆>∆>时,角α位于第一象限角:arctan ABABy x α∆=∆当0,0AB AB x y ∆<∆>时,角α位于第二象限角:arctan 180AB ABy x α∆=+°∆当0,0AB AB x y ∆<∆<时,角α位于第三象限角:arctan 180AB ABy x α∆=+°∆当0,0AB AB x y ∆>∆<时,角α位于第二象限角:arctan360AB AB y x α∆=+°∆2.坐标方位角反算的VBA 编程可用VBA 将上述过程定义为一个名为angel()的函数,代码如下:Function angel(x0As Double, y0 As Double, x1 As Double, y1 As Double) As Double dx = x1- x0dy = y1- y0If dx > 0 And dy > 0 Thenangel = Atn(dy / dx)End IfIf dx < 0 And dy > 0 Thenangel = Atn(dy / dx) + 3.14159265358979End IfIf dx < 0 And dy < 0 Thenangel = Atn(dy / dx) + 3.14159265358979End IfIf dx > 0 And dy < 0 Thenangel = Atn(dy / dx) + 3.14159265358979 * 2End IfEnd Function二、直线段坐标正算与反算1.直线段正算图2直线段计算已知HZ 点坐标(x1,y1)、里程N HZ ,ZH 点坐标(x2,y2),正算时已知P 点对应的中桩里程Np 和偏距e (规定沿着线路前进方向,左边偏距为负,右边偏距为正),Np>N HZ ,求P 点对应的坐标。
4500p计算器计算坐标和方位角及距离-适合两缓等长和不等长程序

求任意点坐标和从仪器至该点方位角、距离程序1QXL1 K“L1”U“L2”RN“FWJ”P“PJ”F“XJ”I“YJ”Z“ZH”L2 L=24R:Y=AbsPL3 T“T1”=(R+U2/L-(R+K2/L)cosY)/sinY+K/2-K3/(10RL)L4 A“T2”=(R+K2/L-(R+U2/L)cosY)/sinY+U/2-U3/(10RL)L5 Y“HZ”=Z +лRY/180+(K+U)/2◢L6 LbI 0:{X}L7 X“CDL”L8 L=Abs(X-Z)+10-9L9 X≤Z=〉D=X-T-Z: Q=N:Goto1:≠〉X≤Z+K=〉Goto2:≠〉X≤Y-U=〉Goto3:≠〉L=Abs(X-Y)+10-9: X≤Y =〉Goto4:≠〉D=A+L:Q=N+P:Goto2⊿⊿⊿⊿L10 LbI 1L11 C“X2”=F+DcosN◢E“Y2”=I+DsinN◢:prog3f: Goto5L12 LbI 2L13 prog 5fL14 W=JL15 prog 2f: Goto5L16 LbI 3L17 J=90(2L-K)/(Rπ)L18 S=RsinJ+0.5K-K3/(240R2)L19 M=R(1-cosJ)+K2/(24R)L20 O=√(S2+M2)L21 J=tg-1(M/S)L22 W=30K/(Rπ)+60(L-K)/(Rπ)L23 prog2f: Goto5L24 LbI 4L25 K=UL26 prog 5fL27 V=O:D=√(T2+A2+2TAcosAbsP)L28 O=√(V2+D2-2VDcos(sin-1(TsinAbsP/D)-J))L29 J=sin-1(AsinAbsP/D)- sin-1(Vsin(sin-1(TsinAbsP/D)-J)/O)L30 W=(AbsP-3tg-1(M/S))/3L31 prog 2f : Goto5L32 LbI 5:{W}L33 W“HD”=0=> {k}:Goto0:≠>prog6F△L34 Goto52fL1 P>0=>J=N+J:Q=N+3W:≠>J=N-J:Q=N-3W△L2 C“X2”=F-TcosN+ O cosJ◢E“Y2”=I-TsinN+ O sinJ◢L3 prog 3f3fL1 C“X2”E“Y2”G“X1”H“Y1”L2 M=E-HL2 S=C-GL3 prog 4f4fL1 J=tg-1(M/(S+10-9))L2 S<0=>V“f”=J+180◢≠>M>0=>V“f”=J◢≠>V“f”=J+360◢△△L3 V“C”=√(S2+M2)◢5fL1 S=L-L5/(40R2K2)+10-9L2 M=L3/(6RK)-L7/(336(RK)3)L3 O =√(S2+M2)L4 J=tg-1(M/S)6FL1 W>0=>L=Q+B“QYJ”:≠>L=Q+B+180△L2 V“X3”=C+AbsWcosL◢:O“Y3”=E+AbsWsinL◢L3 M=O-H:S=V-GL4 prog 4f9ZXL1 QF“X0”I“Y0”G“X1”H“Y1”L2 LbI 8: {U}L3 U“L”≥0=〉L=Q: ≠〉L=Q+180△L4 C“X2”=F+AbsUcosL▲E“Y2”=I+AbsUsinL▲prog3fL5 LbI 9: {W}L6 W“HD”=0=>Goto8:≠>prog6 F△L7 Goto9程序执行:开机——FILE——EXE此时屏幕出现L1? 输入左侧第一条缓和曲线长度后执行EXE此时屏幕出现L2? 输入右侧第二条缓和曲线长度(如左右缓和曲线等长输入L1值即可)后执行EXE 此时屏幕出现R? 输入圆曲线半径后执行EXE此时屏幕出现FWJ? 输入ZH点至JD方向的方位角后执行EXE此时屏幕出现L2? 输入右侧第二条缓和曲线长度(如左右缓和曲线等长输入L1值即可)后执行EXE 此时屏幕出现PJ? 输入转向角(曲线顺时针输入正数,逆时针输入负数)后执行EXE此时屏幕出现XJ? 输入交点横坐标后执行EXE此时屏幕出现YJ? 输入交点纵坐标后执行EXE此时屏幕出现ZHL? 输入直缓点里程后执行EXE此时屏幕出现CDL? 输入测点里程后执行EXE此时屏幕出现X2=XXXX.XXX(该值为线路中线上求出的测点横坐标),执行EXE此时屏幕出现Y2=XXXX.XXX(该值为线路中线上求出的测点纵坐标),执行EXE此时屏幕出现X1? 输入架仪器点(即:测站点)横坐标后执行EXE此时屏幕出现Y1? 输入架仪器点(即:测站点)纵坐标后执行EXE此时屏幕出现f=xx.xxxx该值为求出的从测站至测点的方位角,执行EXE此时屏幕出现C=xx.xxxx该值为求出的从测站至测点的水平距离,执行EXE此时屏幕出现HD? 代表中线上测点至左右两侧的横向距离(此值输入0则继续求下一个测点坐标,如输入负横向距离则求线路中线左侧点坐标,如输入正横向距离则求线路右侧点坐标),执行EXE当HD输入0时屏幕出现CDL? 重复上述步骤即可。
C语言版计算角度及距离代码

vy=yb-ya;
alfa=JSFWJ(vx,vy);
s=JSJL(xa,ya,xb,yb);
printf ("方位角alfa=%lf\n",alfa);
printf ("距离s=%lf\n",s);
}
long double RadianToAngle(long double alfa)
}
double JSFWJ(double vx,double vy)
{
double ml;
if (vx>0 && vy==0)
ml=ቤተ መጻሕፍቲ ባይዱ;
else if (vx>0 && vy>0)
ml=RadianToAngle(atan(vy/vx));
else if (vx>0 && vy<0)
ml=RadianToAngle(atan(vy/vx)+2*PI);
double JSJL(double xa,double ya,double xb,double yb);
double xa,xb,ya,yb;
double vx,vy;
long double alfa;
double s;
printf ("请输入xa,ya,xb,yb的坐标\n");
scanf ("%lf,%lf,%lf,%lf",&xa,&ya,&xb,&yb);
else if (vx==0 && vy==0)
printf ("您输入的是同一个点");
坐标方位角计算程序

坐标方位角计算程序方位角是指由北向起顺时针方向与其中一方向的角度,通常用度数来表示。
计算坐标方位角的程序需要输入两个点的经纬度坐标,然后根据公式计算出方位角。
我们可以使用球面三角学中的公式来计算坐标方位角。
以下是计算坐标方位角的程序:```pythonimport mathdef degree_to_radian(degree):return degree * math.pi / 180def radian_to_degree(radian):return radian * 180 / math.pidef calculate_direction_angle(lat1, lon1, lat2, lon2):#将经纬度转换为弧度lat1_rad = degree_to_radian(lat1)lon1_rad = degree_to_radian(lon1)lat2_rad = degree_to_radian(lat2)lon2_rad = degree_to_radian(lon2)#计算方位角delta_lon = lon2_rad - lon1_rady = math.sin(delta_lon) * math.cos(lat2_rad)x = math.cos(lat1_rad) * math.sin(lat2_rad) -math.sin(lat1_rad) * math.cos(lat2_rad) * math.cos(delta_lon) direction_angle_rad = math.atan2(y, x)#将弧度转换为角度direction_angle_deg = radian_to_degree(direction_angle_rad)#调整角度范围为[0,360)if direction_angle_deg < 0:direction_angle_deg += 360return direction_angle_deg#输入两个点的经纬度坐标lat1 = float(input("请输入第一个点的纬度:"))lon1 = float(input("请输入第一个点的经度:"))lat2 = float(input("请输入第二个点的纬度:"))lon2 = float(input("请输入第二个点的经度:"))#计算方位角direction_angle = calculate_direction_angle(lat1, lon1, lat2, lon2)print(f"两点的方位角为:{direction_angle} 度")```以上代码中,我们首先定义了两个函数`degree_to_radian`和`radian_to_degree`,用于将角度转换为弧度、将弧度转换为角度。
教你如何通过Excel VBA编写测量坐标计算程序

教你如何通过Excel VBA编写测量坐标计算程序发布日期:2013-01-11 来源:网络作者:未知浏览次数:1704摘要:认识VBA、理解VBA,并利用Office Excel VBA编写测量坐标计算程序。
关键词:Excel VBA 程序坐标编写了解:VBA是什么?简单的说就是一种自动化语言,它可以使常用的程序自动化,可以创建自定义的解决方案。
可以用Excel的宏语言来使Excel自动化运行等……Microsoft让它开发出来的应用程序共享一种通用的自动化语言——Visual Basic For Application(VB A),可以认为VBA是非常流行的应用程序开发语言Visual Basic的子集,事实上VBA是V B应用程序的版本,尽管存在有些不同VBA和VB在结构上仍然十分相似。
如果你已经了解VB会发现学习VBA非常快。
相应的学完VBA会给学习VB打下坚实的基础。
理由:选择Excel VBA编程的理由是因为它的计算功能非常强大,是现今任何编程计算器无法逾越的。
它运用范围广,计算速度快,计算精度高,合理化显示等。
或许很多测量人员对Excel VBA还有些陌生,主要是大家寄托于计算器、电脑、手机PDA等系列软件使用。
Excel VBA对于大多数测量人员而没有系统学过计算机语言程序设计的人群来讲有一定含糊,不过只要有基本数学知识、测量常识和逻辑理解的人,都能通过Excel VBA编写设计出称心如意的测量程序。
目标:基于Excel VBA的测量坐标计算程序的设计目标是将繁琐计算过程转入到计算机中,利用程序语言的重复性原理,在计算机中可将坐标计算得出更精确的结果,使坐标计算更加可靠。
最终目标是让用户可以通过Excel VBA自行完成坐标计算程序设计。
认识:学习VBA到底需要什么基础和了解些什么?学习VBA需要认识英文字母、一般的单词(如:函数所用的过程)、数学基础知识、测量常识、逻辑性思维即可。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
公用模块:Option ExplicitPublic Const PI = 3.14159265358979'已知A、B两点坐标计算方位角,JSFWJ的中文意思是计算方位角Public Function JSFWJ(xa As Double, ya As Double, xb As Double, yb As Double) As Double '已知A、B两点坐标计算方位角函数过程Dim vx As Double, vy As Doublevx = xb - xa: vy = yb - ya'如果A、B两点坐标相同,出现提示对话框If vx = 0 And vy = 0 ThenMsgBox "您选择的是同一个点!", vbOKOnly + vbExclamation, "提示信息"JSFWJ = 999999999#End If'计算方位角的值If vx = 0 And vy > 0 Then '与y轴正半轴平行JSFWJ = RadianToAngle(PI / 2#)ElseIf vx = 0 And vy < 0 Then '与y轴负半轴平行JSFWJ = RadianToAngle(PI * 3# / 2#)ElseIf vy = 0 And vx > 0 Then '与x轴正半轴平行JSFWJ = RadianToAngle(0)ElseIf vy = 0 And vx < 0 Then '与x轴负半轴平行JSFWJ = RadianToAngle(PI)ElseIf vx > 0 And vy > 0 Then '第一象限JSFWJ = RadianToAngle(Atn(vy / vx))ElseIf vx < 0 And vy > 0 Then '第二象限JSFWJ = RadianToAngle(Atn(vy / vx) + PI)ElseIf vx < 0 And vy < 0 Then '第三象限JSFWJ = RadianToAngle(Atn(vy / vx) + PI)ElseIf vx > 0 And vy < 0 Then '第四象限JSFWJ = RadianToAngle(Atn(vy / vx) + 2 * PI)End IfEnd Function'已知A、B两点坐标计算距离,JSJLS的中文意思是计算距离SPublic Function JSJLS(xa As Double, ya As Double, xb As Double, yb As Double) As DoubleDim vx As Double, vy As Doublevx = xb - xa: vy = yb - ya'如果A、B两点坐标相同,出现提示对话框If vx = 0 And vy = 0 ThenMsgBox "您选择的是同一个点!", vbOKOnly + vbExclamation, "提示信息"JSJLS = 99999999#End If'计算距离JSJLS = Sqr(vx * vx + vy * vy)End Function'弧度化角度Public Function RadianToAngle(ByVal alfa As Double) As DoubleDim alfa1 As Double, alfa2 As Doublealfa = alfa * 180# / PIalfa = alfa + 0.000000000000001alfa1 = Fix(alfa) + Fix((alfa - Fix(alfa)) * 60#) / 100#alfa2 = (alfa * 60# - Fix(alfa * 60#)) * 0.006RadianToAngle = alfa2 + alfa1End Function窗体模块:Option Explicit'//////////////////////////////////////////////////////简单计算/////////////////////////////////////////////////// Private Sub Form_Load()Me.txt_Xa = "": Me.txt_Ya = ""Me.txt_Xb = "": Me.txt_Yb = ""Me.txt_方位角= ""Me.txt_距离= ""Me.txt_Xa.SetFocusEnd SubPrivate Sub cmd_数据清空_Click()Me.txt_Xa = "": Me.txt_Ya = ""Me.txt_Xb = "": Me.txt_Yb = ""Me.txt_方位角= ""Me.txt_距离= ""Me.txt_Xa.SetFocusEnd SubPrivate Sub cmd_退出程序_Click()Dim A As IntegerA = MsgBox("确定要退出程序吗?", vbYesNo + vbQuestion, "温馨提示")If A = vbNo ThenExit SubElseDoCmd.CloseEnd IfEnd SubPrivate Sub cmd_计算_Click()Dim xa As Double, ya As Double, xb As Double, yb As Double, FWJ As Double, S As DoubleIf IsNull(Me.txt_Xa) Or IsNull(Me.txt_Ya) Or IsNull(Me.txt_Xb) Or IsNull(Me.txt_Yb) ThenMsgBox "请输入完整数据!!!", vbOKCancel + vbInformation, "提示"Me.txt_Xa.SetFocusMe.txt_方位角= ""Me.txt_距离= ""Elsexa = Me.txt_Xa: ya = Me.txt_Yaxb = Me.txt_Xb: yb = Me.txt_YbIf (xb - xa) = 0 And (yb - ya) = 0 ThenMsgBox "您选择的是同一个点!", vbOKOnly + vbExclamation, "提示信息"Me.txt_方位角= ""Me.txt_距离= ""ElseFWJ = JSFWJ(xa, ya, xb, yb)S = JSJLS(xa, ya, xb, yb)Me.txt_距离= Format(S, "0.0000")Me.txt_方位角= Format(FWJ, "0.00000000")End IfEnd IfEnd Sub'//////////////////////////////////////////////////////批量计算/////////////////////////////////////////////////// '打开要进行批量计算的数据表《计算前坐标数据》表Private Sub cmd_导入计算数据_Click()DoCmd.RunMacro "导入导出数据.导入计算数据"End SubPrivate Sub cmd_批量计算_Click()Dim JSXH As Integer '定义计算序号Dim QDname As String, ZDname As String '第一起点和终点点号'定义起点坐标(QDx和QDy)和终点坐标(ZDx和ZDy)Dim QDx As Double, QDy As Double, ZDx As Double, ZDy As DoubleDim Conn As ADODB.ConnectionDim rs1 As ADODB.RecordsetDim rs2 As ADODB.RecordsetDim rs3 As ADODB.RecordsetSet Conn = CurrentProject.ConnectionSet rs1 = New ADODB.RecordsetSet rs2 = New ADODB.RecordsetSet rs3 = New ADODB.Recordset'清空简单计算内容Me.txt_Xa = "": Me.txt_Ya = ""Me.txt_Xb = "": Me.txt_Yb = ""'清空《计算后方位角及距离数据》表,为计算后添加数据做准备rs3.Open "select * from 计算后方位角及距离数据", Conn, adOpenDynamic, adLockOptimisticrs3.MoveFirstDo While Not rs3.EOFrs3.Deleters3.Updaters3.MoveNextLooprs3.Close'打开《计算前坐标数据》表并指向第一条记录rs1.Open "计算前坐标数据", Conn, adOpenDynamic, adLockOptimisticrs1.MoveFirst'打开《计算后方位角及距离数据》表,把计算后数据保存到表中rs2.Open "计算后方位角及距离数据", Conn, adOpenDynamic, adLockOptimistic'读取表中数据,开始计算Do While Not rs1.EOFJSXH = rs1!序号QDname = rs1!起点点号QDx = rs1!起点x坐标QDy = rs1!起点y坐标ZDname = rs1!终点点号ZDx = rs1!终点x坐标ZDy = rs1!终点y坐标If (ZDx - QDx) = 0 And (ZDy - QDy) = 0 ThenMsgBox QDname & "和" & ZDname & "是同一个点", vbOKOnly + vbExclamation, "提示信息"Exit SubElsers2.AddNewrs2!序号= JSXHrs2!名称= QDname & "—" & ZDnamers2!方位角= JSFWJ(QDx, QDy, ZDx, ZDy)rs2!距离= JSJLS(QDx, QDy, ZDx, ZDy)rs2.Updaters1.MoveNextEnd IfLooprs1.Closers2.Close'利用宏,把数据导出到Excel表中DoCmd.RunMacro "导入导出数据.导出计算后方位角及距离数据"End SubPrivate Sub Cmd_退出程序2_Click()Dim A As IntegerA = MsgBox("确定要退出程序吗?", vbYesNo + vbQuestion, "温馨提示")If A = vbNo ThenExit SubElseDoCmd.CloseEnd IfEnd Sub。