您的位置:首页 > 其它

经纬度与距离米的计算

2017-09-20 00:00 246 查看
经纬度与距离米的计算:

地球半径R=6371km,2πR/360=111km,

也就是说经线上,纬度1°约为111km,

纬线上,赤道上,经度1°约为111km,

越往两级走,纬线圈越小,纬线圈半径为r=Rcos(α),α为当前纬线的纬度

纬线圈上经度1°对应的距离为:2πr/360=111cos(α)km

现在可以大致计算出radius距离对应该纬线上的经度到底增加多少,纬度增加了多少

△lat/radius=1°/111km

△lng/radius=1°/(111cos(α))km

eg:已知所有目标点的经纬度,根据中心中心点位置:lng,lat,找出范围在radius 内的所有点。

方案:

根据经纬度与距离的比值,计算出radius距离对应的经纬度△lng,△lat,

第一步,矩形过滤:选出在范围内的经纬度的地点:

lng-△lng<newlng<lng+△lng&&lat-△lat<newlat<lat+△lng

第二步,圆形过滤:

计算所有矩形内的党支部到中心点的距离,筛选出距离小于radius的点,已知两点经纬度,求距离。函数如下(网上找的):

public static double getDistance(double longitude1, double latitude1, double longitude2, double latitude2) {
// 维度
double lat1 = (Math.PI / 180) * latitude1;
double lat2 = (Math.PI / 180) * latitude2;

// 经度
double lon1 = (Math.PI / 180) * longitude1;
double lon2 = (Math.PI / 180) * longitude2;

// 地球半径
double R = 6371;

// 两点间距离 km,如果想要米的话,结果*1000就可以了
double d = Math.acos(Math.sin(lat1) * Math.sin(lat2) + Math.cos(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1)) * R;

return d * 1000;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  经纬度距离计算