Class GeoUtils



  • public class GeoUtils
    extends Object
    • Field Detail

      • EARTH_SEMI_MAJOR_AXIS

        public static final double EARTH_SEMI_MAJOR_AXIS
        Earth ellipsoid major axis defined by WGS 84 in meters
        See Also:
        Constant Field Values
      • EARTH_SEMI_MINOR_AXIS

        public static final double EARTH_SEMI_MINOR_AXIS
        Earth ellipsoid minor axis defined by WGS 84 in meters
        See Also:
        Constant Field Values
      • EARTH_MEAN_RADIUS

        public static final double EARTH_MEAN_RADIUS
        Earth mean radius defined by WGS 84 in meters
        See Also:
        Constant Field Values
      • EARTH_AXIS_RATIO

        public static final double EARTH_AXIS_RATIO
        Earth axis ratio defined by WGS 84 (0.996647189335)
        See Also:
        Constant Field Values
      • EARTH_EQUATOR

        public static final double EARTH_EQUATOR
        Earth ellipsoid equator length in meters
        See Also:
        Constant Field Values
      • EARTH_POLAR_DISTANCE

        public static final double EARTH_POLAR_DISTANCE
        Earth ellipsoid polar distance in meters
        See Also:
        Constant Field Values
    • Method Detail

      • earthDiameter

        public static double earthDiameter(double latitude)
        Return an approximate value of the diameter of the earth (in meters) at the given latitude (in radians).
      • geoHashCellWidth

        public static double geoHashCellWidth(int level)
        Calculate the width (in meters) of geohash cells at a specific level
        Parameters:
        level - geohash level must be greater or equal to zero
        Returns:
        the width of cells at level in meters
      • quadTreeCellWidth

        public static double quadTreeCellWidth(int level)
        Calculate the width (in meters) of quadtree cells at a specific level
        Parameters:
        level - quadtree level must be greater or equal to zero
        Returns:
        the width of cells at level in meters
      • geoHashCellHeight

        public static double geoHashCellHeight(int level)
        Calculate the height (in meters) of geohash cells at a specific level
        Parameters:
        level - geohash level must be greater or equal to zero
        Returns:
        the height of cells at level in meters
      • quadTreeCellHeight

        public static double quadTreeCellHeight(int level)
        Calculate the height (in meters) of quadtree cells at a specific level
        Parameters:
        level - quadtree level must be greater or equal to zero
        Returns:
        the height of cells at level in meters
      • geoHashCellSize

        public static double geoHashCellSize(int level)
        Calculate the size (in meters) of geohash cells at a specific level
        Parameters:
        level - geohash level must be greater or equal to zero
        Returns:
        the size of cells at level in meters
      • quadTreeCellSize

        public static double quadTreeCellSize(int level)
        Calculate the size (in meters) of quadtree cells at a specific level
        Parameters:
        level - quadtree level must be greater or equal to zero
        Returns:
        the size of cells at level in meters
      • quadTreeLevelsForPrecision

        public static int quadTreeLevelsForPrecision(double meters)
        Calculate the number of levels needed for a specific precision. Quadtree cells will not exceed the specified size (diagonal) of the precision.
        Parameters:
        meters - Maximum size of cells in meters (must greater than zero)
        Returns:
        levels need to achieve precision
      • quadTreeLevelsForPrecision

        public static int quadTreeLevelsForPrecision(String distance)
        Calculate the number of levels needed for a specific precision. QuadTree cells will not exceed the specified size (diagonal) of the precision.
        Parameters:
        distance - Maximum size of cells as unit string (must greater or equal to zero)
        Returns:
        levels need to achieve precision
      • geoHashLevelsForPrecision

        public static int geoHashLevelsForPrecision(double meters)
        Calculate the number of levels needed for a specific precision. GeoHash cells will not exceed the specified size (diagonal) of the precision.
        Parameters:
        meters - Maximum size of cells in meters (must greater or equal to zero)
        Returns:
        levels need to achieve precision
      • geoHashLevelsForPrecision

        public static int geoHashLevelsForPrecision(String distance)
        Calculate the number of levels needed for a specific precision. GeoHash cells will not exceed the specified size (diagonal) of the precision.
        Parameters:
        distance - Maximum size of cells as unit string (must greater or equal to zero)
        Returns:
        levels need to achieve precision
      • normalizeLon

        public static double normalizeLon(double lon)
        Normalize longitude to lie within the -180 (exclusive) to 180 (inclusive) range.
        Parameters:
        lon - Longitude to normalize
        Returns:
        The normalized longitude.
      • normalizeLat

        public static double normalizeLat(double lat)
        Normalize latitude to lie within the -90 to 90 (both inclusive) range.

        Note: You should not normalize longitude and latitude separately, because when normalizing latitude it may be necessary to add a shift of 180° in the longitude. For this purpose, you should call the normalizePoint(GeoPoint) function.
        Parameters:
        lat - Latitude to normalize
        Returns:
        The normalized latitude.
        See Also:
        normalizePoint(GeoPoint)
      • normalizePoint

        public static void normalizePoint(GeoPoint point)
        Normalize the geo Point for its coordinates to lie within their respective normalized ranges.

        Note: A shift of 180° is applied in the longitude if necessary, in order to normalize properly the latitude.
        Parameters:
        point - The point to normalize in-place.
      • normalizePoint

        public static void normalizePoint(GeoPoint point,
                                          boolean normLat,
                                          boolean normLon)
        Normalize the geo Point for the given coordinates to lie within their respective normalized ranges.

        You can control which coordinate gets normalized with the two flags.

        Note: A shift of 180° is applied in the longitude if necessary, in order to normalize properly the latitude. If normalizing latitude but not longitude, it is assumed that the longitude is in the form x+k*360, with x in ]-180;180], and k is meaningful to the application. Therefore x will be adjusted while keeping k preserved.
        Parameters:
        point - The point to normalize in-place.
        normLat - Whether to normalize latitude or leave it as is.
        normLon - Whether to normalize longitude.