logo separator

[mkgmap-dev] Commit r4397: implement and document new option --is-in-landuse=value[, value...]

From Gerd Petermann gpetermann_muenchen at hotmail.com on Wed Dec 18 08:41:31 GMT 2019

Hi all,

with r4398 I've reverted the changes from r4397.
This needs much more effort to work as wanted. Even with the complete patch posted yesterday the results are only a good guess. For exact results we need very different algorithms and data structures, esp. it is not (yet) possible to find out if a node is on the boundary of a polygon.
So, I think we should collect a few special cases first and try to find a common decision about the expected result.
I'd try to put them into a unit test and maybe we find code that works.

Gerd


________________________________________
Von: mkgmap-dev <mkgmap-dev-bounces at lists.mkgmap.org.uk> im Auftrag von jan meisters <jan_m23 at gmx.net>
Gesendet: Dienstag, 17. Dezember 2019 23:27
An: Development list for mkgmap
Betreff: Re: [mkgmap-dev] Commit r4397: implement and document new option --is-in-landuse=value[, value...]

Hi all,

while testing up to r4397 with is-in I had a lot of erratic results, most of them due to overlapping or area-crossings.
So - if reasonable - I opt for Tickers approach.

Jan

> Am 17.12.2019 um 19:39 schrieb Gerd Petermann <gpetermann_muenchen at hotmail.com>:
>
> Hi Ticker,
>
> I can draw two triangles A and B in such a way that they are overlapping but no point of A is in B and no point of B is in A.
>
> Of course I can also draw an unclosed straight way which lies almost completely within an area but endpoints are outside.
> So, as long as we don't perform much more complex tests we just get a good guess.
>
> So, for a precise result I would not want to do the calculation for all elements just in case the style might ask for it.
>
> Gerd
>
> ________________________________________
> Von: mkgmap-dev <mkgmap-dev-bounces at lists.mkgmap.org.uk> im Auftrag von Ticker Berkin <rwb-mkgmap at jagit.co.uk>
> Gesendet: Dienstag, 17. Dezember 2019 18:05
> An: Development list for mkgmap
> Betreff: Re: [mkgmap-dev] Commit r4397: implement and document new option --is-in-landuse=value[, value...]
>
> Hi Gerd
>
> I was thinking it would be slow to do the full test and I've seen your
> summary of what you've implemented and have no problem with it.
>
> The meaning with either being multiPolygons would be almost impossible
> to define, but otherwise I'd define it as such:
>
> Point: if within or on edge then IN otherwise OUT.
>
> Way/polygons: if all points are outside or on edge, then OUT, if some
> are inside and some outside then STRADDLE, otherwise, ie at least 1
> point is inside, IN
>
> Ticker
>
> On Tue, 2019-12-17 at 13:32 +0000, Gerd Petermann wrote:
>> Hi Ticker,
>>
>> I agree it would be good to know.
>> Problem: it would require a completely different implementation and
>> probably a lot more CPU power to compute that information.
>>
>> The current test is very lazy, it works like the one for the
>> mkgmap:admin_level tags. It computes a single point that represents
>> the OSM element
>> and checks if that point is within or on the boundary of any
>> landuse=x polygon. I think that was OK for the original problem
>> (building inside landuse=residential),
>> but it was already problematic with the idea to set a maxspeed value
>> for a major highway "inside" a residential area.
>>
>> So, what results do we get?
>> - A point is either outside, inside or on the boundary of a polygon.
>> - A line or polygon can be outside, inside, on the boundary or partly
>> overlapping a single polygon. What would be the result for a way that
>> builds a part of the boundary of two natural=wood multipolygons? What
>> would be the result when the way crosses such a boundary, but is
>> always inside one of the natural=wood polygons? Also, a way can be
>> inside one polygon and partly inside another, as OSM allows
>> overlapping polygons.
>> Think of a landuse=forest multipolygon with an inner way
>> natural=water . Is the inner way inside, outside or on the boundary?
>> Remenber, the hook doesn't "see" the multipolygon, it processes the
>> results of the MultipolygonCutter.
>>
>> For JOSM I've implemented some area operators like a inside b or vice
>> versa, also a not inside b, but they only work on nodes and polygons,
>> and they are rather slow.
>> See https://josm.openstreetmap.de/ticket/10391
>> I assume you have something similar in mind?
>>
>> Gerd
>>
>>
>>
>>
>> ________________________________________
>> Von: Pinns UK <osm at pinns.co.uk>
>> Gesendet: Dienstag, 17. Dezember 2019 13:08
>> An: Gerd Petermann; mkgmap-dev at lists.mkgmap.org.uk
>> Betreff: Re: AW: [mkgmap-dev] Commit r4397: implement and document
>> new option --is-in-landuse=value[, value...]
>>
>> Hi Gerd
>>
>> That would be very useful
>>
>> r
>>
>> Nick
>>
>> On 17/12/2019 11:15, Gerd Petermann wrote:
>>> Hi Nick,
>>>
>>> OK, I already expected this when I asked if landuse is enough...
>>> I'll add code to support all polygons and see how to document it. I
>>> guess it should be no problem when I revert the changes in r4397.
>>>
>>> Gerd
>>>
>>> ________________________________________
>>> Von: mkgmap-dev <mkgmap-dev-bounces at lists.mkgmap.org.uk> im Auftrag
>>> von Pinns UK <osm at pinns.co.uk>
>>> Gesendet: Dienstag, 17. Dezember 2019 11:53
>>> An: mkgmap-dev at lists.mkgmap.org.uk
>>> Betreff: Re: [mkgmap-dev] Commit r4397: implement and document new
>>> option --is-in-landuse=value[, value...]
>>>
>>> Hi Gerd,
>>>
>>> Oops, I forgot to look at the documentation!
>>>
>>> Personally , I think it is such a useful option which will open up
>>> a host of new possibilities when/if you are able to extend this to
>>> include all polygons.
>>>
>>> Again, thanks for all your hard work!
>>>
>>> Nick
>>>
>>> On 17/12/2019 09:42, Pinns UK wrote:
>>>
>>> Hi Gerd
>>>
>>> I've been able to change footpaths on (some?)  amenity graveyards
>>> to paths by just setting the lu:cemetery to yes
>>>
>>> I first tried :
>>>
>>> amenity=grave_yard {set landuse=cemetry;echotags"change2landuse"}
>>>
>>>   mkgmap:lu:cemetery=*  & highway=footway  {set highway=path}
>>>
>>>
>>> however this did not work , ie footpaths on cemeteries didn't
>>> change to paths  and the echotags didn't show any :lu:cemetery
>>>
>>> then I tried
>>>
>>>  amenity=grave_yard {set mkgmap:lu:cemetery=yes}
>>>
>>>   mkgmap:lu:cemetery=*  & highway=footway  {set highway=path}
>>>
>>>  This seems to work for some (?)  graveyards (Haven't checked this
>>> on 2 graveyards only)
>>>
>>> My question is ,does mkgmap check if highways cross a polygon   as
>>> soon as it parses mkgmap:lu:cemetery=*  & highway=footway
>>>
>>> or are the checks done before 'Lines' are parsed?
>>>
>>> If the user can set the value then what ,if any ,are the effects -
>>> ie
>>>
>>> natural=wood { set mkgmap:lu:cemetery=yes}
>>>
>>>  If this works then Arndt seems to have a point?
>>>
>>> r
>>>
>>> Nick
>>>
>>>
>>> Does mkgmap check if graveyard
>>>
>>> On 15/12/2019 12:28, Arndt Röhrig wrote:
>>> is-in-landuse, nice function!
>>>
>>> with this new option i set acces=no for bicycles when the way is
>>> within a cemetary. (& no tag say, that bicycle is ok)
>>>
>>> There are still a few polys where that could be used.
>>> amenity=grave_yard, amenity=hospital, leisure=pitch ....
>>>
>>> maybe its better to name the option is-in-polygone:polygone=value
>>>
>>> Arndt
>>>
>>>
>>>
>>> svn commit < svn at mkgmap.org.uk<mailto:svn at mkgmap.org.uk>> hat am
>>> 15. Dezember 2019 um 10:05 geschrieben:
>>>
>>>
>>> Version mkgmap-r4397 was committed by gerd on Sun, 15 Dec 2019
>>>
>>> implement and document new option --is-in-landuse=value[,value...]
>>> - svn rename ResidentialHook.java to LanduseHook.java
>>> - remove support for undocumented option --residential-hook=false
>>> - warn if style uses mkgmap:residential which was replaced by
>>> mkgmap:lu:residential
>>>
>>>
>>> http://www.mkgmap.org.uk/websvn/revision.php?repname=mkgmap&rev=439
>>> 7
>>> _______________________________________________
>>> mkgmap-dev mailing list
>>> mkgmap-dev at lists.mkgmap.org.uk<mailto:
>>> mkgmap-dev at lists.mkgmap.org.uk>
>>> http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev
>>> On 15/12/2019 09:05, svn commit wrote:
>>>
>>> Version mkgmap-r4397 was committed by gerd on Sun, 15 Dec 2019
>>>
>>> implement and document new option --is-in-landuse=value[,value...]
>>> - svn rename ResidentialHook.java to LanduseHook.java
>>> - remove support for undocumented option --residential-hook=false
>>> - warn if style uses mkgmap:residential which was replaced by
>>> mkgmap:lu:residential
>>>
>>>
>>> http://www.mkgmap.org.uk/websvn/revision.php?repname=mkgmap&rev=439
>>> 7
>>> _______________________________________________
>>> mkgmap-dev mailing list
>>> mkgmap-dev at lists.mkgmap.org.uk<mailto:
>>> mkgmap-dev at lists.mkgmap.org.uk>
>>> http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> mkgmap-dev mailing list
>>> mkgmap-dev at lists.mkgmap.org.uk<mailto:
>>> mkgmap-dev at lists.mkgmap.org.uk>
>>> http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev
>> _______________________________________________
>> mkgmap-dev mailing list
>> mkgmap-dev at lists.mkgmap.org.uk
>> http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev
> _______________________________________________
> mkgmap-dev mailing list
> mkgmap-dev at lists.mkgmap.org.uk
> http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev
> _______________________________________________
> mkgmap-dev mailing list
> mkgmap-dev at lists.mkgmap.org.uk
> http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev

_______________________________________________
mkgmap-dev mailing list
mkgmap-dev at lists.mkgmap.org.uk
http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev


More information about the mkgmap-dev mailing list