ThinkGeo.com    |     Documentation    |     Premium Support

Starnge Exception when selection intersecting features

Hi,


I have updated to to 6.0.0.236. Since then I get the following error when I try to select features in my dynamic layers that insects with a another feature. Here is the exception:


GisSharpBlog.NetTopologySuite.Geometries.TopologyException occurred

  HResult=-2146232832

  Message=side location conflict [ (-80.399903, 25.751829, NaN) ]

  Source=NetTopologySuite

  StackTrace:

       at GisSharpBlog.NetTopologySuite.GeometriesGraph.EdgeEndStar.PropagateSideLabels(Int32 geomIndex)

       at GisSharpBlog.NetTopologySuite.GeometriesGraph.EdgeEndStar.ComputeLabelling(GeometryGraph[] geom)

       at GisSharpBlog.NetTopologySuite.Operation.Relate.RelateComputer.LabelNodeEdges()

       at GisSharpBlog.NetTopologySuite.Operation.Relate.RelateComputer.ComputeIM()

       at GisSharpBlog.NetTopologySuite.Operation.Relate.RelateOp.get_IntersectionMatrix()

       at GisSharpBlog.NetTopologySuite.Operation.Relate.RelateOp.Relate(IGeometry a, IGeometry b)

       at GisSharpBlog.NetTopologySuite.Geometries.Geometry.Relate(IGeometry g)

       at GisSharpBlog.NetTopologySuite.Geometries.Geometry.Intersects(IGeometry g)

       at ThinkGeo.MapSuite.Core.BaseShape.IntersectsCore(BaseShape targetShape)

       at ThinkGeo.MapSuite.Core.BaseShape.Intersects(BaseShape targetShape)

       at ThinkGeo.MapSuite.Core.FeatureSource.VxU=(BaseShape WBU=, IEnumerable`1 WRU=)

       at ThinkGeo.MapSuite.Core.FeatureSource.SpatialQueryCore(BaseShape targetShape, QueryType queryType, IEnumerable`1 returningColumnNames)

       at ThinkGeo.MapSuite.Core.FeatureSource.SpatialQuery(BaseShape targetShape, QueryType queryType, IEnumerable`1 returningColumnNames)

       at ThinkGeo.MapSuite.Core.FeatureSource.SpatialQuery(Feature feature, QueryType queryType, IEnumerable`1 returningColumnNames)

       at ThinkGeo.MapSuite.Core.FeatureSource.SpatialQuery(Feature feature, QueryType queryType, ReturningColumnsType returningColumnNamesType)

       at ThinkGeo.MapSuite.Core.QueryTools.GetFeaturesIntersecting(Feature targetFeature, ReturningColumnsType returningColumnNamesType)

       at eMap.Classes.MapToolbarManager.RopeSelection(String WKT) in c:\dev\T5\Project\Branches\NewUI\T5.eMap\Classes\MapToolbarManager.cs:line 68

  InnerException: 

 


Here is the code snippet where it occurs:


                    foreach (FeatureLayer sffl in mapManager.MySelectableLayers)

                    {

                        sffl.Open();

                        System.Collections.ObjectModel.Collection<Feature> features =

                            sffl.QueryTools.GetFeaturesIntersecting(selection, ReturningColumnsType.AllColumns);

                        if (features != null)

                        {

                            foreach (Feature feature in features)

                            {

                                ulong unitTypeGID = System.Convert.ToUInt64(feature.ColumnValues["UNITTYPEGID"]);

                                if (mapManager.Selectable(unitTypeGID))

                                {

                                    ulong unitGID = System.Convert.ToUInt64(feature.ColumnValues["UNITGID"]);

                                    selectedUnits.Add(unitsManager[unitTypeGID, unitGID]);

                                }

                            }

                        }

                        sffl.Close();

                    }

 


This is an urgent matter since I need to release a new version of our application by 1/7/2013


 


Thanks,

Chris


 



 Hello Chris,


 
 Thanks for your post, with the stacktrace, I can't see more information, but the problem happened at BaseShape.IntersectsCore and NetTopologySuite, so you are using the GeometryLibrary.Managed, and there is only three lines of codes, can you provide your baseShape and targetShape WKB or WKT to me that I can test with?

            if (geometryLibrary == GeometryLibrary.Managed)
             {
                 Geometry thisGeometry = ShapeConverter.ShapeToJtsShape(this);
                 Geometry targetGeometry = ShapeConverter.ShapeToJtsShape(targetShape);
 
                 intersects = thisGeometry.Intersects(targetGeometry);
             }

 Regards,
 
 Gary