球面距离其实是一段弧长,计算弧长的公式是
l/2π*r=θ/2π
故 l=r*θ
其中r为地球半径
1. Python版本:环境:Python3、math、numpy
- EARTH_REDIUS = 6378.137
- import math
- def rad(d):
- return d * math.pi / 180.0
- def getDistance(lat1, lng1, lat2, lng2):
- radLat1 = rad(lat1)
- radLat2 = rad(lat2)
- a = radLat1 - radLat2
- b = rad(lng1) - rad(lng2)
- s = 2 * math.asin(math.sqrt(math.pow(math.sin(a/2), 2) + math.cos(radLat1) * math.cos(radLat2) * math.pow(math.sin(b/2), 2)))
- s = s * EARTH_REDIUS
- return s
2. Javascript版本:
- function getDistance(lat1, lng1, lat2, lng2) {
- var radLat1 = toRadians(lat1);
- var radLat2 = toRadians(lat2);
- var deltaLat = radLat1 - radLat2;
- var deltaLng = toRadians(lng1) - toRadians(lng2);
- var dis = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(deltaLat / 2), 2)
- + Math.cos(radLat1) *
- Math.cos(radLat2) *
- Math.pow(Math.sin(deltaLng / 2), 2)));
- return dis * 6378.137;
- function toRadians(d) {
- return d * Math.PI / 180;
- }
- }


雷达卡




京公网安备 11010802022788号







