经纬度计算距离公式
时间: 2023-06-29 09:17:48 浏览: 51
经纬度计算距离可以使用 Haversine 公式,其公式如下:
a = sin²(Δlat/2) + cos(lat1) * cos(lat2) * sin²(Δlong/2)
c = 2 * atan2( √a, √(1−a) )
d = R * c
其中,lat1和lat2为两点的纬度,Δlat为纬度差,long1和long2为两点的经度,Δlong为经度差,R为地球半径,d为两点间的距离。
使用代码实现如下(假设地球半径为6371km):
```python
import math
def haversine(lat1, long1, lat2, long2):
R = 6371 # 地球半径
lat1, long1, lat2, long2 = map(math.radians, [lat1, long1, lat2, long2])
dlat = lat2 - lat1
dlong = long2 - long1
a = math.sin(dlat/2)**2 + math.cos(lat1) * math.cos(lat2) * math.sin(dlong/2)**2
c = 2 * math.atan2(math.sqrt(a), math.sqrt(1-a))
d = R * c
return d
```
其中,函数的参数分别为两点的纬度和经度,返回值为两点间的距离(单位为km)。
相关问题
echarts经纬度计算距离公式
Echarts经纬度计算距离公式可以使用Haversine公式来实现。Haversine公式根据两个经纬度点的经度、纬度坐标,计算出这两个点之间的距离。下面是Haversine公式的实现:
```
function getDistance(lat1, lng1, lat2, lng2) {
var radLat1 = lat1 * Math.PI / 180.0;
var radLat2 = lat2 * Math.PI / 180.0;
var a = radLat1 - radLat2;
var b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
var 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 * 6378.137; // 地球半径,单位为公里
s = Math.round(s * 10000) / 10000;
return s;
}
```
其中,lat1、lng1和lat2、lng2分别表示两个经纬度点的经度和纬度坐标,计算出的距离单位为公里。
java 经纬度计算距离公式
计算两个经纬度之间距离的公式是众所周知的 Haversine 公式,其 Java 实现可以参考以下代码:
```java
public class DistanceCalculator {
// 地球半径
private static final double EARTH_RADIUS = 6371.0;
/**
* 计算两个经纬度之间的距离
*
* @param lat1 第一个点的纬度
* @param lon1 第一个点的经度
* @param lat2 第二个点的纬度
* @param lon2 第二个点的经度
* @return 两点之间的距离,单位为千米
*/
public static double calculateDistance(double lat1, double lon1, double lat2, double lon2) {
// 将经纬度转换成弧度
double radiansLat1 = Math.toRadians(lat1);
double radiansLon1 = Math.toRadians(lon1);
double radiansLat2 = Math.toRadians(lat2);
double radiansLon2 = Math.toRadians(lon2);
// 计算经纬度的差值
double diffLat = radiansLat1 - radiansLat2;
double diffLon = radiansLon1 - radiansLon2;
// 计算两点之间的距离,单位为千米
double distance = 2 * EARTH_RADIUS * Math.asin(Math.sqrt(Math.pow(Math.sin(diffLat / 2), 2) +
Math.cos(radiansLat1) * Math.cos(radiansLat2) * Math.pow(Math.sin(diffLon / 2), 2)));
return distance;
}
}
```
其中,`EARTH_RADIUS` 是地球半径,单位为千米。`calculateDistance` 方法接收四个参数,分别是两个经纬度的纬度和经度值,返回计算出的两点之间的距离,单位为千米。