java计算经纬度

// 获取到传递的只查询直径(米) 需要转为千米(小数)
 BigDecimal a = new BigDecimal(request.getSearchRadius());
 BigDecimal b = new BigDecimal(1000);
 BigDecimal nums = a.divide(b);
 log.info("======计算出来的搜索半径============="+nums);
 //查询RMS_SITE  中的经纬度,计算经纬度,request.getCustRoomLon() 获取参数的经纬度
           String num = "(SELECT y.int_id FROM RMS_SITE y where 1=1 and SQRT(" +
                    "  ((("+request.getCustRoomLon()+" - y.LONGITUDE) * ACOS(-1) * 12656 *" +
                    "  COS((("+request.getCustRoomLon()+" + y.LONGITUDE) / 2) * ACOS(-1) / 180) / 180) *" +
                    "  (("+request.getCustRoomLon()+" - y.LONGITUDE) * ACOS(-1) * 12656 *" +
                    "  COS((("+request.getCustRoomLon()+" + y.LONGITUDE) / 2) * ACOS(-1) / 180) / 180)) +" +
                    "  ((("+request.getCustRoomLat()+" - y.LATITUDE) * ACOS(-1) * 12656 / 180) *" +
                    "  (("+request.getCustRoomLat()+" - y.LATITUDE) * ACOS(-1) * 12656 / 180))) < "+nums+")";
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中,计算经纬度和海拔之间的距离可以使用 Haversine 公式来实现。Haversine 公式可以基于给定的经纬度和海拔数据来计算两个地点之间的距离。 首先,需要确保经纬度和海拔数据以正确的格式提供。通常情况下,经纬度以度或弧度形式提供,而海拔以米为单位提供。 接下来,可以定义一个方法来计算两个坐标点之间的距离。以下是一个示例的方法实现: ```java public double calculateDistance(double lat1, double lon1, double alt1, double lat2, double lon2, double alt2) { int earthRadius = 6371; // 地球平均半径,单位为公里 // 将经纬度转换为弧度 double lat1Rad = Math.toRadians(lat1); double lon1Rad = Math.toRadians(lon1); double lat2Rad = Math.toRadians(lat2); double lon2Rad = Math.toRadians(lon2); // 使用 Haversine 公式计算两个点之间的距离 double distance = 2 * earthRadius * Math.asin(Math.sqrt(Math.pow(Math.sin((lat2Rad - lat1Rad) / 2), 2) + Math.cos(lat1Rad) * Math.cos(lat2Rad) * Math.pow(Math.sin((lon2Rad - lon1Rad) / 2), 2))); // 考虑海拔差异 double elevationDiff = Math.abs(alt2 - alt1); // 计算实际距离,考虑海拔差异 double actualDistance = Math.sqrt(Math.pow(distance, 2) + Math.pow(elevationDiff, 2)); return actualDistance; } ``` 以上代码中的方法可以接受两个地点的经纬度和海拔数据作为参数,并返回两个地点之间的实际距离。其中,经纬度以度为单位,海拔以米为单位。 需要注意的是,计算出的距离是直线距离,并未考虑地球的曲率和地球表面的变化。如果需要更准确的结果,可以使用更复杂的地理计算库或API。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值