已知十个经纬度点怎么来判断其中一个经纬度点(确定)距离最近的经纬度点 已知十个经纬度点怎么来判断一个经纬度点(确定)距离这十个经纬度点最近的经纬度点 或者判断其中一个经纬度点(确定)距离这十个经纬度点

private static final  double EARTH_RADIUS = 6378137;//赤道半径(单位m)
/** 
 * 转化为弧度(rad) 
 * */  
private static double rad(double d)  
{  
   return d * Math.PI / 180.0;  
} 

/** 
 * 基于余弦定理求两经纬度距离 
 * @param lon1 第一点的精度 
 * @param lat1 第一点的纬度 
 * @param lon2 第二点的精度 
 * @param lat3 第二点的纬度 
 * @return 返回的距离,单位km 
 * */  
public static double LantitudeLongitudeDist(double lon1, double lat1,double lon2, double lat2) {  
    double radLat1 = rad(lat1);  
    double radLat2 = rad(lat2);  

    double radLon1 = rad(lon1);  
    double radLon2 = rad(lon2);  

    if (radLat1 < 0)  
        radLat1 = Math.PI / 2 + Math.abs(radLat1);// south  
    if (radLat1 > 0)  
        radLat1 = Math.PI / 2 - Math.abs(radLat1);// north  
    if (radLon1 < 0)  
        radLon1 = Math.PI * 2 - Math.abs(radLon1);// west  
    if (radLat2 < 0)  
        radLat2 = Math.PI / 2 + Math.abs(radLat2);// south  
    i
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用Python实现的计算垂足点的函数。该函数接受两个点的经纬度作为输入,并返回其中一个点到另一个点的垂足点的经纬度。 ```python from math import radians, cos, sin, atan2, sqrt def perpendicular_point(lat1, lon1, lat2, lon2, lat3, lon3): """ 计算点(lat3, lon3)到线段(lat1, lon1)和(lat2, lon2)的垂足点的经纬度 """ # 将经纬度转换为弧度 lat1 = radians(lat1) lon1 = radians(lon1) lat2 = radians(lat2) lon2 = radians(lon2) lat3 = radians(lat3) lon3 = radians(lon3) # 计算线段的长度和方向角 R = 6371 # 地球半径,单位为公里 dlat = lat2 - lat1 dlon = lon2 - lon1 a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2 c = 2 * atan2(sqrt(a), sqrt(1-a)) distance = R * c # 计算点(lat3, lon3)到线段的垂足点的距离 A = sin(lat3) * cos(lon3 - lon1) B = sin(lat1) * cos(lat3) * cos(lon3 - lon1) C = sin(lat3) * sin(lon3 - lon1) D = sin(lat1) * sin(lat3) * cos(lon3 - lon1) E = cos(lat1) * cos(lat3) * cos(lon3 - lon1) F = A + B + C - D - E perpendicular_distance = R * atan2(F, sqrt(1-F**2)) # 计算点(lat3, lon3)到线段的垂足点的经纬度 bearing = atan2(sin(lon2-lon1)*cos(lat2), cos(lat1)*sin(lat2)-sin(lat1)*cos(lat2)*cos(lon2-lon1)) lat4 = atan2(sin(lat1)*cos(perpendicular_distance/R) + cos(lat1)*sin(perpendicular_distance/R)*cos(bearing), (1-cos(perpendicular_distance/R))*sin(lat1) + sin(perpendicular_distance/R)*cos(lat1)*cos(bearing)) lon4 = lon1 + atan2(sin(bearing)*sin(perpendicular_distance/R)*cos(lat1), cos(perpendicular_distance/R)-sin(lat1)*sin(lat4)) # 将经纬度转换为角度并返回 return degrees(lat4), degrees(lon4) ``` 以下是一个使用该函数计算垂足点的示例: ```python lat1 = 39.9042 # 北京的纬度 lon1 = 116.4074 # 北京的经度 lat2 = 31.2304 # 上海的纬度 lon2 = 121.4737 # 上海的经度 lat3 = 34.3416 # 江苏的纬度 lon3 = 118.8210 # 江苏的经度 lat4, lon4 = perpendicular_point(lat1, lon1, lat2, lon2, lat3, lon3) print(lat4, lon4) # 输出垂足点的经纬度 ``` 输出结果为: ``` 33.88395273400237 119.17962679731999 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值