
Hi Gerd Case 1 looks like 2 independent polygons that happen to be touching. Before Wood2 is planted, Tree1 is on the edge of Wood1. Should mapping Wood2 change this state? - I don't know. If these get merged anyway to handle mp-cutting then we have forced the answer - it will no longer be ON. Yes to the rest. POINT ON test should invoke merging, but this isn't necessary for the IN/IN_OR_ON Ticker On Tue, 2020-02-11 at 09:43 +0000, Gerd Petermann wrote:
Hi Ticker,
I've attached a sample file. Assume point rule natural=tree & isin(landuse,forest,ON)=true {...}
For me, tree1 is not ON, but IN, so result should be false ON would be okay for tree2 and tree4 The node tree3 is obbiously IN but if multipolygon cutting devides the mp exactly on the line it would be on two boundaries unless we merge them again for the test.
Reg. performance it probably doesn't matter much, these cases are rare and the point-in-polygon test is rather fast compared to the line-in-polygon test.
Gerd
________________________________________ Von: mkgmap-dev <mkgmap-dev-bounces@lists.mkgmap.org.uk> im Auftrag von Ticker Berkin <rwb-mkgmap@jagit.co.uk> Gesendet: Dienstag, 11. Februar 2020 10:05 An: Development list for mkgmap Betreff: Re: [mkgmap-dev] More method options for is_in function
Hi Gerd
It's important to handle the polygons as merged for the LINE and POLYGON processing, so that internal splitting by multi-polygon processing doesn't affect the answer relating to ON queries. For overlapping polygons, however, the ON query is ambiguous and I'm not sure how much effort it is worth taking to resolve it with respect to the edges of one polygon that are within the other.
I've just seen your next posting.
For POINTs: I agree, much the same as above applies to the ON query.
So, we need to decide on the policy for ON queries relating to the OSM defined edges of one polygon within another polygon, or just ignore the issue on the grounds that the situation is unlikely and it is an arbitr ary decision anyway.
Ticker
On Tue, 2020-02-11 at 08:31 +0000, Gerd Petermann wrote:
Hi Ticker,
my understanding is that is_in(.., 'on') returns true if the point is on the boundary, not in or out. With line and polygon rules we merge overlapping polygons before we test, so I tried to do something similar with points.
Gerd
________________________________________ Von: mkgmap-dev <mkgmap-dev-bounces@lists.mkgmap.org.uk> im Auftrag von Ticker Berkin <rwb-mkgmap@jagit.co.uk> Gesendet: Dienstag, 11. Februar 2020 09:24 An: Development list for mkgmap Betreff: Re: [mkgmap-dev] More method options for is_in function
Hi Gerd
Yes, overlapping polygons was the case I was thinking about. I'd say that is_in(.., 'on') should be true if ON the edge of one, regardless of being IN the other.
Can you commit my last change and then, if you are not changing IsInUtil at the moment, I'd like to move some of the code around. I'll also start some documentation for the Style Manual.
Ticker
On Mon, 2020-02-10 at 18:48 +0000, Gerd Petermann wrote:
Hi Ticker,
reg. POINT is_in(..., 'on') : You think about the case that a point is inside one polygon and on boundary of another? Should not happen with correct OSM data but the question is also what result you want to get. reg. isComplete(): This is about input data where not all coords are known and thus the geometry of the way is undefined. Should never happen with normal input. I am not sure but I think splitting at tile borders did not yet happen with the polygons, only the preparation is done by adding nodes at the tile border.
Gerd
________________________________________ Von: mkgmap-dev <mkgmap-dev-bounces@lists.mkgmap.org.uk> im Auftrag von Ticker Berkin <rwb-mkgmap@jagit.co.uk> Gesendet: Montag, 10. Februar 2020 18:09 An: Development list for mkgmap Betreff: Re: [mkgmap-dev] More method options for is_in function
Hi Gerd
I've re-implemented the POINT test within IsInFunction, using the stopping methods etc, which are now coded, but only relevant for this context at the moment. This implementation has other advantage in that the method can control the onBoundary condition. Also the logic in calcInsideness can give the wrong answer for POINT is_in(..., 'on').
I didn't want to change IsInUtil while you are working on it and I'm not sure yet of the best way to handle the LINE/POLYGON versions.
There are a couple of aspects of these that occur to me:
It would be clearer to test for kind=POINT/LINE/POLYGON etc rather than el instanceof.
w.isComplete(): - Will this will cause different answers depending on tile splitting, or is the complete polygon represented; even the bits outside the tile? - The ANY methods should be processed and will be correct.
Thanks for spotting my error with tstMethod.
This patch also improves the method error message; listing the possible methods for the context.
Ticker
On Mon, 2020-02-10 at 13:14 +0000, Gerd Petermann wrote:
Hi all,
see http://www.mkgmap.org.uk/websvn/revision.php?repname=mkgmap&rev =4 44 2
@Ticker: I assume you are working on an alternative implementation of the methods in IsInUtil? If not I'd like to remove all the code duplication introduced with the last patch.
Gerd _______________________________________________ mkgmap-dev mailing list mkgmap-dev@lists.mkgmap.org.uk http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev
mkgmap-dev mailing list mkgmap-dev@lists.mkgmap.org.uk http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev
mkgmap-dev mailing list mkgmap-dev@lists.mkgmap.org.uk http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev