另一个 lat lng 的 x km 内的随机 lat lng 坐标
random lat lng coordinates within x km's of another lat lng
我们有一个由纬度和经度指定的位置
我们想在此位置的 20 公里范围内生成一些其他随机经纬度位置
有没有人对此有好的公式
在0..1
范围内生成两个统一的随机值r
和Fi
计算距离为 d = Radius * Sqrt(r)
(description here for plane circle)
计算轴承为 Theta=2 * Pi * Fi
找到给定中心点的 lat/lon 坐标,并在 Destination point given distance and bearing from start point
部分计算 d 和 Theta 作为 described here
JavaScript:
(all angles
in radians)
var φ2 = Math.asin( Math.sin(φ1)*Math.cos(d/R) +
Math.cos(φ1)*Math.sin(d/R)*Math.cos(θ) );
var λ2 = λ1 + Math.atan2(Math.sin(θ)*Math.sin(d/R)*Math.cos(φ1),
Math.cos(d/R)-Math.sin(φ1)*Math.sin(φ2));
where φ is latitude, λ is longitude,
θ is the bearing (clockwise from north), d being the distance travelled,
R the earth’s radius
我们有一个由纬度和经度指定的位置
我们想在此位置的 20 公里范围内生成一些其他随机经纬度位置
有没有人对此有好的公式
在0..1
范围内生成两个统一的随机值r
和Fi
计算距离为 d = Radius * Sqrt(r)
(description here for plane circle)
计算轴承为 Theta=2 * Pi * Fi
找到给定中心点的 lat/lon 坐标,并在 Destination point given distance and bearing from start point
JavaScript:
(all angles
in radians)
var φ2 = Math.asin( Math.sin(φ1)*Math.cos(d/R) +
Math.cos(φ1)*Math.sin(d/R)*Math.cos(θ) );
var λ2 = λ1 + Math.atan2(Math.sin(θ)*Math.sin(d/R)*Math.cos(φ1),
Math.cos(d/R)-Math.sin(φ1)*Math.sin(φ2));
where φ is latitude, λ is longitude,
θ is the bearing (clockwise from north), d being the distance travelled,
R the earth’s radius