:doc:`LocationService <../../location>` / Client / batch_put_geofence

******************
batch_put_geofence
******************



.. py:method:: LocationService.Client.batch_put_geofence(**kwargs)

  

  A batch request for storing geofence geometries into a given geofence collection, or updates the geometry of an existing geofence if a geofence ID is included in the request.

  

  See also: `AWS API Documentation <https://docs.aws.amazon.com/goto/WebAPI/location-2020-11-19/BatchPutGeofence>`_  


  **Request Syntax**
  ::

    response = client.batch_put_geofence(
        CollectionName='string',
        Entries=[
            {
                'GeofenceId': 'string',
                'Geometry': {
                    'Polygon': [
                        [
                            [
                                123.0,
                            ],
                        ],
                    ],
                    'Circle': {
                        'Center': [
                            123.0,
                        ],
                        'Radius': 123.0
                    },
                    'Geobuf': b'bytes',
                    'MultiPolygon': [
                        [
                            [
                                [
                                    123.0,
                                ],
                            ],
                        ],
                    ]
                },
                'GeofenceProperties': {
                    'string': 'string'
                }
            },
        ]
    )
    
  :type CollectionName: string
  :param CollectionName: **[REQUIRED]** 

    The geofence collection storing the geofences.

    

  
  :type Entries: list
  :param Entries: **[REQUIRED]** 

    The batch of geofences to be stored in a geofence collection.

    

  
    - *(dict) --* 

      Contains geofence geometry details.

      

    
      - **GeofenceId** *(string) --* **[REQUIRED]** 

        The identifier for the geofence to be stored in a given geofence collection.

        

      
      - **Geometry** *(dict) --* **[REQUIRED]** 

        Contains the details to specify the position of the geofence. 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.

         

        .. note::

          

          The geofence ``Polygon`` and ``MultiPolygon`` formats support a maximum of 1,000 total vertices. The ``Geobuf`` format supports a maximum of 100,000 vertices.

          

        

      
        - **Polygon** *(list) --* 

          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.

           

          .. note::

            

            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.
            

            

          

        
          - *(list) --* 

          
            - *(list) --* 

            
              - *(float) --* 

              
          
        
      
        - **Circle** *(dict) --* 

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

          

        
          - **Center** *(list) --* **[REQUIRED]** 

            A single point geometry, specifying the center of the circle, using `WGS 84 <https://gisgeography.com/wgs84-world-geodetic-system/>`__ coordinates, in the form ``[longitude, latitude]``.

            

          
            - *(float) --* 

            
        
          - **Radius** *(float) --* **[REQUIRED]** 

            The radius of the circle in meters. Must be greater than zero and no larger than 100,000 (100 kilometers).

            

          
        
        - **Geobuf** *(bytes) --* 

          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 <https://docs.aws.amazon.com/location/latest/APIReference/API_WaypointGeofencing_GeofenceGeometry.html#location-Type-WaypointGeofencing_GeofenceGeometry-Polygon>`__ and `MultiPolygon <https://docs.aws.amazon.com/location/latest/APIReference/API_WaypointGeofencing_GeofenceGeometry.html#location-Type-WaypointGeofencing_GeofenceGeometry-MultiPolygon>`__.

           

          .. note::

            

            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``.
            

            

          

        
        - **MultiPolygon** *(list) --* 

          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 <https://docs.aws.amazon.com/location/latest/APIReference/API_WaypointGeofencing_GeofenceGeometry.html#location-Type-WaypointGeofencing_GeofenceGeometry-Polygon>`__.

           

          .. note::

            

            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.
            

            

          

        
          - *(list) --* 

          
            - *(list) --* 

            
              - *(list) --* 

              
                - *(float) --* 

                
            
          
        
      
      
      - **GeofenceProperties** *(dict) --* 

        Associates one of more properties with the geofence. A property is a key-value pair stored with the geofence and added to any geofence event triggered with that geofence.

         

        Format: ``"key" : "value"``

        

      
        - *(string) --* 

        
          - *(string) --* 

          
    
  
    

  
  :rtype: dict
  :returns: 
    
    **Response Syntax**

    
    ::

      {
          'Successes': [
              {
                  'GeofenceId': 'string',
                  'CreateTime': datetime(2015, 1, 1),
                  'UpdateTime': datetime(2015, 1, 1)
              },
          ],
          'Errors': [
              {
                  'GeofenceId': 'string',
                  'Error': {
                      'Code': 'AccessDeniedError'|'ConflictError'|'InternalServerError'|'ResourceNotFoundError'|'ThrottlingError'|'ValidationError',
                      'Message': 'string'
                  }
              },
          ]
      }
      
    **Response Structure**

    

    - *(dict) --* 
      

      - **Successes** *(list) --* 

        Contains each geofence that was successfully stored in a geofence collection.

        
        

        - *(dict) --* 

          Contains a summary of each geofence that was successfully stored in a given geofence collection.

          
          

          - **GeofenceId** *(string) --* 

            The geofence successfully stored in a geofence collection.

            
          

          - **CreateTime** *(datetime) --* 

            The timestamp for when the geofence was stored in a geofence collection in `ISO 8601 <https://www.iso.org/iso-8601-date-and-time-format.html>`__ format: ``YYYY-MM-DDThh:mm:ss.sssZ``

            
          

          - **UpdateTime** *(datetime) --* 

            The timestamp for when the geofence was last updated in `ISO 8601 <https://www.iso.org/iso-8601-date-and-time-format.html>`__ format: ``YYYY-MM-DDThh:mm:ss.sssZ``

            
      
    
      

      - **Errors** *(list) --* 

        Contains additional error details for each geofence that failed to be stored in a geofence collection.

        
        

        - *(dict) --* 

          Contains error details for each geofence that failed to be stored in a given geofence collection.

          
          

          - **GeofenceId** *(string) --* 

            The geofence associated with the error message.

            
          

          - **Error** *(dict) --* 

            Contains details associated to the batch error.

            
            

            - **Code** *(string) --* 

              The error code associated with the batch request error.

              
            

            - **Message** *(string) --* 

              A message with the reason for the batch request error.

              
        
      
    
  
  **Exceptions**
  
  *   :py:class:`LocationService.Client.exceptions.InternalServerException`

  
  *   :py:class:`LocationService.Client.exceptions.ResourceNotFoundException`

  
  *   :py:class:`LocationService.Client.exceptions.AccessDeniedException`

  
  *   :py:class:`LocationService.Client.exceptions.ValidationException`

  
  *   :py:class:`LocationService.Client.exceptions.ThrottlingException`

  