给定一个以lat/long表示的现有点、以KM表示的距离和以弧度表示的方位,我想计算新的lat/long。This网站一次又一次地出现,但我就是无法得到适合我的公式。
上述链接中的公式为:
lat2 = asin(sin(lat1)*cos(d/R) + cos(lat1)*sin(d/R)*cos(θ))
lon2 = lon1 + atan2(sin(θ)*sin(d/R)*cos(lat1), cos(d/R)−sin(lat1)*sin(lat2))
上述公式适用于MSExcel,其中-
asin = arc sin()
d = distance (in any unit)
R = Radius of the earth (in the same unit as above)
and hence d/r = is the angular distance (in radians)
atan2(a,b) = arc tan(b/a)
θ is the bearing (in radians, clockwise from north);
这是我在Python中得到的代码。
import math
R = 6378.1 #Radius of the Earth
brng = 1.57 #Bearing is 90 degrees converted to radians.
d = 15 #Distance in km
#lat2 52.20444 - the lat result I'm hoping for
#lon2 0.36056 - the long result I'm hoping for.
lat1 = 52.20472 * (math.pi * 180) #Current lat point converted to radians
lon1 = 0.14056 * (math.pi * 180) #Current long point converted to radians
lat2 = math.asin( math.sin(lat1)*math.cos(d/R) +
math.cos(lat1)*math.sin(d/R)*math.cos(brng))
lon2 = lon1 + math.atan2(math.sin(brng)*math.sin(d/R)*math.cos(lat1),
math.cos(d/R)-math.sin(lat1)*math.sin(lat2))
print(lat2)
print(lon2)
我明白了
lat2 = 0.472492248844
lon2 = 79.4821662373
需要将答案从弧度转换回度。工作代码如下:
geopy库支持:
通过https://stackoverflow.com/a/4531227/37610找到
回答可能有点晚,但在测试了其他答案之后,它们似乎无法正常工作。这是我们系统使用的PHP代码。全方位工作。
PHP代码:
相关问题 更多 >
编程相关推荐