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 theGeotrigger
. 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 eachFeature
is one target area.Create a
FeatureFenceParameters
using aFeatureTable
. The features can have point, line, or polygon geometry. For points and lines, you must also supply aFenceParameters.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.When saving new geotriggers into a web map, ensure all feature layers are assigned a unique
Layer.getId()
. This ensures the savedgetFeatureTable()
is associated with the corresponding layer. When the savedArcGISMap
andGeoModel.getGeotriggersInfo()
are loaded, the layer and geotrigger will use the sameFeatureTable
.A
FenceGeotrigger
can also take into account floors within buildings. If the feature table used to create the FeatureFenceParameters is referenced by aFeatureLayer
that isFloorAware
, and theLocationDataSource
used to create theGeotriggerFeed
includesLocationDataSource.Location.KEY_FLOOR
information, then fences will only be entered when they are intersected by aLocationDataSource.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 validGeoModelFloorDefinition
. All layers and tables that are used by the floor definition are loaded when theGeotriggerMonitor
is started.A
Location
can contain floor property as part ofLocationDataSource.Location.getAdditionalSourceProperties()
. This can be supplied as part of your own implementation.- Since:
- 100.12.0
-
-
Constructor Summary
Constructors Constructor Description FeatureFenceParameters(FeatureTable featureTable)
Creates a FeatureFenceParameters using all of the features in theFeatureTable
.FeatureFenceParameters(FeatureTable featureTable, double bufferDistance)
Creates a FeatureFenceParameters using all of the features in theFeatureTable
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Geometry
getAreaOfInterest()
Gets the geometry that can be used to spatially filter fences.FeatureTable
getFeatureTable()
Gets theFeatureTable
that contains the features to use in the FeatureFenceParameters.String
getWhereClause()
Gets a where clause that defines the features from theFeatureTable
to use as fences.void
setAreaOfInterest(Geometry areaOfInterest)
Sets the geometry that can be used to spatially filter fences.void
setWhereClause(String whereClause)
Sets a where clause that defines the features from theFeatureTable
to use as fences.-
Methods inherited from class com.esri.arcgisruntime.geotriggers.FenceParameters
createFromGeoElement, getBufferDistance
-
-
-
-
Constructor Detail
-
FeatureFenceParameters
public FeatureFenceParameters(FeatureTable featureTable)
Creates a FeatureFenceParameters using all of the features in theFeatureTable
.- Parameters:
featureTable
- theFeatureTable
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 theFeatureTable
.- Parameters:
featureTable
- theFeatureTable
that contains the features to use in the FeatureFenceParametersbufferDistance
- a buffer distance in meters to apply to the features when checking if aFenceGeotrigger
condition is met- Throws:
IllegalArgumentException
- if featureTable is null- Since:
- 100.12.0
-
-
Method Detail
-
getAreaOfInterest
public Geometry getAreaOfInterest()
Gets the geometry that can be used to spatially filter fences.This needs to be either an
Envelope
orPolygon
. Use this to define which features in theFeatureTable
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
orPolygon
. Use this to define which features in theFeatureTable
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 theFeatureTable
that contains the features to use in the FeatureFenceParameters.- Returns:
- the
FeatureTable
that contains the features to use in the FeatureFenceParameters - Since:
- 100.12.0
-
getWhereClause
public String getWhereClause()
Gets a where clause that defines the features from theFeatureTable
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'sArcGISFeatureLayerInfo.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 theFeatureTable
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'sArcGISFeatureLayerInfo.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 theFeatureTable
to use as fences- Throws:
IllegalArgumentException
- if whereClause is null- Since:
- 100.12.0
-
-