ElectricFenceUtil.java 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package io.platform.utils;
  2. /**
  3. * @author sx
  4. * @date 2020/09/04
  5. */
  6. public class ElectricFenceUtil {
  7. /**
  8. * 地球半径,单位 km
  9. */
  10. private static final double EARTH_RADIUS = 6378.137;
  11. /**
  12. * 根据经纬度,计算两点间的距离
  13. *
  14. * @param longitude1 第一个点的经度
  15. * @param latitude1 第一个点的纬度
  16. * @param longitude2 第二个点的经度
  17. * @param latitude2 第二个点的纬度
  18. * @return 返回距离 单位千米
  19. */
  20. public static double getDistance(double longitude1, double latitude1, double longitude2, double latitude2) {
  21. // 纬度
  22. double lat1 = Math.toRadians(latitude1);
  23. double lat2 = Math.toRadians(latitude2);
  24. // 经度
  25. double lng1 = Math.toRadians(longitude1);
  26. double lng2 = Math.toRadians(longitude2);
  27. // 纬度之差
  28. double a = lat1 - lat2;
  29. // 经度之差
  30. double b = lng1 - lng2;
  31. // 计算两点距离的公式
  32. double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
  33. Math.cos(lat1) * Math.cos(lat2) * Math.pow(Math.sin(b / 2), 2)));
  34. // 弧长乘地球半径, 返回单位: 米
  35. s = s * EARTH_RADIUS * 1000;
  36. return s;
  37. }
  38. }