《坐标方位角及距离计算小程序》代码——Access实现

合集下载

卡西欧5800多功能实用坐标正反算小程序(附后方交会程序)

卡西欧5800多功能实用坐标正反算小程序(附后方交会程序)
说明:第一个照准点坐标(XA , YA),平距为D1,第二个照准点坐标(XB , YB),平距为D2 ,第一点,第二点及测站点如果是顺时针方向排列Q = 1,逆时针Q =-1。(XP , YP)为待求点的坐标。
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计算公式

坐标方位角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 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计算器计算坐标和方位角及距离-适合两缓等长和不等长程序

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语言版计算角度及距离代码

C语言版计算角度及距离代码
vx=xb-xa;
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编写测量坐标计算程序

教你如何通过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需要认识英文字母、一般的单词(如:函数所用的过程)、数学基础知识、测量常识、逻辑性思维即可。

第3章Access导航

第3章Access导航

第3章Access导航本章要点• 理解A c c e s s功能和模式• 理解帮助窗口• 定义A c c e s s功能• 使用“数据库实用工具”• 定义A c c e s s操作模式• 将数据库转换为Access 2000格式• 理解A c c e s s的表显示• 创建. m d e文件• 使用功能键• 疑难解答• 设置默认的选项• 现实世界—H T M L帮助或者障碍• 使用A c c e s s帮助3.1 理解Access功能和模式A c c e s s与字处理和电子数据表应用不同,它是一个真正的多功能的程序。

尽管字处理应用也有许多高级的能力,但其基本的用途是支持文本输入、页面布局和格式化打印。

所有字处理应用主要功能和支持特征都是围绕这一最终目标的。

所有字处理操作都是在代表一张纸的视图上执行的—其大小通常为8 1/2*11英寸。

许多电子数据表应用使用行列形式来完成其所有的功能。

与之相反,A c c e s s则由许多的相关工具组成,这些工具主要用于生成、组织、分段、显示、打印和发布数据。

下面将对A c c e s s的基本功能和操作模式进行详细的描述。

3.1.1 定义Access 功能要想成为一个完善的关系型数据库管理系统( R D B M S ),一个应用必须具备以下四个基本功能,其中每个功能都有其自己的表现形式(或者视图):• 数据组织涉及表的创建和操作,其中表中包含有传统的表格格式的数据(行列或者电子数据表),A c c e s s称之为“数据表”视图。

• 表链接和数据提取用数据关系链接多个表,创建一个存储在你的计算机内存或者临时磁盘文件中的临时表,这个临时表中包含你选择的数据。

Access 使用查询来链接表和选择数据,并将之存储到称之为R e c o r d s e t对象的临时表。

R e c o r d s e t对象中包含有运行查询所返回的结果数据;Recordset 对象也叫做虚拟表,因为它们存储在计算机的内存中,而没有存储到数据库文件内。

XY-SQ坐标、方位角、距离标准通用计算程序

XY-SQ坐标、方位角、距离标准通用计算程序

XY-SQ坐标、方位角、距离标准通用计算程序XY-SQ 坐标、方位角、距离标准通用计算程序⑴计算公式略。

