网易首页 > 网易号 > 正文 申请入驻

测量计算方位角万能公式及VB、VBA源代码

0
分享至

'方位角计算函数 Azimuth()

'Sx为起点X,Sy为起点Y

'Ex为终点X,Ey为终点Y

'Style指明返回值格式

'Style=-1为弧度格式

'Style=0为“DD MM SS”格式

'Style=1为“DD-MM-SS”格式

'Style=2为“DD°MMˊSS""”格式

'Style=其它值时返回十进制度值

Function Azimuth(Sx As Double, Sy As Double, Ex As Double, Ey As Double, Style As Integer)

Dim DltX As Double, DltY As Double, A_tmp As Double, Pi As Double

Pi = Atn(1) * 4 '定义PI值

DltX = Ex - Sx

DltY = Ey - Sy + 1E-20

A_tmp = Pi * (1 - Sgn(DltY) / 2) - Atn(DltX / DltY) '计算方位角

A_tmp = A_tmp * 180 / Pi '转换为360进制角度

Azimuth = Deg2DMS(A_tmp, Style)

End Function

'转换角度为度分秒

'Style=-1为弧度格式

'Style=0为“DD MM SS”格式

'Style=1为“DD-MM-SS”格式

'Style=2为“DD°MMˊSS""”格式

'Style=其它值时返回十进制度值

Function Deg2DMS(DegValue As Double, Style As Integer)

Dim tD As Integer, tM As Integer, Ts As Double, tmp As Double

tD = Int(DegValue)

tmp = (DegValue - tD) * 60

tM = Int(tmp)

tmp = (tmp - tM) * 60

Ts = Round(tmp, 1)

Select Case Style

Case -1 '返回弧度

Deg2DMS = DegValue * Atn(1) * 4 / 180

Case 0

Deg2DMS = tD & " " & Format(tM, "00") & " " & Format(Ts, "00.0")

Case 1

Deg2DMS = tD & "-" & Format(tM, "00") & "-" & Format(Ts, "00.0")

Case 2

