python - 计算给定点、方位和距离的 gps 坐标

标签 python gps coordinates bearing

我有一个问题让我在某个项目中退缩了一段时间。

我基本上是想使用我编写的一些脚本绘制的 x、y 点来捕获多边形。 lat、lon 是多边形的中心 GPS 线,我正在寻找它周围的多边形。

这是我在 python 中的代码的一部分:

def getcords(lat, lon, dr, bearing):
    lat2=asin(sin(lat)*cos(dr)+cos(lat)*sin(dr)*cos(bearing))
    lon2=lon+atan2(sin(bearing)*sin(dr)*cos(lat),cos(dr)-sin(lat)*sin(lat2))
    return [lat2,lon2]

我的输入是这样的:

  • 纬度、经度 - 以十进制表示。
  • dr - 是以英里为单位的距离除以地球的半径(=3958.82) 计算出的角度
  • 方位 - 在 0-360 度之间。

但是对于输入:

getcorsds1(42.189275, -76.85823, 0.5/3958.82, 30)

我得到输出:[-1.3485899508698462, -76.8576637627568],但是 [42.2516666666667, -76.8097222222222] 是正确答案。

至于角距离,我简单地用距离(英里)除以地球半径(=3958.82)来计算。

有人吗?

最佳答案

geopy v2.0.0 (+公里而不是英里)

from geopy import Point                                                                                                                                                                       
from geopy.distance import geodesic                                                                                                                                                           
                                                                                                                                                                                              
distKm = 1                                                                                                                                                                                    
lat1 = 35.68096477080332                                                                                                                                                                      
lon1 = 139.76720809936523                                                                                                                                                                     
                                                                                                                                                                                              
print('center', lat1, lon1)                                                                                                                                                                   
print('north', geodesic(kilometers=distKm).destination(Point(lat1, lon1), 0).format_decimal())                                                                                                
print('east', geodesic(kilometers=distKm).destination(Point(lat1, lon1), 90).format_decimal())                                                                                                
print('south', geodesic(kilometers=distKm).destination(Point(lat1, lon1), 180).format_decimal())                                                                                              
print('west', geodesic(kilometers=distKm).destination(Point(lat1, lon1), 270).format_decimal()) 

结果是

center 35.6809647708 139.767208099
north 35.6899775841, 139.767208099
east 35.680964264, 139.778254714
south 35.6719519439, 139.767208099
west 35.680964264, 139.756161485

关于python - 计算给定点、方位和距离的 gps 坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4530943/

相关文章:

ios - Annotation.coordinate 不匹配 coordinate.latitude 和 coordinate.longitude

Python:将excel中的数据转化为饼图

iPhone Robotics Visual-SLAM算法实现

android - logcat 中的 LocSvc 错误消息

iOS:是否可以要求核心位置框架仅使用蜂窝塔或仅使用 WiFi 或使用 GPS 天线来获取位置?

ios - 如何将坐标原点设置为左侧和底部uiview

image - 查找图像中对象的坐标的最简单方法是什么?

python - 在python中绘制像蛇和梯子棋盘游戏的网格

python - 制作 Keras 模型时将数据拆分为训练、测试和评估

python - 取具有相同值的每个元素的平均值的最快方法?