我在Stackoverflow上发现了以下answer。
据我了解,这不是正确的方法。数学是线性的,但是坐标映射到球面。那么正确的方法是什么?
我有一个计算中点的函数,如何更改它以接受百分比作为参数。换句话说,找到一个介于1点和2点之间且与1点相距一个百分比的中点...
middle_point(lat1, long1, lat2, long2) {
// Longitude difference.
var d_long = (long2 - long1) * Math.PI / 180;
// Convert to radians.
lat1 = lat1 * Math.PI / 180;
lat2 = lat2 * Math.PI / 180;
long1 = long1 * Math.PI / 180;
var b_x = Math.cos(lat2) * Math.cos(d_long);
var b_y = Math.cos(lat2) * Math.sin(d_long);
var lat3 = Math.atan2(Math.sin(lat1) + Math.sin(lat2), Math.sqrt((Math.cos(lat1) + b_x) * (Math.cos(lat1) + b_x) + b_y * b_y));
var long3 = long1 + Math.atan2(b_y, Math.cos(lat1) + b_x);
// Return result.
return [long3 * 180/Math.PI, lat3 * 180/Math.PI];
}
答案 0 :(得分:1)
答案在这里:http://www.movable-type.co.uk/scripts/latlong.html和这里:http://www.edwilliams.org/avform.htm#Intermediate
这是您需要的功能,“ perc”在0到100之间:
%%timeit
generate_insert_values_series(df)
100 loops, best of 3: 2.69 ms per loop