Feb 8 at 2:14 PM
Edited Feb 8 at 2:16 PM
I tried to find the answer for hours, but I ended up with nothing.. this is a mystery to me.
The following code should do a simple point in Polygon test, but it always returns false for the intersection (I am definitely providing lat/lng coordinates that lies within the polygon):
Dim filedialog As OpenFileDialog = New OpenFileDialog()
filedialog.Title = "Select shapefile (WGS1984 Projection)"
filedialog.InitialDirectory = "C:\temp" 'DE_WGS1984.shp
filedialog.RestoreDirectory = True
If filedialog.ShowDialog() = DialogResult.OK Then
TextBox4.Text = filedialog.FileName
Dim ShapefilePoly As Shapefile = Shapefile.OpenFile(TextBox4.Text)
'lngP/latP is the coordinate to test against the shapefile, e.g. 13.380025, 52.52972
Dim PhotoPoint As New DotSpatial.Topology.Coordinate(lngP, latP)
For Each f As DotSpatial.Data.Feature In ShapefilePoly.Features
Dim pg As DotSpatial.Topology.Polygon = TryCast(f.BasicGeometry, Polygon)
If pg IsNot Nothing Then
If pg.Contains(New DotSpatial.Topology.Point(PhotoPoint)) Then
LiesWithin = True 'never triggered
Could this be a rounding issue, because DotSpatial.Topology.Coordinate truncates lat/lng values beyond 6 decimals?
Thanks so much for any help..
Feb 9 at 8:00 AM
Edited Feb 9 at 2:03 PM
I am a step further.. it seems to have something to do with the Shapefiles I am using. There are some types of Shapefiles where the code works, for some other ones, it doesn't.
Ok, it gets even stranger: The one feature that works for selection is located in Toronto, Highpark. The other feature that doesn't work is located in Berlin, Speeinsel.
Now if I move the Highpark-feature to Berlin Spreeinsel, it also doesn't work anymore (=finds no intersecting points). This is a real mystery.. Both shapes draw perfectly fine on the map.
Ok.. please forgive me for bothering you. It was a completely different issue all the time - the list of coordinates I was passing on was erroneously filtered, such as that in one shapefile, coordinates the right coordinates would get passed on, in another
case, coordinates from somewhere completely different would get passed on. I am really suprised I didn't notice this issue all the time..
Sorry again, and thanks for Dotspatial!
All the best, Grom