Map service QueryFeatureCount2 method
Queries and returns the count of the features that meet the query filter selection criteria for the specified layer description.
QueryFeatureCount2(string MapName, LayerDescription LayerDescription, QueryFilter QueryFilter)
|
Parameter |
Description |
|---|---|
|
MapName |
The name of the map (data frame) that contains the layer associated with the LayerDescription parameter. |
|
LayerDescription |
The LayerDescription object of the layer to query. |
|
QueryFilter |
An attribute or spatial query that defines the selection criteria for the layer associated with the LayerDescription parameter. |
Return Value
An integer value indicating the number of features that meet the selection criteria. A SOAP exception will be thrown when the SQL expression in the query filter is invalid.
Remarks
Definitions applied to the LayerDescription input parameter will filter the returned feature count.
Examples
C#
MapService_MapServer mapservice = new MapService_MapServer();
mapservice.Url = "http://localhost:6080/arcgis/services/MapService/MapServer";
string mapname = mapservice.GetDefaultMapName();
MapServerInfo mapinfo = mapservice.GetServerInfo(mapname);
MapDescription mapdesc = mapinfo.DefaultMapDescription;
MapLayerInfo[] maplayerinfos = mapinfo.MapLayerInfos;
int layerid = 0;
string geometryfieldname = string.Empty;
foreach (MapLayerInfo layerinfo in maplayerinfos)
{
if (layerinfo.Name == "countries")
{
layerid = layerinfo.LayerID;
Field[] fields = layerinfo.Fields.FieldArray;
foreach (Field field in fields)
{
if (field.Type == esriFieldType.esriFieldTypeGeometry)
{
geometryfieldname = field.Name;
break;
}
}
}
}
LayerDescription[] layerdescs = mapdesc.LayerDescriptions;
LayerDescription activelayerdesc = null;
foreach (LayerDescription layerdesc in layerdescs)
{
if (layerdesc.LayerID == layerid)
{
activelayerdesc = layerdesc;
break;
}
}
activelayerdesc.DefinitionExpression = "POP_CNTRY > 50000000";
EnvelopeN envelope = new EnvelopeN();
envelope.XMin = 0.0;
envelope.YMin = 0.0;
envelope.XMax = 180.0;
envelope.YMax = 90.0;
SpatialFilter spatialfilter = new SpatialFilter();
spatialfilter.FilterGeometry = envelope;
spatialfilter.GeometryFieldName = geometryfieldname;
spatialfilter.SpatialRel= esriSpatialRelEnum.esriSpatialRelIntersects;
int featurecount = mapservice.QueryFeatureCount2(mapname, activelayerdesc, spatialfilter);
VB.NET
Dim mapservice As MapService_MapServer = New MapService_MapServer()
mapservice.Url = "http://localhost:6080/arcgis/services/MapService/MapServer"
Dim mapname As String = mapservice.GetDefaultMapName()
Dim mapinfo As MapServerInfo = mapservice.GetServerInfo(mapname)
Dim mapdesc As MapDescription = mapinfo.DefaultMapDescription
Dim maplayerinfos() As MapLayerInfo = mapinfo.MapLayerInfos
Dim layerid As Integer = 0
Dim geomeTryfieldname As String = String.Empty
Dim layerinfo As MapLayerInfo
For Each layerinfo In maplayerinfos
If layerinfo.Name = "countries" Then
layerid = layerinfo.LayerID
Dim fields() As Field = layerinfo.Fields.FieldArray
Dim field As Field
For Each field In fields
If field.Type = esriFieldType.esriFieldTypeGeometry Then
geomeTryfieldname = field.Name
Exit For
End If
Next
End If
Next
Dim layerdescs() As LayerDescription = mapdesc.LayerDescriptions
Dim activelayerdesc As LayerDescription = Nothing
Dim layerdesc As LayerDescription
For Each layerdesc In layerdescs
If layerdesc.LayerID = layerid Then
activelayerdesc = layerdesc
Exit For
End If
Next
activelayerdesc.DefinitionExpression = "POP_CNTRY > 50000000"
Dim envelope As EnvelopeN = New EnvelopeN()
envelope.XMin = 0.0
envelope.YMin = 0.0
envelope.XMax = 180.0
envelope.YMax = 90.0
Dim spatialfilter As SpatialFilter = New SpatialFilter()
spatialfilter.FilterGeometry = envelope
spatialfilter.GeometryFieldName = geomeTryfieldname
spatialfilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects
Dim featurecount As Integer = mapservice.QueryFeatureCount2(mapname, activelayerdesc, spatialfilter)