Class GeofenceGeometry

java.lang.Object
software.amazon.awssdk.services.location.model.GeofenceGeometry
All Implemented Interfaces:
Serializable, SdkPojo, ToCopyableBuilder<GeofenceGeometry.Builder,GeofenceGeometry>

@Generated("software.amazon.awssdk:codegen") public final class GeofenceGeometry extends Object implements SdkPojo, Serializable, ToCopyableBuilder<GeofenceGeometry.Builder,GeofenceGeometry>

Contains the geofence geometry details.

A geofence geometry can be a circle, a polygon, or a multipolygon. Polygon and MultiPolygon geometries can be defined using their respective parameters, or encoded in Geobuf format using the Geobuf parameter. Including multiple geometry types in the same request will return a validation error.

Amazon Location doesn't currently support polygons that cross the antimeridian.

See Also:
  • Method Details

    • hasPolygon

      public final boolean hasPolygon()
      For responses, this returns true if the service returned a value for the Polygon property. This DOES NOT check that the value is non-empty (for which, you should check the isEmpty() method on the property). This is useful because the SDK will never return a null collection or map, but you may need to differentiate between the service returning nothing (or null) and the service returning an empty collection or map. For requests, this returns true if a value for the property was specified in the request builder, and false if a value was not specified.
    • polygon

      public final List<List<List<Double>>> polygon()

      A Polygon is a list of up to 250 linear rings which represent the shape of a geofence. This list must include 1 exterior ring (representing the outer perimeter of the geofence), and can optionally include up to 249 interior rings (representing polygonal spaces within the perimeter, which are excluded from the geofence area).

      A linear ring is an array of 4 or more vertices, where the first and last vertex are the same (to form a closed boundary). Each vertex is a 2-dimensional point represented as an array of doubles of length 2: [longitude, latitude].

      Each linear ring is represented as an array of arrays of doubles ( [[longitude, latitude], [longitude, latitude], ...]). The vertices for the exterior ring must be listed in counter-clockwise sequence. Vertices for all interior rings must be listed in clockwise sequence.

      The list of linear rings that describe the entire Polygon is represented as an array of arrays of arrays of doubles ( [[[longitude, latitude], [longitude, latitude], ...], [[longitude, latitude], [longitude, latitude], ...], ...] ). The exterior ring must be listed first, before any interior rings.

      The following additional requirements and limitations apply to geometries defined using the Polygon parameter:

      • The entire Polygon must consist of no more than 1,000 vertices, including all vertices from the exterior ring and all interior rings.

      • Rings must not touch or cross each other.

      • All interior rings must be fully contained within the exterior ring.

      • Interior rings must not contain other interior rings.

      • No ring is permitted to intersect itself.

      Attempts to modify the collection returned by this method will result in an UnsupportedOperationException.

      This method will never return null. If you would like to know whether the service returned this field (so that you can differentiate between null and empty), you can use the hasPolygon() method.

      Returns:
      A Polygon is a list of up to 250 linear rings which represent the shape of a geofence. This list must include 1 exterior ring (representing the outer perimeter of the geofence), and can optionally include up to 249 interior rings (representing polygonal spaces within the perimeter, which are excluded from the geofence area).

      A linear ring is an array of 4 or more vertices, where the first and last vertex are the same (to form a closed boundary). Each vertex is a 2-dimensional point represented as an array of doubles of length 2: [longitude, latitude].

      Each linear ring is represented as an array of arrays of doubles ( [[longitude, latitude], [longitude, latitude], ...]). The vertices for the exterior ring must be listed in counter-clockwise sequence. Vertices for all interior rings must be listed in clockwise sequence.

      The list of linear rings that describe the entire Polygon is represented as an array of arrays of arrays of doubles ( [[[longitude, latitude], [longitude, latitude], ...], [[longitude, latitude], [longitude, latitude], ...], ...] ). The exterior ring must be listed first, before any interior rings.

      The following additional requirements and limitations apply to geometries defined using the Polygon parameter:

      • The entire Polygon must consist of no more than 1,000 vertices, including all vertices from the exterior ring and all interior rings.

      • Rings must not touch or cross each other.

      • All interior rings must be fully contained within the exterior ring.

      • Interior rings must not contain other interior rings.

      • No ring is permitted to intersect itself.

    • circle

      public final Circle circle()

      A circle on the earth, as defined by a center point and a radius.

      Returns:
      A circle on the earth, as defined by a center point and a radius.
    • geobuf

      public final SdkBytes geobuf()

      Geobuf is a compact binary encoding for geographic data that provides lossless compression of GeoJSON polygons. The Geobuf must be Base64-encoded.

      This parameter can contain a Geobuf-encoded GeoJSON geometry object of type Polygon OR MultiPolygon. For more information and specific configuration requirements for these object types, see Polygon and MultiPolygon.

      The following limitations apply specifically to geometries defined using the Geobuf parameter, and supercede the corresponding limitations of the Polygon and MultiPolygon parameters:

      • A Polygon in Geobuf format can have up to 25,000 rings and up to 100,000 total vertices, including all vertices from all component rings.

      • A MultiPolygon in Geobuf format can contain up to 10,000 Polygons and up to 100,000 total vertices, including all vertices from all component Polygons.

      Returns:
      Geobuf is a compact binary encoding for geographic data that provides lossless compression of GeoJSON polygons. The Geobuf must be Base64-encoded.

      This parameter can contain a Geobuf-encoded GeoJSON geometry object of type Polygon OR MultiPolygon. For more information and specific configuration requirements for these object types, see Polygon and MultiPolygon.

      The following limitations apply specifically to geometries defined using the Geobuf parameter, and supercede the corresponding limitations of the Polygon and MultiPolygon parameters:

      • A Polygon in Geobuf format can have up to 25,000 rings and up to 100,000 total vertices, including all vertices from all component rings.

      • A MultiPolygon in Geobuf format can contain up to 10,000 Polygons and up to 100,000 total vertices, including all vertices from all component Polygons.

    • hasMultiPolygon

      public final boolean hasMultiPolygon()
      For responses, this returns true if the service returned a value for the MultiPolygon property. This DOES NOT check that the value is non-empty (for which, you should check the isEmpty() method on the property). This is useful because the SDK will never return a null collection or map, but you may need to differentiate between the service returning nothing (or null) and the service returning an empty collection or map. For requests, this returns true if a value for the property was specified in the request builder, and false if a value was not specified.
    • multiPolygon

      public final List<List<List<List<Double>>>> multiPolygon()

      A MultiPolygon is a list of up to 250 Polygon elements which represent the shape of a geofence. The Polygon components of a MultiPolygon geometry can define separate geographical areas that are considered part of the same geofence, perimeters of larger exterior areas with smaller interior spaces that are excluded from the geofence, or some combination of these use cases to form complex geofence boundaries.

      For more information and specific configuration requirements for the Polygon components that form a MultiPolygon, see Polygon.

      The following additional requirements and limitations apply to geometries defined using the MultiPolygon parameter:

      • The entire MultiPolygon must consist of no more than 1,000 vertices, including all vertices from all component Polygons.

      • Each edge of a component Polygon must intersect no more than 5 edges from other Polygons. Parallel edges that are shared but do not cross are not counted toward this limit.

      • The total number of intersecting edges of component Polygons must be no more than 100,000. Parallel edges that are shared but do not cross are not counted toward this limit.

      Attempts to modify the collection returned by this method will result in an UnsupportedOperationException.

      This method will never return null. If you would like to know whether the service returned this field (so that you can differentiate between null and empty), you can use the hasMultiPolygon() method.

      Returns:
      A MultiPolygon is a list of up to 250 Polygon elements which represent the shape of a geofence. The Polygon components of a MultiPolygon geometry can define separate geographical areas that are considered part of the same geofence, perimeters of larger exterior areas with smaller interior spaces that are excluded from the geofence, or some combination of these use cases to form complex geofence boundaries.

      For more information and specific configuration requirements for the Polygon components that form a MultiPolygon, see Polygon.

      The following additional requirements and limitations apply to geometries defined using the MultiPolygon parameter:

      • The entire MultiPolygon must consist of no more than 1,000 vertices, including all vertices from all component Polygons.

      • Each edge of a component Polygon must intersect no more than 5 edges from other Polygons. Parallel edges that are shared but do not cross are not counted toward this limit.

      • The total number of intersecting edges of component Polygons must be no more than 100,000. Parallel edges that are shared but do not cross are not counted toward this limit.

    • toBuilder

      public GeofenceGeometry.Builder toBuilder()
      Description copied from interface: ToCopyableBuilder
      Take this object and create a builder that contains all of the current property values of this object.
      Specified by:
      toBuilder in interface ToCopyableBuilder<GeofenceGeometry.Builder,GeofenceGeometry>
      Returns:
      a builder for type T
    • builder

      public static GeofenceGeometry.Builder builder()
    • serializableBuilderClass

      public static Class<? extends GeofenceGeometry.Builder> serializableBuilderClass()
    • hashCode

      public final int hashCode()
      Overrides:
      hashCode in class Object
    • equals

      public final boolean equals(Object obj)
      Overrides:
      equals in class Object
    • equalsBySdkFields

      public final boolean equalsBySdkFields(Object obj)
      Description copied from interface: SdkPojo
      Indicates whether some other object is "equal to" this one by SDK fields. An SDK field is a modeled, non-inherited field in an SdkPojo class, and is generated based on a service model.

      If an SdkPojo class does not have any inherited fields, equalsBySdkFields and equals are essentially the same.

      Specified by:
      equalsBySdkFields in interface SdkPojo
      Parameters:
      obj - the object to be compared with
      Returns:
      true if the other object equals to this object by sdk fields, false otherwise.
    • toString

      public final String toString()
      Returns a string representation of this object. This is useful for testing and debugging. Sensitive data will be redacted from this string using a placeholder value.
      Overrides:
      toString in class Object
    • getValueForField

      public final <T> Optional<T> getValueForField(String fieldName, Class<T> clazz)
    • sdkFields

      public final List<SdkField<?>> sdkFields()
      Specified by:
      sdkFields in interface SdkPojo
      Returns:
      List of SdkField in this POJO. May be empty list but should never be null.
    • sdkFieldNameToField

      public final Map<String,SdkField<?>> sdkFieldNameToField()
      Specified by:
      sdkFieldNameToField in interface SdkPojo
      Returns:
      The mapping between the field name and its corresponding field.