Re: [mkgmap-dev] is_in with own Tags?

2021-02-22 Thread Ticker Berkin
Hi Jan

To suppress a point POI if is_in an area/polygon that may also generate
one:

leisure=stadium & sport=swimming & mkgmap:area2poi!=* &
  is_in(leisure, stadium, in_or_on)=false &
  is_in(leisure, water_park, in_or_on)=false &
  is_in(leisure, swimming_pool, in_or_on)=false
  {...stadium swim...} [0x...]

and repeat for the other types

To suppress one derived from a polygon if also in another:

leisure=stadium & sport=swimming & mkgmap:area2poi=* &
  is_in(leisure,
water_park, in_or_on)=false &
  is_in(leisure, swimming_pool,
in_or_on)=false
  {...stadium swim...} [0x...]

etc. ie similar to above but remove the test for is_in own type

There is a problem with this however; if the centre/placement point of
the outer polygon falls in_or_on the inner, neither will generate a
POI!

Ticker

On Mon, 2021-02-22 at 10:52 +0100, jan meisters wrote:
> Hi Ticker,
> 
> thank you - yes, that explains a lot of my troubles.
> 
> But - if I got you right: isn`t this what I need?
>   For an area2poi POI, it is almost certain that it is_in(its own
> type)
>   but you can exclude it if is_in(the other types).
> Do you have an example for the mentioned exclusion?
> 
> Concerning deletion: it seemed to be easier to delete unwanted POIs
> while testing, but indeed I prefer to handle this by tagging later.
> For sure I want to miss as little information as possible, but
> distinguish the available - I dropped the corresponding naming
> actions for simplification, and the mopup at the end also ;-)
> 
> Jan
> 
> 
> > Am 21.02.2021 um 22:32 schrieb Ticker Berkin <
> > rwb-mkg...@jagit.co.uk>:
> > 
> > Hi Jan
> > 
> > I don't think you'll be able to do what you hope for.
> > 
> > Each possible POI comes either:
> > a) direct from a point
> > b) from a polygon if --add-pois-to-areas, setting
> > mkgmap:area2poi=true
> >   This happens regardless of any rules etc.
> > 
> > All you can do in the points rule processing is choose to display a
> > POI
> > or not.
> > 
> > For a direct POI, you can test if is_in any of the types of polygon
> > and
> > suppress it if you choose.
> > 
> > For an area2poi POI, it is almost certain that it is_in(its own
> > type)
> > but you can exclude it if is_in(the other types).
> > 
> > There is no is_in() test for being in a polygon (of some type) that
> > is
> > in another polygon (of same or any other type). 
> > 
> > It is clearer to apply these tests to the POI generation rule
> > rather
> > than {delete} the tag to be tested. For {delete} to work, it has to
> > be
> > done before the rule that might generated the [POI]. It is obscure
> > to
> > show the {delete} afterwards, even though, with careful rule
> > ordering,
> > the same effect could be achieved. 
> > 
> > Does this make sense?
> > 
> > Ticker
> > 
> > On Sun, 2021-02-21 at 18:04 +0100, jan meisters wrote:
> > > (Still problems with attachments. Now with link)
> > > 
> > > Hi Ticker,
> > > 
> > > I want to ask for relevant swimmings, one after another, and
> > > after
> > > every rule exclude further swimmings inside aleady matched areas.
> > > In the end the style should dismiss e.g. leisure=swimming_pools
> > > which
> > > lay in a (leisure=stadium & sport=swimming) already matched:
> > > 
> > > 1.leisure=stadium & sport=swimming {name '${name}
> > > (stadium
> > > swim)‘ | '(stadium swim)'} [0x2d09 resolution 24]
> > >   sport=swimming & is_in(leisure,stadium,in_or_on)=true &
> > > is_in(sport,swimming,in_or_on)=true {delete sport}
> > > 2.leisure=water_park & sport=swimming {name '${name}
> > > (waterpark swim)‘ | '(waterpark swim)'} [0x2d09 resolution 24]
> > >   sport=swimming & is_in(leisure, water_park,in_or_on)=true &
> > > is_in(sport,swimming,in_or_on)=true {delete sport}
> > > 3.leisure=swimming_pool & sport=swimming {name '${name}
> > > (pool
> > > swim)‘ | ‚(pool swim)'} [0x2d09 resolution 24]
> > >   sport=swimming & is_in(leisure, swimming_pool,in_or_on)=true &
> > > is_in(sport,swimming,in_or_on)=true {delete sport}
> > > 4.…
> > > 
> > > With the above ruleset I have correct results for nodes so far,
> > > but
> > > not for polygons.
> > > The is_in-rule seems to lack the epression of
> > > is_n(leisure=stadium &
> > > sport=swimming), instead matches a polygons own swimming as well 
> > > -
> > > what I don´t want.
> > > But I´ve got no clue how to write it.
> > > 
> > > In swim.osm the surrounding left stadium has swimming, the right
> > > one
> > > not. Inside both stadium, water_park and sports_centre as area
> > > and
> > > poi. (See http://files.mkgmap.org.uk/detail/500 for the following
> > > screenshots)
> > > 
> > > Above ruleset gives this: 1-result.jpg
> > > In left stadium pois for stadium/swim (area, area inside, poi
> > > inside), nothing else: correct.
> > > In right stadium pois for all swim inside except for the areas:
> > > wrong.
> > > 
> > > What I expect is this: 2-expected.jpg
> > > Left as before, but In the right pois for all swim inside
> > > 

Re: [mkgmap-dev] is_in with own Tags?

2021-02-22 Thread jan meisters
Hi Ticker,

thank you - yes, that explains a lot of my troubles.

But - if I got you right: isn`t this what I need?
For an area2poi POI, it is almost certain that it is_in(its own type)
but you can exclude it if is_in(the other types).
Do you have an example for the mentioned exclusion?

