根据经纬度,写出计算两地距离的函数
时间: 2023-04-09 16:03:39 浏览: 100
可以使用 Haversine 公式来计算两地之间的距离,该公式基于经纬度计算球面上两点之间的距离。以下是一个 Python 函数示例:
```python
import math
def distance(lat1, lon1, lat2, lon2):
R = 6371 # 地球半径,单位为千米
dlat = math.radians(lat2 - lat1)
dlon = math.radians(lon2 - lon1)
a = math.sin(dlat/2) * math.sin(dlat/2) + math.cos(math.radians(lat1)) \
* math.cos(math.radians(lat2)) * math.sin(dlon/2) * math.sin(dlon/2)
c = 2 * math.atan2(math.sqrt(a), math.sqrt(1-a))
distance = R * c
return distance
```
其中,`lat1` 和 `lon1` 是第一个地点的纬度和经度,`lat2` 和 `lon2` 是第二个地点的纬度和经度。函数返回值为两地之间的距离,单位为千米。
相关问题
js根据经纬度计算两地之间的距离
实现方式:
1. 将经纬度转换为弧度
2. 根据经纬度计算两点之间的距离公式(Haversine formula)
代码实现:
```javascript
function getDistance(lat1, lon1, lat2, lon2) {
const R = 6371; // 地球半径,单位为千米
const dLat = (lat2 - lat1) * Math.PI / 180; // 转换为弧度
const dLon = (lon2 - lon1) * Math.PI / 180;
const a =
Math.sin(dLat / 2) * Math.sin(dLat / 2) +
Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) *
Math.sin(dLon / 2) * Math.sin(dLon / 2);
const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
const distance = R * c; // 单位为千米
return distance;
}
```
使用示例:
```javascript
const lat1 = 31.2304;
const lon1 = 121.4737;
const lat2 = 39.9042;
const lon2 = 116.4074;
const distance = getDistance(lat1, lon1, lat2, lon2);
console.log(distance); // 输出结果为:1060.62 单位为千米
```
注意事项:
1. 经度为正数表示东经,负数表示西经;纬度为正数表示北纬,负数表示南纬;
2. 需要注意经纬度的单位,上述代码中使用的是度数,需要将其转换为弧度;
3. 地球的半径不是一个精确的常数,不同的计算方法和测量方法会得到略有不同的结果。
java根据两地的经纬度值计算两地的距离
要计算两地之间的距离,可以使用经纬度坐标系统中的大圆距离公式(Haversine formula)。具体实现可以参考以下Java代码:
```java
public class DistanceCalculator {
private static final double EARTH_RADIUS = 6371; // 地球平均半径,单位为公里
public static double calculateDistance(double lat1, double lon1, double lat2, double lon2) {
double dLat = Math.toRadians(lat2 - lat1);
double dLon = Math.toRadians(lon2 - lon1);
double lat1Radians = Math.toRadians(lat1);
double lat2Radians = Math.toRadians(lat2);
double a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
Math.sin(dLon / 2) * Math.sin(dLon / 2) * Math.cos(lat1Radians) * Math.cos(lat2Radians);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
return EARTH_RADIUS * c; // 返回单位为公里的距离值
}
}
```
其中,`lat1`、`lon1`、`lat2`、`lon2` 分别代表两地的纬度和经度值。函数返回值为两地之间的距离,单位为公里。
相关推荐
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)