242*_*Eld 5 python gps coordinates bearing
我有一个问题让我在某些项目中停滞了一段时间。
我基本上希望使用我编写的某些脚本绘制的 x、y 点来捕获多边形。纬度、经度是多边形的中心 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]
Run Code Online (Sandbox Code Playgroud)
我的输入是这样的:
但是对于输入:
getcorsds1(42.189275, -76.85823, 0.5/3958.82, 30)
Run Code Online (Sandbox Code Playgroud)
我得到输出: [-1.3485899508698462, -76.8576637627568],但是这[42.2516666666667, -76.8097222222222]是正确的答案。
至于角距离,我简单地通过将英里距离除以地球半径(= 3958.82)来计算。
有人吗?
小智 5
使用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())
Run Code Online (Sandbox Code Playgroud)
结果是
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
Run Code Online (Sandbox Code Playgroud)
你为什么不使用好的库呢?
from geopy import Point
from geopy.distance import distance, VincentyDistance
# given: lat1, lon1, bearing, distMiles
lat2, lon2 = VincentyDistance(miles=distMiles).destination(Point(lat1, lon1), bearing)
Run Code Online (Sandbox Code Playgroud)
对于 lat1、lon1、distMiles、bearing = 42.189275、-76.85823、0.5、30,它返回 42.1955489、-76.853359。
| 归档时间: |
|
| 查看次数: |
14451 次 |
| 最近记录: |