ThinkGeo.com    |     Documentation    |     Premium Support

Error with IsoLineLayer in 8.0

We have code in MapSuite 6.0 that was correctly generating contour lines using the IsoLineLayer.GetIsoFeatures(…) method.    This code is failing in 8.0 with the same data.



The line of code that is failing is:  Collection<Feature> features = IsoLineLayer.GetIsoFeatures(values, isoLineLevels, attribute.Name, IsoLineType.ClosedLinesAsPolygons);



I have attached a .xml file from which you should be able extract the “Values” and “IsoLineLevels” that we are using.



The values represent a projected grid that we have generated, rather than the raw source values.



The error is:



System.InvalidOperationException
was caught


  HResult=-2146233079


  Message=The shape you provided does not pass
our simple validation.This ring is not closed. 
To close a ring the last point must be the same as the first point.  All rings must have at least four points.


  Source=MapSuiteCore


  StackTrace:


       at ohM=.aGA=.sGA=(BaseShape sWA=)


       at
ThinkGeo.MapSuite.Core.BaseShape.GetWellKnownBinary()


       at
ThinkGeo.MapSuite.Core.IsoLineLayer.8Cw=(List`1 8Sw=, GridCell[,] 8iw=,
SqlGeometry 8yw=, String 9Cw=)


       at
ThinkGeo.MapSuite.Core.IsoLineLayer.GetIsoFeatures(GridCell[,] gridMatrix,
IEnumerable`1 isoLineLevels, String dataValueColumnName, IsoLineType
isoLineType, Double noDataValue)


       at
ThinkGeo.MapSuite.Core.IsoLineLayer.GetIsoFeatures(GridCell[,] gridMatrix,
IEnumerable`1 isoLineLevels, String dataValueColumnName, IsoLineType
isoLineType)


 



ContourData.xml (540 KB)

Hi Ted,



Would you please change the IsoLineType to LinesOnly and have
another try? Your grid data is not compatible with ClosedLinesAsPolygon. Another option is we regenerate a grid file using our new powerful interpolation
model based on your well-known data. 



Hope this would be helpful and any question please feel free to let us know.



Thanks,

Kevin



Our next step requires polygons, as we clip these polygons with a field boundary.   If we must do this next step with lines, it will be quite a task.   And, the routine used to correctly generate polygons.   If that functionality can’t be replicated in 8.0, we’ll find a way to deal with it. 
  
 What does generating a grid file do for us?  Do you have a way to convert that into contoured polygons?

I have done more testing.    There is an issue in your function.    When  I return the features as LinesOnly, 270 features are returned.  269 of them are closed linestrings.   One of them is a point.    In my opinion, you should never be returning a point.   If you generate a point in the routine, I think you should filter it out. 
  
 As a work around, I will filter the results for closed linestrings, convert them to polygons, and drive on. 
  
 Thanks for the tip on looking at the output results with the LinestringOnly enum.

Hi Ted,



Currently, if we want to contour polygons, Map Suite will dynamic extend the grid matrix with a value that smaller than smallest value of all the grid values. But seems the grid matrix you provided is already been extended, then causes these unexpected error.



So we recommend that you can try to regenerate the grid file with interpolation model of 8.0, then we can countour polygons or lines only. Or you can provide us the your raw source, we will dig into this. 



Hope this would be helpful.



Regards,

Kevin