vendredi 27 février 2015

ESRI internal process fails using data created by ESRI -- suggestions?


We have a complex process where we compute the distance a boat will travel. We then take our waterway rasters, apply any blockages and delays to them, and create the FullCostArray to get the time it takes for a boat to travel with all the delays in place.


Once the raster is set like this we get a CostDistance raster then remap the raster based on distance. The end result is a point on the water with circles around it representing 15, 30, 45, 60, and 90 minutes of travel for that boat.


The last step is to send this segmented raster into a routing that extracts each polygon for each time zone. The problem is that inside ESRI code we get this error for each point: 1:2/27/2015 5:05 PM: Getting the geodataset using raster descriptor 1:2/27/2015 5:05 PM: ConverRasterToPolygon failed with an exception. 1:2/27/2015 5:05 PM: ERROR 010328: Syntax error at or near symbol ,. ERROR 010267: Syntax error in parsing grid expression. 1:2/27/2015 5:05 PM: at ESRI.ArcGIS.GeoAnalyst.RasterConversionOpClass.RasterDataToPolygonFeatureData(IGeoDataset dataset, IWorkspace pWorkspace, String name, Boolean weeding)


The routine is listed below. Has anyone seen this happen and how to I fix this?



private static IPolygon[] GetZonePolygons(IGeoDataset p_pRasterGeoDS, IGPMessages messages, int p_iZoneID)
{
try
{
ServerLogging.WriteToLog( "GPUtilities.GetZonePolygons() was called." );
IPolygon[] pPolygons;
IExtractionOp pExtractionOp = new RasterExtractionOpClass();
IConversionOp pConversionOp = new RasterConversionOpClass();
IRasterDescriptor pRasterDesc = new RasterDescriptorClass();
IQueryFilter pQFilter = new QueryFilterClass();
IRaster pRaster = (IRaster)p_pRasterGeoDS;
IWorkspace workspace = GetInMemoryWorkspace();
pQFilter.WhereClause = "Value = " + p_iZoneID;
pRasterDesc.Create(pRaster, pQFilter, "Value");
IGeoDataset pGeoDS = pExtractionOp.Attribute(pRasterDesc);
IGeoDataset pPolygonGeoDS = pConversionOp.RasterDataToPolygonFeatureData(pGeoDS, workspace, p_iZoneID.ToString(), true);
IFeatureClass pFClass = (IFeatureClass)pPolygonGeoDS;
int featureCount = pFClass.FeatureCount(null);
if (featureCount > 0)
{
pPolygons = new IPolygon[featureCount];
IFeatureCursor pFCursor = pFClass.Search( null, false );
IFeature pFeature = pFCursor.NextFeature( );
int i = 0;
while (pFeature != null)
{
pPolygons[i] = (IPolygon)pFeature.Shape;
pFeature = pFCursor.NextFeature( );
i++;
}
System.Runtime.InteropServices.Marshal.ReleaseComObject( pFCursor );
}
else
{
ServerLogging.WriteToLog( string.Format( "The FeatureCount for zone ID {0} was 0. Returning an empty geometry.", p_iZoneID ) );
pPolygons = new IPolygon[0];
}
return pPolygons;

}
catch (Exception ex)
{
messages.AddError(8662, "An error was encountered druing the process and the process was terminated.");
ServerLogging.WriteToLog( "GetZOnePolygons failed with an exception." );
ServerLogging.WriteToLog(ex.Message);
ServerLogging.WriteToLog(ex.StackTrace);
return new IPolygon[0];
}
}




Aucun commentaire:

Enregistrer un commentaire