Concerning deletion: it seemed to be easier to delete unwanted POIs while 
testing, but indeed I prefer to handle this by tagging later.
For sure I want to miss as little information as possible, but distinguish the 
available - I dropped the corresponding naming actions for simplification, and 
the mopup at the end also ;-)

Jan


> Am 21.02.2021 um 22:32 schrieb Ticker Berkin :
> 
> Hi Jan
> 
> I don't think you'll be able to do what you hope for.
> 
> Each possible POI comes either:
> a) direct from a point
> b) from a polygon if --add-pois-to-areas, setting mkgmap:area2poi=true
>   This happens regardless of any rules etc.
> 
> All you can do in the points rule processing is choose to display a POI
> or not.
> 
> For a direct POI, you can test if is_in any of the types of polygon and
> suppress it if you choose.
> 
> For an area2poi POI, it is almost certain that it is_in(its own type)
> but you can exclude it if is_in(the other types).
> 
> There is no is_in() test for being in a polygon (of some type) that is
> in another polygon (of same or any other type). 
> 
> It is clearer to apply these tests to the POI generation rule rather
> than {delete} the tag to be tested. For {delete} to work, it has to be
> done before the rule that might generated the [POI]. It is obscure to
> show the {delete} afterwards, even though, with careful rule ordering,
> the same effect could be achieved. 
> 
> Does this make sense?
> 
> Ticker
> 
> On Sun, 2021-02-21 at 18:04 +0100, jan meisters wrote:
>> (Still problems with attachments. Now with link)
>> 
>> Hi Ticker,
>> 
>> I want to ask for relevant swimmings, one after another, and after
>> every rule exclude further swimmings inside aleady matched areas.
>> In the end the style should dismiss e.g. leisure=swimming_pools which
>> lay in a (leisure=stadium & sport=swimming) already matched:
>> 
>> 1.   leisure=stadium & sport=swimming {name '${name} (stadium
>> swim)‘ | '(stadium swim)'} [0x2d09 resolution 24]
>>  sport=swimming & is_in(leisure,stadium,in_or_on)=true &
>> is_in(sport,swimming,in_or_on)=true {delete sport}
>> 2.   leisure=water_park & sport=swimming {name '${name}
>> (waterpark swim)‘ | '(waterpark swim)'} [0x2d09 resolution 24]
>>  sport=swimming & is_in(leisure, water_park,in_or_on)=true &
>> is_in(sport,swimming,in_or_on)=true {delete sport}
>> 3.   leisure=swimming_pool & sport=swimming {name '${name} (pool
>> swim)‘ | ‚(pool swim)'} [0x2d09 resolution 24]
>>  sport=swimming & is_in(leisure, swimming_pool,in_or_on)=true &
>> is_in(sport,swimming,in_or_on)=true {delete sport}
>> 4.   …
>> 
>> With the above ruleset I have correct results for nodes so far, but
>> not for polygons.
>> The is_in-rule seems to lack the epression of is_n(leisure=stadium &
>> sport=swimming), instead matches a polygons own swimming as well -
>> what I don´t want.
>> But I´ve got no clue how to write it.
>> 
>> In swim.osm the surrounding left stadium has swimming, the right one
>> not. Inside both stadium, water_park and sports_centre as area and
>> poi. (See http://files.mkgmap.org.uk/detail/500 for the following
>> screenshots)
>> 
>> Above ruleset gives this: 1-result.jpg
>> In left stadium pois for stadium/swim (area, area inside, poi
>> inside), nothing else: correct.
>> In right stadium pois for all swim inside except for the areas:
>> wrong.
>> 
>> What I expect is this: 2-expected.jpg
>> Left as before, but In the right pois for all swim inside including
>> areas.
>> 
>> Hope I made it clearer
>> Jan
>> 
>> 
>>> Am 21.02.2021 um 13:01 schrieb Ticker Berkin <
>>> rwb-mkg...@jagit.co.uk>:
>>> 
>>> Hi Jan
>>> 
>>> I'm slightly confused as to what you are trying to do here when you
>>> say
>>> it works for nodes but not polygons.
>>> 
>>> After you've output a POI from the first rule what are you trying
>>> to
>>> do?
>>> 
>>> Ticker
>>> 
>>> On Sun, 2021-02-21 at 10:42 +0100, jan meisters wrote:
 Hi Gerd,
 
 my first impression didn´t get trough further test.
 
 This works for nodes, but not for polygons:
leisure=stadium & sport=swimming [0x2d09 resolution 24]
sport=swimming & is_in(leisure,stadium,in_or_on)=true &
 is_in(sport,swimming,in_or_on)=true {delete sport}
 
 It matches it´s own swimming tag as well, not only when stadium
 is
 given.
 Tried various spellings/brackets, but I can´t get it to work for
 stadium and swimming as a combination only.
 I guess we don´t have a syntax for this?
 
 Attached a small example.
 
 Jan
 
 
> Am 16.02.2021 um 18:28 schrieb jan meisters :
> 
> Hi Gerd,
> 
> so easy - that works!
> Thanks for helping