IZonalOp.ZonalStatisticsAsTable C#

12-19-2011 06:55 AM
New Contributor

I'm trying to follow the ArcObject sample codes for calculating zonal statistics as table. I'm not getting an error but at the same time, there is no output.  I notice the difference between this SpatialAnalyst ArcObject and the SpatialAnalystTool's ZonalStatisticsAsTable: The ArcObject version is missing the output table name. I don't know where to specify this in the ArcObject version.  Here's a snippet of my code:

//Create a Feature Class Descriptor object for input shapefile zones
IFeatureClassDescriptor aoiDesc = new FeatureClassDescriptorClass();
string zoneField = "HydroID";
IFeatureClass aoiFc = OpenFeatureClassFromShapefiile(polygonPath, polygonName);
IGeoDataset aoiGds = (IGeoDataset)aoiFc;
aoiDesc.Create(aoiFc, null, zoneField);
aoiGds = (IGeoDataset)aoiDesc;

//Create a Raster Descriptor object for input raster values
IRaster ras = new RasterClass();
ras = OpenRasterDataset(exprasPath, exprasName).CreateDefaultRaster();
IRasterDescriptor rasDesc = new RasterDescriptorClass();
string rasValue = "VALUE";
rasDesc.Create(ras, null, rasValue);
IGeoDataset rasGds = (IGeoDataset)rasDesc;

//Create an instance of the output table object
ITable stats = null;

//Initialize an IZonalOp object
ESRI.ArcGIS.SpatialAnalyst.IZonalOp zoneOp = new ESRI.ArcGIS.SpatialAnalyst.RasterZonalOpClass();

//Perform spatial operation
stats = zoneOp.ZonalStatisticsAsTable(aoiGds, rasGds, true);

Appreciate any suggestion on how to get this to work.
0 Kudos
2 Replies
MVP Esteemed Contributor
Have you considered using the geoprocessor? In general it is a lot less painful to create a geoprocessor object and throw the tool at it.
0 Kudos
New Contributor

Yes. That's what I ended up doing.  Just wondering if the ESRI guys know there's something wrong with this ArcObject function.

0 Kudos