Public Function CanSetFilterGeometry( _ ByVal filterGeometry As Geometry _ ) As Boolean
public bool CanSetFilterGeometry( Geometry filterGeometry )
Parameters
- filterGeometry
- The filter geometry to check
Public Function CanSetFilterGeometry( _ ByVal filterGeometry As Geometry _ ) As Boolean
public bool CanSetFilterGeometry( Geometry filterGeometry )
{
var layers = map.GetLayersAsFlattenedList().OfType<FeatureLayer>();
var layerToQuery = layers.FirstOrDefault(f => f.Name == "USNationalParks");
if (layerToQuery == null) return;
string whereClause = "RecreationVisitsTotal > 1000000"; //More than million visitors a year
var spatialDefnLayer = layers.FirstOrDefault(f => f.Name == "AllUSStates");
if (spatialDefnLayer == null) return;
try
{
if (MapView.Active == null) return;
//Note: needs to be called on the MCT
// Set the spatial filter geometry
//Get the geometry from the selected features in the feature layer
var spatialClauseGeom = spatialDefnLayer.GetFeatureOutline(MapView.Active, FeatureOutlineType.Selected);
//Create the definition query
DefinitionQuery definitionQuery = new DefinitionQuery
{
WhereClause = whereClause,
Name = $"{layerToQuery.Name}"
};
//Setting the spatial filter to the Definition Query
if (definitionQuery.CanSetFilterGeometry(spatialClauseGeom))
{
definitionQuery.SetFilterGeometry(spatialClauseGeom);
}
layerToQuery.InsertDefinitionQuery(definitionQuery);
layerToQuery.SetActiveDefinitionQuery(definitionQuery.Name);
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine($"Error querying feature layer: {ex.Message}");
}
}
{
var greatLakes = map.GetLayersAsFlattenedList()
.OfType<FeatureLayer>().First(l => l.Name == "Great Lakes");
var usa_states = map.GetLayersAsFlattenedList()
.OfType<FeatureLayer>().First(l => l.Name == "US_States");
//name must be unique
var def_query = new DefinitionQuery("GreatLakes",
"NAME in ('Huron','Michigan','Erie')");
//create a filter geometry - in this example we will use the outline geometry
//of all visible features from a us states layer...the filter geometry will be
//intersected with the layer feature geometry when added to the def query
var filter_geom = usa_states.GetFeatureOutline(mapView, FeatureOutlineType.Visible);
//other options...
//var filter_geom = usa_states.GetFeatureOutline(mapView, FeatureOutlineType.All);
//var filter_geom = usa_states.GetFeatureOutline(mapView, FeatureOutlineType.Selected);
//Geometry must have a valid SR and be point, multi-point, line, or poly
//Note: needs to be called on the MCT
if (def_query.CanSetFilterGeometry(filter_geom))
{
def_query.SetFilterGeometry(filter_geom);
}
//Apply the def query
greatLakes.InsertDefinitionQuery(def_query);
//Set it active
greatLakes.SetActiveDefinitionQuery(def_query.Name);
//or....also - set it active when it is inserted
//greatLakes.InsertDefinitionQuery(def_query, true);
}
Target Platforms: Windows 11 Home, Pro, Enterprise (64 bit)