logo separator

[mkgmap-dev] is_in filter

From Gerd Petermann gpetermann_muenchen at hotmail.com on Tue Feb 7 07:52:58 GMT 2017

Hi Carlos,

okay, I keep that in mind. I've already coded the simple solution for
testing and
tried to re-use one of the existing spatial indexes for this 
and found that none works. Another problem is that the existing multipolygon
code 
is always chopping polygons to cut out inner rings. So, I think the first
step is to 
rewrite the mp code (I already started that in the split-shape branch). I
hope I can
make that part much faster.
2nd step is to find a good index, maybe Felix is right and this should
better be done
in a separate step.
Anyway, I expect that this function can easily increase run time by > 100% .

Gerd


Carlos Dávila-2 wrote
> Hi
> First option sounds better, but if nobody can code it by now (sorry, I'm 
> not dev1eloper) second option can be a good start point. Probably a 
> combination of rules of the second type could get a similar effect: 
> !is_in_landuse_residential() & !is_in_landuse_retail() [blablabla...]
> 
> El 06/02/17 a las 20:55, Gerd Petermann escribió:
>> Hi Carlos,
>>
>> okay, I thought about this for a while. We need quite a lot of new code
>> for this, so I think
>> the user interface should be as flexible as possible.
>> If we want to support a style function like is_in(
> <exp>
> )
>> where 
> <exp>
>  can be something like
>> landuse=residential
>> or more complex stuff like
>> landuse=forest | natural=wood
>> In short, I think it should support more or less all Tag_tests including
>> regular expressions
>> and combined expressions. A complete style rule could look like this:
>> building=* & !is_in(landuse=residential | landuse=retail)   [0x13
>> resolution 24]
>> Those Tag_tests are used to filter the enclosing areas (closed ways,
>> multipolygon-relations).
>>
>> I have no idea how to code the part that parses the style file.
>> Is someone volunteering to code these changes?
>> I think about a new class IsInFunction in package
>> uk.me.parabola.mkgmap.osmstyle.function
>> which would call an eval(element) method for each enclosing element. The
>> eval method
>> should return true / false.
>>
>> I'd like to code the needed methods to find the enclosing elements in an
>> efficient way.
>>
>> If nobody finds a way to code the above style changes
>> I can code a style function with a much simpler syntax like this:
>> is_in_
> <key>
> <val>
> ()
>> e.g.
>> is_in_landuse_residential()
>> or
>> is_in_natural_wood()
>> The name of the function gives the test:
>> The enclosing element must have a key 
> <key>
>  with the value 
> <val>
>>
>> Complex tests like regular expressions would not work with this.
>>
>> Gerd
>>
>>
>> ________________________________________
>> Von: mkgmap-dev <

> mkgmap-dev-bounces at .org

> > im Auftrag von Carlos Dávila <

> cdavilam@

> >
>> Gesendet: Samstag, 4. Februar 2017 16:37:11
>> An: Development list for mkgmap
>> Betreff: Re: [mkgmap-dev] is_in filter
>>
>> Yes, I think that would work.
>> I forgot to mention another use case. highway>residential which lies
>> inside residential areas. They have typically maxspeed lower than
>> outside residential areas, but are not correctly tagged in many cases.
>> Proposed filter could be used to lower maxspeed for those ways.
>>
>> El 04/02/17 a las 16:18, Gerd Petermann escribió:
>>> Hi Carlos,
>>>
>>> I see a performance problem if mkgmap has to evaluate that for each
>>> element.
>>> I think it would be better to have a special tag like
>>> mkgmap:remove-if-in=
> <type>
>>> which would tell mkgmap to find out if the object lies (completely)
>>> within a polygon
>>> that has the given type. This can happen after processing all polygon
>>> elements.
>>> The polygons with the given type(s) could be placed in a spatial index
>>> if performance impact
>>> is too heavy.
>>> Do you think that would work as well?
>>>
>>> Gerd
>>>
>>> ________________________________________
>>> Von: mkgmap-dev <

> mkgmap-dev-bounces at .org

> > im Auftrag von Carlos Dávila <

> cdavilam@

> >
>>> Gesendet: Samstag, 4. Februar 2017 16:06:20
>>> An: Development list for mkgmap
>>> Betreff: [mkgmap-dev] is_in filter
>>>
>>> One matter that has been discussed several times on this list is the
>>> need to remove buildings. While removing buildings is becoming
>>> absolutely necessary in many cities, due to massive building imports, it
>>> may be quite convenient to keep them at rural or low densely populated
>>> areas. Would it be possible to have a filter to know if a building is
>>> inside/outside an area tagged landuse=residential, so that a different
>>> rendering may be applied. Ideally area size could be also evaluated.
>>> Perhaps some logic currently existing in mkgmap, used to assign
>>> addresses from bounds, could be reused.
> 
> _______________________________________________
> mkgmap-dev mailing list

> mkgmap-dev at .org

> http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev





--
View this message in context: http://gis.19327.n8.nabble.com/is-in-filter-tp5890564p5890723.html
Sent from the Mkgmap Development mailing list archive at Nabble.com.


More information about the mkgmap-dev mailing list