⑵XY—SQ程序设计AC MODE 5 1 XY ALPHA — ALPHA SQ EXE 1A″X0″ B″Y0″ C″X1″ D″Y1″∶Lbl 3∶Pol ((C-A ), (D-B ∶″1.XY=>SQ〞∶″2.SQ=>XY〞∶{K}∶K =1 => Goto 0∶ ≠> Goto 1∶Lbl 0 ∶{ X Y }∶ Pol (X-A , Y-B ∶S= I ▲ J<0 => Q= 360+ J ▲ ≠> Q= J ▲ Goto 3 ∶Lbl 1∶{ S W }∶ X〝XP〞= A+ Rec (S , W+J ) ▲ Y〝YP〞=B+J ▲ Goto 3 EXE⑶说明①功能:计算测点到控制点的距离及方位角;由观察水平角、平距计算测点的坐标。

②计算器输入及显示X0? 输入控制点或测站坐标,米Y0?X1? 输入后視点坐标,米Y1?X? 输入所求点坐标,米Y?S= 显示两点的距离,米Q= 显示测点到控制点的方位角,度。

S? 输入平距(米),W? 输入水平角(度),XP= 显示点P的坐标。

YP=③当K=1时,计算测点到控制点的距离及方位角,当K≠1时,由观察水平角、平距计算测点的坐标。

⑷计算例、控制点DA29 (229540.940,477984.580 )、后視点A30(229081.728,477624.140),拟放中桩P(229500.384,477900.260),计算两点的距离及方位角,支点B1观察角E=75°30′29″,平距716.304m。

计算支点B1的坐标。

选择程序:AC FILE △ 选取XY—SQ程序 EXE 输入数据顺序:X0? 229540.940 EXE 输入控制点坐标,米Y0? 477984.580 EXEX1? 229081.728 EXE 输入后视点坐标,米,只计算距离及方位角可以不输。

利用VB开发极坐标正反算小程序

利用VB开发极坐标正反算小程序

利用VB开发极坐标正反算小程序摘要:利用VB编程中的面向对象功能,开发方便实用的工程测量小程序:极坐标正反算。

关键词:极坐标正反算、方位角、角度制、弧度制、坐标增量Abstract: using VB object oriented programming function, to facilitate the development of practical engineering surveying small program: polar coordinates is positive and negative.Keywords: polar coordinates is positive and negative, azimuth Angle, system, radian system, coordinate increment全站仪放样测量在各种基建工程中利用非常广泛,如:大楼基桩放样、桥梁桥墩放样、公路放线等等。

全站仪放样测量通常采用极坐标法。

极坐标法工程坐标的正反算,是放样准确性的基础保障。

通常极坐标法正反算是采用工程计算器计算取得,各种工程计算器的计算操作方法不尽相同,这就导致在不同的计算器使用时产生错误操作,反复的计算检核,给测绘工作带来不便。

随着便携式微型电脑的普及,野外工程测量工作中随时随地的采用电脑计算绘图成为现实,不仅方便准确,而且效率大大提高。

本文利用VB编程中的面向对象功能,开发方便实用的工程测量小程序:极坐标正反算。

接下来简单介绍一下编程过程。

首先,计算原理如图例一:图例一极坐标正算时:站点为O,前、后视点为P0、P1、P2、P3,分别在四个象限,如图例一。

其坐标方位角a0、a1、a2、a3与夹角a(a=arctg(DY/DX))的关系为:a0=a,a1=a+180°,a2=a+180°,a3=a+360°,半径与坐标增量的关系:R2=DX2+DY2。

5800 只计算坐标方位角程序

5800 只计算坐标方位角程序

5800 只计算坐标方位角程序一、坐标计算源程序1.主程序(TYQXjs)"1.SZ=> XY":"2.XY => SZ":N:U"X0":V"Y0":O"S0":G"F0":H"LS":P"R0":R"RN":Q:C=1÷P:D=(P-R)÷(2HPR):E=180÷π:N=1=>Goto 1:≠>Go to 2Δ←┘Lbl 1:{SZ}:SZ:W=Abs(S-O):Prog "SUB1":X"XS"=X◢Y"YS"=Y◢G oto 1←┘Lbl 2:{XY}:XY:I=X:J=Y:Prog "SUB2":S"S"=O+W◢Z"Z"=Z◢Goto 22. 正算子程序(SUB1)A=0.1739274226:B=0.3260725774:K=0.0694318442:L=0.3300094782:F=1-L:M=1-K:X= U+W(Acos(G+QEKW(C+KWD))+Bcos(G+QELW(C+LWD))+Bcos(G+QEFW(C+FWD))+Acos(G+Q EMW(C+MWD))):Y=V+W(Asin(G+QEKW(C+KWD))+Bsin(G+QELW(C+LWD))+Bsin(G+QEFW(C +FWD))+Asin(G+QEMW(C+MWD))):F=G+QEW(C+WD)+90:X=X+ZcosF:Y=Y+ZsinF3. 反算子程序(SUB2)T=G-90:W=Abs((Y-V)cosT-(X-U)sinT):Z=0:Lbl 0:Prog "SUB1":L=T+QEW(C+WD):Z=(J-Y)cosL-(I-X)sinL:AbsZ<1E-6=>Goto1:≠>W=W+Z:Got o 0Δ←┘Lbl 1:Z=0:Prog "SUB1":Z=(J-Y)÷sinF二、使用说明1、规定(1) 以道路中线的前进方向(即里程增大的方向)区分左右;当线元往左偏时,Q=-1;当线元往右偏时,Q=1;当线元为直线时,Q=0。

实用文档之ACCESS基本函数大全【经典免费】

实用文档之ACCESS基本函数大全【经典免费】
返回包含指定年月日的日期
DateDiff(<间隔类型>,<日期1>,<日期2>[,W1][,W2])
返回日期1和日期2之间按照间隔类型所指定的时间间隔数目
DatePart(<表达式1>,<表达式2>,<表达式3>)
返回由表达式1值为年、表达式2值为月、表达式3值为日而组成的
转换函数
字符串转换字符代码
返回一个值,该值是从字符表达式最左端某个字符开始,截取到某个字符为止的若干个字符。其中,数值表达式1的值是开始的字符位置,数值表达式2是终止的字符位置。数值表达式2可以省略,若省略了数值表达式2,则返回的值是:从字符表达式最左端某个字符开始,截取到最后一个字符为止的若干个字符
字符串长度
Len(<字符表达式>)
Round(<数值表达式>[,<表达式>])
按照指定的小数位数进行四舍五入运算的结果。[<表达式>]是进行四舍五入运算小数点右边保留的位数
平方根
Srq(<数值表达式>)
返回数值表达式的平方根值
符号
Sgn(<数值表达式>)
返回数值表达式值的符号值。当数值表达式值大于0,返回值为1;当数值表达式值等于0,返回值为0;当数值表达式值小于0,返回值为-1
返回一个值,该值是检索子字符串在字符串中最早出现的位置。其中,数值表达式为可选项,是检索的起始位置,若省略,从第一个字符开始检索。比较方法为可选项,指定字符串比较方法。值可以为1、2或0,值为0(缺省)做二进制比较,值为1做不区分大小写的文本比较,值为2做基于数据库中包含信息的比较。若指定比较方法,则必须指定数据表达式值

测量坐标计算器在线使用教程

测量坐标计算器在线使用教程

测量坐标计算器在线使用教程简介测量坐标计算器是一种在线工具,用于计算平面坐标系中的点之间的距离、角度和中点坐标等。

它可以帮助工程师、测量员和学生等快速准确地进行各种测量计算。

本教程将介绍如何使用测量坐标计算器进行各种常见的测量计算。

步骤一:打开测量坐标计算器首先,打开浏览器,并输入测量坐标计算器的网址。

等待网页加载完成后,你将看到一个简洁直观的用户界面。

步骤二:选择测量类型在测量坐标计算器的主界面上,你将看到不同的测量类型选项。

根据你的需求,选择需要进行的测量类型,比如距离测量、角度测量或者中点坐标计算等。

步骤三:输入坐标值在选择了测量类型后,你需要输入相应的坐标值。

根据测量类型的不同,你可能需要输入一个或多个坐标值。

确保输入的坐标值正确无误,并按照指定的格式输入。

步骤四:执行计算在输入了坐标值后,点击“计算”按钮执行计算。

测量坐标计算器将根据你输入的坐标值进行相应的计算,然后在界面上显示计算结果。

步骤五:查看计算结果计算完成后,你将在界面上看到计算结果。

结果可能是一个距离值、一个角度值或者一个坐标点等,具体取决于你选择的测量类型。

确保仔细阅读计算结果,并在需要时进行进一步处理。

步骤六:重新计算或退出如果你想进行另一种测量计算,可以选择重新输入坐标值并执行计算。

如果你已经完成了所有的测量计算,你可以选择退出测量坐标计算器,关闭浏览器或者返回其他页面。

小结使用测量坐标计算器进行测量计算是一种简单方便的方法。

通过选择测量类型、输入坐标值并执行计算,你可以快速准确地得到各种测量结果。

无论你是工程师、测量员还是学生,测量坐标计算器都将是你工作学习中的好帮手。

以上就是测量坐标计算器在线使用的基本教程,希望对你有所帮助!。

《坐标方位角及距离计算小程序》代码——Access实现

《坐标方位角及距离计算小程序》代码——Access实现

公用模块: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_方位角= ""Me.txt_距离= ""Me.txt_Xa.SetFocusEnd SubPrivate Sub cmd_数据清空_Click()Me.txt_Xa =Null: Me.txt_Ya = NullMe.txt_Xb =Null: Me.txt_Yb = NullMe.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。

ACCESS查询教程(包含常用函数)

ACCESS查询教程(包含常用函数)
12
用户的查询经常需要指定一定的条件,这就需要设置 3.1.4 查询准则 准则来实现。查询准则也称为查询条件,是运算符、常 量、字段值、函数以及字段名和属性等的任意组合,能 够计算出一个结果。 1.准则中的运算符及表达式
◆ 算术运算符
运算符 功 加法运算 减法运算,或表示负值 能 表达式举例 [小计]+[销售税] [价格]-[折扣] 含 义
22
3.2.2 在设计视图中创建查询
1.认识查询“设计”视图
设 计 视 图
查询显示区
查询设计区 组件
设 计 工 具 栏
视图
查询类型
运行
显示表
总计
上限值
属性
生成器
数据库
新对象 23
2.创建查询 在查询“设计”视图中创建查询,首先应在打开的“ 显示表”对话框中选择查询所依据的表或查询,并将其添 加到查询“设计”视图的窗口中,如果选择多个表,多个 表之间应先建立关联。
19
【例】时间函数的应用
1. 构造查询条件表达式,把7月份出生的学生查找出来 。
Month([csrq])=7
2. 构造计算表达式,根据出生日期计算学生年龄。
Year(Date())-Year([出生日期]) 3. 构造表达式,表示出系统日期10天前的日期。 Date()-10
说明:在任何计算表达式中的符号都必须在英文半角输入状态下输 入,否则无效。[出生日期]和[csrq]为字段标识符,方括号内是 字段名。如果要明确表示“学生信息”表中的“出生日期”字段 ,表达式为:[学生信息]![出生日期]
3. 交叉表查询 4. 操作查询 5. SQL 查询
6
1. 选择查询
选择查询是最常见的查询类型,它是按照规则从 一个或多个表,或其它查询中检索数据,并按照所 需的排列顺序显示出来。如下表的数据来源于“学 生信息”、“选课信息”及“课程信息”3个表

推算坐标方位角程序

推算坐标方位角程序

推算坐标方位角程序分类:土建参考资料2006.9.5 20:26 作者:小杨 | 评论:0 | 阅读:1922Option ExplicitRem **** GPHVB2.VBP ****Rem **** 奇进偶舍、度分秒与弧度互化、推算坐标方位角程序**** Rem **** 2005/03/23*****Private Sub Form_Load()Rem ***** 此为第一个窗体From1.frm ****Form1.Height = Screen.Height: '**** 设置窗体高占整个屏幕Form1.Width = Screen.Width: '***** 设置窗体宽占整个屏幕Form1.Left = 0: '**** 设置窗体位置距离屏幕左端的距离为值零Form1.Top = 0: '**** 设置窗体位置距离屏幕上端的距离值为零End SubPrivate Sub GPHT1_Click(index As Integer)Rem **** 奇进偶舍演示 ****Rem ——————————————————————————————Rem **** VB提倡使用显示变量,要显示声明变量,方法有二:Rem **** 1.可在类模块、窗体模块或标准模块的声明段加入如下语句:Rem **** Option ExplicitRem **** 2.在“工具”菜单中选取“选项”,单击“编辑器”选项卡,Rem **** 再复选“要求变量声明”选项,最后单击“确定”退出,这样Rem **** 就在任何新模块(类模块、窗体模块、标准模块)的声明段中Rem **** 自动插入Option Explicit语句,但不会在已经建立起来的Rem **** 模块中自动插入;所在工程内部,只能用手工方法向现有模Rem **** 块添加 Option explicit 语句。

Rem ——————————————————————————————Dim A As IntegerClsPrintPrint Spc(6); "奇进偶舍演示"PrintPrint Spc(6); "PI()"For A = 1 To 20Print Spc(6); LTrim$(A); " NNN="; NNN(PI(), A)'DO'Loop Until INKEY$<>""Next AEnd SubPrivate Function NNN(ByVal NM As Double, ByVal BB As Integer) As Double Rem **** 奇进偶舍函数 ****Rem **** NM为需要奇进偶舍的变量,BB为NM这个变量需要保留的小数点后面的位数 *****Rem **** 分别用NM=PI()、BB=1、2、……Rem **** NM=1.2225、BB=3Rem **** NM=1.2235、BM=3 来验证该FUNCTION过程的正确性 ****Dim BNM As DoubleDim C As IntegerDim J As IntegerDim K As IntegerDim I As DoubleC = Sgn(NM)BNM = Abs(NM)I = (BNM * 10 ^ (BB + 1) + 10 ^ (-11)) - 10 * Fix(BNM * 10 ^ BB + 10 ^ (-11))I = (Fix(I * 10 ^ 10)) / 10 ^ 10J = Fix(BNM * 10 ^ BB + 10 ^ (-11)) - 10 * Fix(BNM * 10 ^ (BB - 1) + 10 ^ (-110))If I > 5 ThenK = 1ElseIf I < 5 ThenK = 0ElseIf (I = 5 And J = 2 * Fix(J / 2)) ThenK = 0ElseK = 1End IfNNN = C * Fix(BNM * 10 ^ BB + K) / 10 ^ BBEnd FunctionPrivate Static Function PI() As DoubleRem ****** 计算PI *******PI = 4 * Atn(1)End FunctionPrivate Sub GPHT2_CLICK(index As Integer)Rem ****** DEG->RAD 演示******Dim D As StringCls'D="0 00 00"'D="0 12 55"'D="2 12 55"'D = "12 36 56"'D="233 12 45"'D="-233 12 45"PrintPrint Spc(6); "DEG->RAD 演示"PrintPrint Spc(6); "DEG$="; DPrint Spc(6); "RAD="; RAD(D)'*******当D$="12 36 56 " 时 , RAD=0.220182981***** End SubPrivate Function RAD(ByVal DEGREE As String) As Double Rem **** XXX°XX′XX"->rad *****Rem **** DEGREE$如"12 45 18"的形式****Rem **** 应加上如下功能:1.测试DEGREE$是否带有+-号;Rem **** 2.测试度和分之间的空格之间有多少字符Dim DEG11 As DoubleDim DEG12 As DoubleDim DEG13 As DoubleDEG11 = Val(Left$(DEGREE, 3))DEG12 = Val(Mid$(DEGEE, 5, 2)) / 60DEG13 = Val(Right$(DEGEE, 2)) / 3600RAD = (DEG11 + DEG12 + DEG13) * PI() / 180End FunctionPrivate Sub GPHT3_CLICK(index As Integer)Rem **** RAD->DEG演示****Dim RADIAN As DoubleClsRADIAN = -2.1234PrintPrint Spc(6); "RAD->DEG演示"PrintPrint Spc(6); "RAD="; RADIANPrint Spc(6); "DEG$="; DEG(RADIAN)End SubPrivate Function DEG(ByVal RAD As Double) As StringRem ****RAD->#XXX°XX'XX″****Rem ****#号表示输出XXX°XX′XX″前应带有的符号,其若为"-"号,即取之;Rem **** 其若为“+”号,使空格顶位。

C#通过经纬度计算2个点之间距离的实现代码

C#通过经纬度计算2个点之间距离的实现代码

C#通过经纬度计算2个点之间距离的实现代码根据两点经纬度计算距离这些经纬线是怎样定出来的呢?地球是在不停地绕地轴旋转(地轴是⼀根通过地球南北两极和地球中⼼的假想线),在地球中腰画⼀个与地轴垂直的⼤圆圈,使圈上的每⼀点都和南北两极的距离相等,这个圆圈就叫作“⾚道”。

在⾚道的南北两边,画出许多和⾚道平⾏的圆圈,就是“纬圈”;构成这些圆圈的线段,叫做纬线。

我们把⾚道定为纬度零度,向南向北各为90度,在⾚道以南的叫南纬,在⾚道以北的叫北纬。

北极就是北纬90度,南极就是南纬90度。

纬度的⾼低也标志着⽓候的冷热,如⾚道和低纬度地地区⽆冬,两极和⾼纬度地区⽆夏,中纬度地区四季分明。

其次,从北极点到南极点,可以画出许多南北⽅向的与地球⾚道垂直的⼤圆圈,这叫作“经圈”;构成这些圆圈的线段,就叫经线。

公元1884平⾯坐标图年,国际上规定以通过英国伦敦近郊的格林尼治天⽂台的经线作为计算经度的起点,即经度零度零分零秒,也称“本初⼦午线”。

在它东⾯的为东经,共180度;在它西⾯的为西经,共180度。

因为地球是圆的,所以东经180度和西经180度的经线是同⼀条经线。

各国公定180度经线为“国际⽇期变更线”。

为了避免同⼀地区使⽤两个不同的⽇期,国际⽇期变线在遇陆地时略有偏离。

每⼀经度和纬度还可以再细分为60分,每⼀分再分为60秒以及秒的⼩数。

利⽤经纬线,我们就可以确定地球上每⼀个地⽅的具体位置,并且把它在地图或地球仪上表⽰出来。

例如问北京的经纬度是多少?我们很容易从地图上查出来是东经116度24分,北纬39度54分。

在⼤海中航⾏的船只,只要把所在地的经度测出来,就可以确定船在海洋中的位置和前进⽅向。

纬度共有90度。

⾚道为0度,向两极排列,圈⼦越⼩,度数越⼤。

横线是纬度,竖线是经度。

当然可以计算,四元⼆次⽅程。

经度和纬度都是⼀种⾓度。

经度是个两⾯⾓,是两个经线平⾯的夹⾓。

因所有经线都是⼀样长,为了度量经度选取⼀个起点⾯,经1884年国际会议协商,决定以通过英国伦敦近郊、泰晤⼠河南岸的格林尼治皇家天⽂台(旧址)的⼀台主要⼦午仪⼗字丝的那条经线为起始经线,称为本初⼦午线。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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。

相关文档
最新文档