org.apache.lucene.geo

## Class Polygon

- java.lang.Object
- - org.apache.lucene.geo.Polygon

-     public final class Polygon
      extends Object

  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
  WARNING: This API is experimental and might change in incompatible ways in the next release.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `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

  - ### Constructor Summary

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

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `equals(Object obj)`
    `static Polygon[]` | `fromGeoJSON(String geojson)` Parses a standard GeoJSON polygon string.
    `Polygon[]` | `getHoles()` Returns a copy of the internal holes array
    `double` | `getPolyLat(int vertex)` Returns latitude value at given index
    `double[]` | `getPolyLats()` Returns a copy of the internal latitude array
    `double` | `getPolyLon(int vertex)` Returns longitude value at given index
    `double[]` | `getPolyLons()` Returns a copy of the internal longitude array
    `GeoUtils.WindingOrder` | `getWindingOrder()` Returns the winding order (CW, COLINEAR, CCW) for the polygon shell
    `int` | `hashCode()`
    `int` | `numHoles()` returns the number of holes for the polygon
    `int` | `numPoints()` returns the number of vertex points
    `String` | `toGeoJSON()` prints polygons as geojson
    `String` | `toString()`
    `static String` | `verticesToGeoJSON(double[] lats, double[] lons)`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### 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

    - #### 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 `Object`

    - #### equals

          public boolean equals(Object obj)

      Overrides:
        `equals` in class `Object`

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`

    - #### verticesToGeoJSON

          public static String verticesToGeoJSON(double[] lats,
                                                 double[] lons)

    - #### toGeoJSON

          public String toGeoJSON()

      prints polygons as geojson

    - #### fromGeoJSON

          public static Polygon[] fromGeoJSON(String geojson)
                                       throws 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:
        `ParseException`

Copyright © 2000-2018 Apache Software Foundation. All Rights Reserved.