Class FeatureFenceParameters

java.lang.Object
com.esri.arcgisruntime.geotriggers.FenceParameters
com.esri.arcgisruntime.geotriggers.FeatureFenceParameters

public class FeatureFenceParameters extends FenceParameters
Geotrigger fence data created from features.

The features that create a FeatureFenceParameters provide a set of geometries (and attributes) that define targets for the Geotrigger. For example, if the condition is "notify me when my position comes within 50 meters of one of my target areas", the fence data are "my target areas" and each Feature is one target area.

Create a FeatureFenceParameters using a FeatureTable. The features can have point, line, or polygon geometry. For points and lines, you must also supply a FenceParameters.getBufferDistance(). Each feature in the table represents a single fence.

You can filter features using attributes or geometry by supplying a where clause. For example, you could further refine "my target areas" to be "my target areas that are open and are in California".

The number of features fetched by querying an online table is limited by the layer's ArcGISFeatureLayerInfo.getMaxRecordCount(). Service feature tables that support pagination (ArcGISFeatureLayerInfo.isSupportsPagination()) are not subject to the maximum feature count limit.

A FenceGeotrigger can also take into account floors within buildings. If the feature table used to create the FeatureFenceParameters is referenced by a FeatureLayer that is FloorAware, and the LocationDataSource used to create the GeotriggerFeed includes floor information, then fences will only be entered when they are intersected by a location on the correct floor. If the fence or location data does not include valid floor information, the floor is ignored and the fence is entered when it is intersected by the location.

A floor aware feature layer or table must be part of a GeoModel that includes a valid GeoModelFloorDefinition. All layers and tables that are used by the floor definition are loaded when the GeotriggerMonitor is started.

A Location can contain floor property as part of LocationDataSource.Location.getAdditionalSourceProperties().

Since:
100.12.0
  • Constructor Details

    • FeatureFenceParameters

      public FeatureFenceParameters(FeatureTable featureTable)
      Creates a FeatureFenceParameters using all of the features in the FeatureTable.
      Parameters:
      featureTable - the FeatureTable that contains the features to use in the FeatureFenceParameters
      Throws:
      IllegalArgumentException - if featureTable is null
      Since:
      100.12.0
    • FeatureFenceParameters

      public FeatureFenceParameters(FeatureTable featureTable, double bufferDistance)
      Creates a FeatureFenceParameters using all of the features in the FeatureTable.
      Parameters:
      featureTable - the FeatureTable that contains the features to use in the FeatureFenceParameters
      bufferDistance - a buffer distance in meters to apply to the features when checking if a FenceGeotrigger condition is met
      Throws:
      IllegalArgumentException - if featureTable is null
      Since:
      100.12.0
  • Method Details

    • getAreaOfInterest

      public Geometry getAreaOfInterest()
      Gets the geometry that can be used to spatially filter fences.

      This needs to be either an Envelope or Polygon. Use this to define which features in the FeatureTable are to be used as fences by defining an area of interest. If this property is null we will use the full extent of the feature table.

      Returns:
      the geometry that can be used to spatially filter fences, or null if none
      Since:
      100.12.0
    • setAreaOfInterest

      public void setAreaOfInterest(Geometry areaOfInterest)
      Sets the geometry that can be used to spatially filter fences.

      This needs to be either an Envelope or Polygon. Use this to define which features in the FeatureTable are to be used as fences by defining an area of interest. If this property is null we will use the full extent of the feature table.

      Parameters:
      areaOfInterest - the geometry that can be used to spatially filter fences
      Since:
      100.12.0
    • getFeatureTable

      public FeatureTable getFeatureTable()
      Gets the FeatureTable that contains the features to use in the FeatureFenceParameters.

      This table can be shared with a FeatureLayer.getFeatureTable(). This property will be null if the FeatureLayer within a web map could not be found.

      Returns:
      the FeatureTable that contains the features to use in the FeatureFenceParameters, or null if none
      Since:
      100.12.0
    • getWhereClause

      public String getWhereClause()
      Gets a where clause that defines the features from the FeatureTable to use as fences.

      The string that is used as the getWhereClause() should follow standard SQL syntax similar to what is discussed in the document SQL reference for query expressions used in ArcGIS. The number of features fetched by querying an online table is limited by the layer's ArcGISFeatureLayerInfo.getMaxRecordCount(). Service feature tables that support pagination (ArcGISFeatureLayerInfo.isSupportsPagination()) are not subject to the maximum feature count limit.

      Returns:
      a where clause that defines the features from the FeatureTable to use as fences
      Since:
      100.12.0
    • setWhereClause

      public void setWhereClause(String whereClause)
      Sets a where clause that defines the features from the FeatureTable to use as fences.

      The string that is used as the setWhereClause(String) should follow standard SQL syntax similar to what is discussed in the document SQL reference for query expressions used in ArcGIS. The number of features fetched by querying an online table is limited by the layer's ArcGISFeatureLayerInfo.getMaxRecordCount(). Service feature tables that support pagination (ArcGISFeatureLayerInfo.isSupportsPagination()) are not subject to the maximum feature count limit.

      Parameters:
      whereClause - a where clause that defines the features from the FeatureTable to use as fences
      Throws:
      IllegalArgumentException - if whereClause is null
      Since:
      100.12.0