两个 Lat/Longs Autoit 之间的距离公式?
Distance formula between two Lat/Longs Autoit?
我正在尝试计算两个坐标之间的距离,但遇到了问题。我看过 JavaScript 的公式,但似乎无法将其正确转换为 Autoit。示例
$lat1 = 34.521630
$lon1 = -119.134680
$lat2 = 34.911463
$lon2 = -119.453130
;
;
; $distance = Some code here that will calculate distance
;
;
;
不是AutoIt本身的问题,你需要正确的算法:
#include <Math.au3>
$lat1 = 34.521630
$lon1 = -119.134680
$lat2 = 34.911463
$lon2 = -119.453130
ConsoleWrite(_distanceInKm($lat1, $lon1, $lat2, $lon2) & @CRLF)
Func _distanceInKm($lat1, $lon1, $lat2, $lon2)
Local $iRadius = 6371
Local $iLat = _Radian($lat2 - $lat1)
Local $iLon = _Radian($lon2- $lon1)
Local $a = Sin($iLat / 2) * Sin($iLat / 2) + Cos(_Radian($lat1)) * Cos(_Radian($lat2)) * Sin($iLon / 2) * Sin($iLon / 2)
Local $c = 2 * ATan2(Sqrt($a), Sqrt(1 - $a))
Local $d = $iRadius * $c
Return Abs($d)
EndFunc
Func ATan2($y, $x)
Return (2 * ATan($y / ($x + Sqrt($x * $x + $y * $y))))
EndFunc
我正在尝试计算两个坐标之间的距离,但遇到了问题。我看过 JavaScript 的公式,但似乎无法将其正确转换为 Autoit。示例
$lat1 = 34.521630
$lon1 = -119.134680
$lat2 = 34.911463
$lon2 = -119.453130
;
;
; $distance = Some code here that will calculate distance
;
;
;
不是AutoIt本身的问题,你需要正确的算法:
#include <Math.au3>
$lat1 = 34.521630
$lon1 = -119.134680
$lat2 = 34.911463
$lon2 = -119.453130
ConsoleWrite(_distanceInKm($lat1, $lon1, $lat2, $lon2) & @CRLF)
Func _distanceInKm($lat1, $lon1, $lat2, $lon2)
Local $iRadius = 6371
Local $iLat = _Radian($lat2 - $lat1)
Local $iLon = _Radian($lon2- $lon1)
Local $a = Sin($iLat / 2) * Sin($iLat / 2) + Cos(_Radian($lat1)) * Cos(_Radian($lat2)) * Sin($iLon / 2) * Sin($iLon / 2)
Local $c = 2 * ATan2(Sqrt($a), Sqrt(1 - $a))
Local $d = $iRadius * $c
Return Abs($d)
EndFunc
Func ATan2($y, $x)
Return (2 * ATan($y / ($x + Sqrt($x * $x + $y * $y))))
EndFunc