如何利用经纬度来计算距离,如何利用经纬度计算面积

首页 > 机动车 > 作者:YD1662023-05-15 05:58:08

计算两点之间的距离平面

平面上计算距离比较简单,假设A点(x1,y1),B点(x2,y2),则AB两点之间的距离公式为:

如何利用经纬度来计算距离,如何利用经纬度计算面积(1)

import math # 计算两点之间的距离 # 输入两个点的坐标,输出距离 def distance(x1, y1, x2, y2): dis = math.sqrt((x1 - x2) * (x1 - x2) (y1 - y2) * (y1 - y2)) return dis print(distance(0, 0, 100, 100)) # 141.4213562373095球面

球面距离公式是计算球面上两点间距离的公式。假设点A (经度角α1,纬度角β1) ;点B (经度角α2,纬度角β2),r为球体半径,则两点之间的距离为:

如何利用经纬度来计算距离,如何利用经纬度计算面积(2)

如何利用经纬度来计算距离,如何利用经纬度计算面积(3)

在假设参考球体为正球体时,可以按照球面距离公式求解两点之间的大地线或大圆(Great Circle)距离。

import math # 计算两点之间的球面距离 # 输入两个点的经纬度坐标,输出为距离,单位为米 def distance(lon1, lat1, lon2, lat2): r = 6371000 # 地球平均半径 α1 = math.radians(lon1) # 经度角α1 β1 = math.radians(lat1) # 纬度角β1 α2 = math.radians(lon2) # 经度角α2 β2 = math.radians(lat2) # 纬度角β1 return r * math.acos(math.cos(β1) * math.cos(β2) * math.cos(α1 - α2) math.sin(β1) * math.sin(β2)) # 球面距离公式 print(distance(120, 30, 116, 40)) # 1169754.0702297834

因为球面距离公式中有cos(α1-α2),当两点之间的距离很短时,余弦函数会得出0.99.....的结果,因为四舍五入,会导致较大的误差。Haversine方法进行了某种变换消除了cos(α1-α2),因此可以避免上述问题。

需要说明的是,随着计算机性能的提升,以当前计算机的一般计算精度,这已经不是问题。用计算器可能会有这个问题。

同样地,假设点A (经度角α1,纬度角β1) ,点B (经度角α2,纬度角β2)。Haversine公式如下:

如何利用经纬度来计算距离,如何利用经纬度计算面积(4)

首页 12下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.