Deg2DMS = tD & "°" & Format(tM, "00") & "ˊ" & Format(Ts, "00.0") & """"

Case Else

Deg2DMS = DegValue

End Select

End Function

Function aa(area1 As Double, area2 As Double) As Double

Dim rat As Double

rat = area1 / area2

If (rat < 0.6 Or rat > (1 / 0.6)) And area1 <> 0 And area2 <> 0 Then

aa = (area1 + area2 + sqrt(area1 * area2)) / 3

Else

aa = (area1 + area2) / 2

End If

End Function

Function Distance(Sx As Double, Sy As Double, Ex As Double, Ey As Double, Precision As Integer) As Double

Dim DltX As Double, DltY As Double

DltX = Ex - Sx

DltY = Ey - Sy

Distance = Round(Sqr(DltX * DltX + DltY * DltY), Precision)

End Function

Function inValue(stgA As Double, Av As Double, stgB As Double, Bv As Double, stgC As Double) As Double

If stgB <> stgA Then

inValue = Av + (Bv - Av) / (stgB - stgA) * (stgC - stgA)

Else

inValue = -9.9999999

End If

End Function

Function pol(AX As Double, AY As Double, Bx As Double, By As Double) As String

pol = Azimuth(AX, AY, Bx, By, 2) & " " & Distance(AX, AY, Bx, By, 3)

End Function

Function rec(alpha As String, dist As Double) As String

Dim Alpha_Rad As Double

Alpha_Rad = StringToRad(alpha)

rec = "dx:" & Round(Cos(Alpha_Rad) * dist, 3) & " dy:" & Round(Sin(Alpha_Rad) * dist, 3)

End Function

Function StringToRad(strAz) '将字符串格式方位角转换成弧度格式

Dim azSubStr

If strAz <> "" Then

azSubStr = Split(strAz, "-")

If UBound(azSubStr) = 2 Then

StringToRad = (azSubStr(0) + azSubStr(1) / 60 + azSubStr(2) / 3600) * Atn(1) * 4 / 180

Else

StringToRad = 0

End If

Else

StringToRad = 0

End If

End Function

'竹山龙背湾 2010-09-08

'判断是否存在坐标系定义表

Function CoSysTableExist() As Boolean

Dim i As Long

CoSysTableExist = False

For i = 1 To Sheets.Count

If Sheets(i).Name = "CoSys" Then

CoSysTableExist = True

Exit For

End If

Next

'If Not CoSysTableExist Then

'Dim NewTable As Sheets

'End If

End Function

'查找坐标系名称并返回参数

Function CoSysFndPara(CoSysName As String) As String

Dim FndIndex As Long

If CoSysTableExist Then

For FndIndex = 1 To 100

If Trim(Sheets("CoSys").Range("A" & FndIndex).Text) = Trim(CoSysName) Then

CoSysFndPara = Trim(Sheets("CoSys").Range("B" & FndIndex).Text) 'AX

CoSysFndPara = CoSysFndPara & "," & Trim(Sheets("CoSys").Range("C" & FndIndex).Text) 'AY

CoSysFndPara = CoSysFndPara & "," & Trim(Sheets("CoSys").Range("D" & FndIndex).Text) 'Ax

CoSysFndPara = CoSysFndPara & "," & Trim(Sheets("CoSys").Range("E" & FndIndex).Text) 'Ay

If InStr(Trim(Sheets("CoSys").Range("F" & FndIndex).Text), "-") <> 0 Then

CoSysFndPara = CoSysFndPara & "," & Trim(Sheets("CoSys").Range("F" & FndIndex).Text) 'az

Else

CoSysFndPara = CoSysFndPara & "," & Azimuth(Trim(Sheets("CoSys").Range("B" & FndIndex).Text), Trim(Sheets("CoSys").Range("C" & FndIndex).Text), Trim(Sheets("CoSys").Range("F" & FndIndex).Text), Trim(Sheets("CoSys").Range("G" & FndIndex).Text), 1) 'BY or Type

End If

Exit For

End If

Next

Else

CoSysFndPara = ""

End If

End Function

'测图坐标转施工坐标

Function NE2SO_STG(CoSysName As String, P_N As Double, P_E As Double) As Double

Dim coSysParaStr As String

Dim coSysPara

Dim O_X As Double, O_Y As Double, O_Stage As Double, O_Offset As Double, X_Line_Azimuth_Str As Double

'读取坐标系参数

coSysParaStr = CoSysFndPara(CoSysName)

coSysPara = Split(coSysParaStr, ",")

O_X = coSysPara(0) '基点测图坐标

O_Y = coSysPara(1)

O_Stage = coSysPara(2) '基点施工坐标

O_Offset = coSysPara(3)

X_Line_Azimuth_Str = StringToRad(coSysPara(4)) '施工坐标系X轴方位角,弧度

NE2SO_STG = Round((P_N - O_X) * Cos(X_Line_Azimuth_Str) + (P_E - O_Y) * Sin(X_Line_Azimuth_Str) + O_Stage, 3)

End Function

'测图坐标转施工坐标

Function NE2SO_OFF(CoSysName As String, P_N As Double, P_E As Double) As Double

Dim coSysParaStr As String

Dim coSysPara

Dim O_X As Double, O_Y As Double, O_Stage As Double, O_Offset As Double, X_Line_Azimuth_Str As Double

'读取坐标系参数

coSysParaStr = CoSysFndPara(CoSysName)

coSysPara = Split(coSysParaStr, ",")

O_X = coSysPara(0) '基点测图坐标

O_Y = coSysPara(1)

O_Stage = coSysPara(2) '基点施工坐标

O_Offset = coSysPara(3)

X_Line_Azimuth_Str = StringToRad(coSysPara(4)) '施工坐标系X轴方位角,弧度

NE2SO_OFF = Round(-(P_N - O_X) * Sin(X_Line_Azimuth_Str) + (P_E - O_Y) * Cos(X_Line_Azimuth_Str) + O_Offset, 3)

End Function

'测图坐标转施工坐标

Function SO2NE_N(CoSysName As String, P_x As Double, P_y As Double) As Double

Dim coSysParaStr As String

Dim coSysPara

Dim O_X As Double, O_Y As Double, O_Stage As Double, O_Offset As Double, X_Line_Azimuth_Str As Double

'读取坐标系参数

coSysParaStr = CoSysFndPara(CoSysName)

coSysPara = Split(coSysParaStr, ",")

O_X = coSysPara(0) '基点测图坐标

O_Y = coSysPara(1)

O_Stage = coSysPara(2) '基点施工坐标

O_Offset = coSysPara(3)

X_Line_Azimuth_Str = StringToRad(coSysPara(4)) '施工坐标系X轴方位角,弧度

SO2NE_N = Round(O_X + (P_x - O_Stage) * Cos(X_Line_Azimuth_Str) - (P_y - O_Offset) * Sin(X_Line_Azimuth_Str), 3)

End Function

'测图坐标转施工坐标

Function SO2NE_E(CoSysName As String, P_x As Double, P_y As Double) As Double

Dim coSysParaStr As String

Dim coSysPara

Dim O_X As Double, O_Y As Double, O_Stage As Double, O_Offset As Double, X_Line_Azimuth_Str As Double

'读取坐标系参数

coSysParaStr = CoSysFndPara(CoSysName)

coSysPara = Split(coSysParaStr, ",")

O_X = coSysPara(0) '基点测图坐标

O_Y = coSysPara(1)

O_Stage = coSysPara(2) '基点施工坐标

O_Offset = coSysPara(3)

X_Line_Azimuth_Str = StringToRad(coSysPara(4)) '施工坐标系X轴方位角,弧度

SO2NE_E = Round(O_Y + (P_x - O_Stage) * Sin(X_Line_Azimuth_Str) + (P_y - O_Offset) * Cos(X_Line_Azimuth_Str), 3)

End Function

文章转自:测量

网课学习 + 权威结业证书

我们精心汇总了一些相对简单

培训考核通过便可获取的证书

自然资源部职鉴中心发证

可用于招投标、资质系统

测绘师继续教育20学时

中国测绘网新媒体中心

cehui8@qq.com

商务合作/微信 214979525

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
西交大学生周凯旋被判死刑,行刑前拒见家属,孤身赴死!

西交大学生周凯旋被判死刑,行刑前拒见家属,孤身赴死!

华人星光
2026-05-23 10:51:12
美国人发现,美国近三十年来最大外交失误,可能就是阻止中国统一

美国人发现,美国近三十年来最大外交失误,可能就是阻止中国统一

流史岁月
2026-05-31 12:00:13
取消Google One后,数据多久会消失?守住这15GB底线很关键

取消Google One后,数据多久会消失?守住这15GB底线很关键

像素与芯片
2026-06-02 11:45:39
“我就是想停电了!” 江苏一售电公司发送停电通知被指“太任性”!

“我就是想停电了!” 江苏一售电公司发送停电通知被指“太任性”!

闪电新闻
2026-06-03 14:51:26
中美记者互逐:中方驱逐美记者后,美吊销新华社记者许可

中美记者互逐:中方驱逐美记者后,美吊销新华社记者许可

咸鱼金脑袋
2026-06-03 14:52:56
“纳希莫夫海军上将”号核动力巡洋舰开启最终海试,究竟有多强?

“纳希莫夫海军上将”号核动力巡洋舰开启最终海试,究竟有多强?

零度Military
2026-06-03 13:19:01
闹大了!中方驱逐美记者后,不足24小时,美吊销新华社记者许可

闹大了!中方驱逐美记者后,不足24小时,美吊销新华社记者许可

黑鹰观军事
2026-06-03 14:21:35
邓世昌至死不知:掺沙子的炮弹其实没问题 沉舰的真相被隐藏百年

邓世昌至死不知:掺沙子的炮弹其实没问题 沉舰的真相被隐藏百年

掠影后有感
2026-06-01 11:05:19
今年端午假期不一般,有3个好消息,2个坏消息,早了解早安排

今年端午假期不一般,有3个好消息,2个坏消息,早了解早安排

小谈食刻美食
2026-06-03 07:21:51
乡村爱情王小蒙变化好大,丰乳肥臀的,不再是当年清纯的小姑娘了

乡村爱情王小蒙变化好大,丰乳肥臀的,不再是当年清纯的小姑娘了

南万说娱26
2026-06-02 12:25:07
把我们当冤大头了?中国无偿援助后,菲律宾一句话彻底惹怒外交部

把我们当冤大头了?中国无偿援助后,菲律宾一句话彻底惹怒外交部

青青子衿
2026-06-02 22:06:17
编制外岗也要管!“当时不懂,就和朋友玩了”,女生政审被刷不服

编制外岗也要管!“当时不懂,就和朋友玩了”,女生政审被刷不服

蝴蝶花雨话教育
2026-06-03 00:05:13
大爷也难招!7月起保安岗没人敢用了?大龄从业者该何去何从

大爷也难招!7月起保安岗没人敢用了?大龄从业者该何去何从

复转这些年
2026-05-31 20:33:07
一顿饭就要花掉40万,四年敛财40亿,杭州土皇帝虞关荣有多嚣张

一顿饭就要花掉40万,四年敛财40亿,杭州土皇帝虞关荣有多嚣张

莫地方
2026-05-21 01:45:03
刘少奇之子刘源身陷困境求助宋庆龄,九字回复令他动容

刘少奇之子刘源身陷困境求助宋庆龄,九字回复令他动容

唠叨说历史
2026-05-29 14:16:53
“保不住香港,我们以死谢罪!”,解密惊心动魄的香港经济保卫战

“保不住香港,我们以死谢罪!”,解密惊心动魄的香港经济保卫战

文史道
2025-02-18 20:31:56
就在昨夜!这组炸裂的美国就业市场数据 令华尔街大吃一惊

就在昨夜!这组炸裂的美国就业市场数据 令华尔街大吃一惊

财联社
2026-06-03 08:42:13
《007:初露锋芒》邦女郎幕后演员揭晓

《007:初露锋芒》邦女郎幕后演员揭晓

山月不知2
2026-06-02 06:33:27
微软为英伟达RTX Spark改写Win11底层:优化CPU调度

微软为英伟达RTX Spark改写Win11底层:优化CPU调度

IT之家
2026-06-03 11:18:36
“鸟叔”被移送检方

“鸟叔”被移送检方

澎湃新闻
2026-06-02 14:59:04
2026-06-03 16:56:49
中国测绘网
中国测绘网
中国测绘网 官方网易号
2900文章数 1951关注度
往期回顾 全部

科技要闻

传DeepSeek融资意向500亿:腾讯投100亿

头条要闻

94版《三国演义》成观众心中"白月光" 多位扮演者离世

头条要闻

94版《三国演义》成观众心中"白月光" 多位扮演者离世

体育要闻

选择中国品牌的库里,和他们的巨大野心

娱乐要闻

官方痛批乱象 刘涛郑恺等艺人遭点名

财经要闻

AI,开始偷懒了?

汽车要闻

依托全域辅助驾驶布局 千里浩瀚助推吉利5月市场大热

态度原创

游戏
房产
时尚
教育
军事航空

《战舰世界》科幻联动最夯TOP3,错过任何一个都会失眠!

房产要闻

突发!254亩调规,海口江东的超级学校真的快来了!

休闲T恤舒适感极佳,夏天必不可少!轻轻松松拿捏日常的造型

教育要闻

盒子里的球怎么算组合?方法太简单!

军事要闻

美伊互袭波及多国 过去一夜中东局势骤然升级

无障碍浏览 进入关怀版