Class Polygon


  • public final class Polygon
    extends LatLonGeometry
    Represents a closed polygon on the earth's surface. You can either construct the Polygon directly yourself with double[] coordinates, or use fromGeoJSON(java.lang.String) if you have a polygon already encoded as a GeoJSON string.

    NOTES:

    1. Coordinates must be in clockwise order, except for holes. Holes must be in counter-clockwise order.
    2. The polygon must be closed: the first and last coordinates need to have the same values.
    3. The polygon must not be self-crossing, otherwise may result in unexpected behavior.
    4. All latitude/longitude values must be in decimal degrees.
    5. Polygons cannot cross the 180th meridian. Instead, use two polygons: one on each side.
    6. For more advanced GeoSpatial indexing and query operations see the spatial-extras module
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private Polygon[] holes  
      double maxLat
      maximum latitude of this polygon's bounding box area
      double maxLon
      maximum longitude of this polygon's bounding box area
      double minLat
      minimum latitude of this polygon's bounding box area
      double minLon
      minimum longitude of this polygon's bounding box area
      private double[] polyLats  
      private double[] polyLons  
      private GeoUtils.WindingOrder windingOrder
      winding order of the vertices
    • Constructor Summary

      Constructors 
      Constructor Description
      Polygon​(double[] polyLats, double[] polyLons, Polygon... holes)
      Creates a new Polygon from the supplied latitude/longitude array, and optionally any holes.
    • Field Detail

      • polyLats

        private final double[] polyLats
      • polyLons

        private final double[] polyLons
      • holes

        private final Polygon[] holes
      • minLat

        public final double minLat
        minimum latitude of this polygon's bounding box area
      • maxLat

        public final double maxLat
        maximum latitude of this polygon's bounding box area
      • minLon

        public final double minLon
        minimum longitude of this polygon's bounding box area
      • maxLon

        public final double maxLon
        maximum longitude of this polygon's bounding box area
    • Constructor Detail

      • Polygon

        public Polygon​(double[] polyLats,
                       double[] polyLons,
                       Polygon... holes)
        Creates a new Polygon from the supplied latitude/longitude array, and optionally any holes.
    • Method Detail

      • numPoints

        public int numPoints()
        returns the number of vertex points
      • getPolyLats

        public double[] getPolyLats()
        Returns a copy of the internal latitude array
      • getPolyLat

        public double getPolyLat​(int vertex)
        Returns latitude value at given index
      • getPolyLons

        public double[] getPolyLons()
        Returns a copy of the internal longitude array
      • getPolyLon

        public double getPolyLon​(int vertex)
        Returns longitude value at given index
      • getHoles

        public Polygon[] getHoles()
        Returns a copy of the internal holes array
      • getHole

        Polygon getHole​(int i)
      • getWindingOrder

        public GeoUtils.WindingOrder getWindingOrder()
        Returns the winding order (CW, COLINEAR, CCW) for the polygon shell
      • numHoles

        public int numHoles()
        returns the number of holes for the polygon
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • verticesToGeoJSON

        public static java.lang.String verticesToGeoJSON​(double[] lats,
                                                         double[] lons)
      • toGeoJSON

        public java.lang.String toGeoJSON()
        prints polygons as geojson
      • fromGeoJSON

        public static Polygon[] fromGeoJSON​(java.lang.String geojson)
                                     throws java.text.ParseException
        Parses a standard GeoJSON polygon string. The type of the incoming GeoJSON object must be a Polygon or MultiPolygon, optionally embedded under a "type: Feature". A Polygon will return as a length 1 array, while a MultiPolygon will be 1 or more in length.

        See the GeoJSON specification.

        Throws:
        java.text.ParseException