How to query an image service (ArcObjects .NET 10.6 SDK)
ArcObjects Help for .NET developers > Developing with ArcGIS > Learning ArcObjects > Managing data > Working with image and raster data > Working with image services and WCS services > How to query an image service (ArcObjects .NET 10.6 SDK)

How to query an image service


Summary
This topic shows how to query an image service—published from a mosaic dataset—using an image query filter, a spatial filter, and an attribute query filter.

In this topic


Querying an image service using an image query filter

The following code shows how to query an image service based on pixel size and return a set of feature IDs:
[C#]
public static IFIDSet QueryIS_PixelSize(IImageServer imageServer)
{
    //Cast:
    IImageServer3 imageServer3=(IImageServer3)imageServer;

    //Create a filter using a pixel size of 0.28/0.28.
    IImageQueryFilter imageQueryFilter=new ImageQueryFilterClass();
    IPoint pixelSize=new PointClass();
    pixelSize.PutCoords(0.28, 0.28);
    imageQueryFilter.PixelSize=pixelSize;

    //Return feature IDs.
    IFIDSet fidSet=imageServer3.GetCatalogItemIDs((IQueryFilter)imageQueryFilter);
    return fidSet;
}
[VB.NET]
Public Shared Function QueryIS_PixelSize(ByVal imageServer As IImageServer) As IFIDSet
'Cast:
Dim imageServer3 As IImageServer3=CType(imageServer, IImageServer3)

'Create a filter using a pixel size of 0.28/0.28.
Dim imageQueryFilter As IImageQueryFilter=New ImageQueryFilterClass()
Dim pixelSize As IPoint=New PointClass()
pixelSize.PutCoords(0.28, 0.28)
imageQueryFilter.PixelSize=pixelSize

'Return feature IDs.
Dim fidSet As IFIDSet=imageServer3.GetCatalogItemIDs(CType(imageQueryFilter, IQueryFilter))
Return fidSet
End Function

Querying an image service using a spatial filter

The following code shows how to query an image service based on geometry and return a record set:
[C#]
public static IRecordSet QueryIS_Spatial(IImageServer imageServer, IGeometry
    queryGeometry)
{
    //Cast:
    IImageServer3 imageServer3=(IImageServer3)imageServer;
    //Create a spatial filter using the provided geometry.
    ISpatialFilter spatFilter=new ImageQueryFilterClass();
    spatFilter.Geometry=queryGeometry;
    spatFilter.SpatialRel=esriSpatialRelEnum.esriSpatialRelEnvelopeIntersects;

    //Return a record set.
    IRecordSet recordSet=imageServer3.GetCatalogItems((IQueryFilter)spatFilter);
    return recordSet;
}
[VB.NET]
Public Shared Function QueryIS_Spatial(ByVal imageServer As IImageServer, ByVal queryGeometry As IGeometry) As IRecordSet
'Cast:
Dim imageServer3 As IImageServer3=CType(imageServer, IImageServer3)

'Create a spatial filter using the provided geometry.
Dim spatFilter As ISpatialFilter=New ImageQueryFilterClass()
spatFilter.Geometry=queryGeometry
spatFilter.SpatialRel=esriSpatialRelEnum.esriSpatialRelEnvelopeIntersects

'Return a record set.
Dim recordSet As IRecordSet=imageServer3.GetCatalogItems(CType(spatFilter, IQueryFilter))
Return recordSet
End Function

Querying an image service using an attribute query filter

The following code shows how to use an attribute query to return an item count of primary rasters:
[C#]
public static int QueryIS_Attribute(IImageServer imageServer)
{
    //Cast:
    IImageServer3 imageServer3=(IImageServer3)imageServer;
    //Create an attribute filter that queries primary rasters.
    IQueryFilter attFilter=new ImageQueryFilterClass();
    attFilter.WhereClause="Category=1";

    //Return the primary rasters's count.
    int count=imageServer3.GetCatalogItemCount(attFilter);
    return count;
}
[VB.NET]
Public Shared Function QueryIS_Attribute(ByVal imageServer As IImageServer) As Integer
'Cast:
Dim imageServer3 As IImageServer3=CType(imageServer, IImageServer3)

'Create an attribute filter that queries primary rasters.
Dim attFilter As IQueryFilter=New ImageQueryFilterClass()
attFilter.WhereClause="Category=1"

'Return the primary rasters's count.
Dim Count As Integer=imageServer3.GetCatalogItemCount(attFilter)
Return Count
End Function






To use the code in this topic, reference the following assemblies in your Visual Studio project. In the code files, you will need using (C#) or Imports (VB .NET) directives for the corresponding namespaces (given in parenthesis below if different from the assembly name):

Development licensing Deployment licensing
ArcGIS Desktop Advanced ArcGIS Desktop Advanced
ArcGIS Desktop Standard ArcGIS Desktop Standard
ArcGIS Desktop Basic ArcGIS Desktop Basic
Engine Developer Kit Engine