[geos-devel] Possible difference anomaly

Martin Davis mtnclimb at gmail.com
Wed Jan 2 09:26:26 PST 2019


As Paul says, this is expected behaviour, due to the fact that in general
constructed intersection vertices do not lie exactly on the line segments
which intersect.  Furthermore, this can't be solved by using a coarser
precision model - that just makes the problem worse!

So the only way to "solve" this is to ask a different question.  One
possibility is to to process all or some of the input polygons to form a
properly noded coverage.  Or, use a tolerance value in the overlaps
predicate, and accept that the output coverage will only be approximately
accurate.

Both of these solutions will require some new algorithms in GEOS...

On Wed, Jan 2, 2019 at 7:48 AM Paul Meems <bontepaarden at gmail.com> wrote:

> Hi List,
>
> I'm creating irregular polygons and I don't want to let them overlap.
> So before adding the polygon to my list of 'good' polygons, I do an
> overlap check first.
> When the polygon overlaps with an existing polygon I do a clip difference
> and add the clipped polygon to my good list.
>
> Sometimes two polygons still overlap after a clip difference.
>
> I managed to extract two sets that barely overlap. The first set doesn't
> overlap anymore after clipping the second one is still overlapping.
>
> Set 1:
> shp = POLYGON ((259449.071118579 543868.469050065,259460.460699968
> 543878.23006619,259463.245769758 543873.768560297,259455.578068317
> 543860.876455946,259449.071118579 543868.469050065))
> shp2 = POLYGON ((259463.243735243 543856.317227775,259458.0148573
> 543864.973555723,259462.906856719 543873.198728218,259471.741696109
> 543861.450443661,259463.243735243 543856.317227775))
> shp3 (clipped result) = POLYGON ((259463.243735243
> 543856.317227775,259458.014857301 543864.973555722,259462.906856719
> 543873.198728217,259471.741696109 543861.450443661,259463.243735243
> 543856.317227775))
>
> Set 2:
> shp = POLYGON ((259073.014081524 544320.092508488,259085.267633063
> 544321.677731439,259085.942168897 544320.308101652,259074.192475622
> 544310.983687036,259073.014081524 544320.092508488))
> shp2 = POLYGON ((259087.677538158 544333.393525226,259097.260135269
> 544321.853428493,259090.546766392 544316.354731347,259079.984140336
> 544327.005127152,259087.677538158 544333.393525226))
> shp3 (clipped result) = POLYGON ((259087.677538158
> 544333.393525226,259097.260135269 544321.853428493,259090.546766392
> 544316.354731347,259085.267633064 544321.677731438,259085.267633063
> 544321.677731439,259085.267633062 544321.677731439,259079.984140336
> 544327.005127152,259087.677538158 544333.393525226))
>
> I'm using C# with MapWinGIS to do the actions:
>             if (shp.Overlaps(shp2))
>             {
>                 var shp3 = shp2.Clip(shp, tkClipOperation.clDifference);
>                 Assert.IsFalse(shp.Overlaps(shp3), "New shape still
> overlaps");
>             }
>
> MapWinGIS is using the GDAL v2.3.3 binaries from GisInternals which in
> turn is using geos-3.4
> MapWinGIS is directly porting its functions to the GEOS functions:
>
> https://github.com/MapWindow/MapWinGIS/blob/master/src/COM%20classes/Shape.cpp#L1194
>
> https://github.com/MapWindow/MapWinGIS/blob/master/src/COM%20classes/Shape.cpp#L1302
>
> Before I report this as a defect I want to know if my workflow and
> expectations are correct.
>
> Thanks,
>
> Paul
> _______________________________________________
> geos-devel mailing list
> geos-devel at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/geos-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/geos-devel/attachments/20190102/14dbdc5d/attachment.html>


More information about the geos-devel mailing list