Oh sorry - no my mistake was different - I used the wrong brackets. However I could not find anywhere where this is documented.working:set route_name_hiking1 = '$(route_name_hiking1) + ${name|not-contained: + :route_name_hiking1}' | 'IWN ${name}' | '$(route_name_hiking1)' | 'IWN'not working:set route_name_hiking1 = '${route_name_hiking1} + ${name|not-contained: + :route_name_hiking1}' | 'IWN ${name}' | '${route_name_hiking1}' | 'IWN'Why do we have to use standard brackets when referencing a value inside the apply action? Usually for referencing a value we need to use curly {} brackets...On Thu, 25 Nov 2021 at 16:17, Felix Hartmann <extremecarver@gmail.com> wrote:I think there is a bug in mkgmap.This line works as intended:set route_name_hiking1 = '${route_name_hiking1} + ${name|not-contained: + :route_name_hiking1}' | 'IWN ${name}' | '${route_name_hiking1}' | 'IWN'while this line in the relations file fails to work as expected - the part after the + is not added - or at least not visible (strangely the map size is pretty similar).set route_name_hiking1 = '${route_name_hiking1} + ${name}' | 'IWN ${name}' | '${route_name_hiking1}' | 'IWN'So only by including the not-contained filter ithe relations file is actually adding the names of the routes after each other - while they are not added without such a filter.On Wed, 24 Nov 2021 at 10:45, Felix Hartmann <extremecarver@gmail.com> wrote:I will try your example to see where it goes wrong. Apply_once is about forward and backward relations. It should not matter: https://www.mkgmap.org.uk/pipermail/mkgmap-dev/2010q1/006268.htmlOn Tue, 23 Nov 2021, 19:32 Mike Baggaley <mike@tvage.co.uk> wrote:Hi Felix,
This is what I have in my relations file for routes:
type=route & state!=proposed & route~'.*bicycle.*' & network~'.*ncn.*' & ref~'\d*' { apply_once { set nationalbicycleroute=yes; set rn='$(rn) & ${ref|not-contained: & :rn}' | '$(rn)' | '${ref}'; set nrn='$(nrn) & ${ref|not-contained: & :nrn}' | '$(nrn)' | '${ref}'; } }
type=route & state!=proposed & route~'.*bicycle.*' & network~'.*rcn.*' & ref~'\d*' { apply_once { set regionalbicycleroute=yes; set rn='$(rn) & ${ref|not-contained: & :rn}' | '$(rn)' | '${ref}'; } }
type=route & state!=proposed & (route~'.*foot.*' | route~'.*hiking.*') & network~'.*[nr]wn.*' & name~".*\(.*\)" { set name='${name|subst:"\(.*\)~>"}'}
type=route & state!=proposed & (route~'.*foot.*' | route~'.*hiking.*') & network~'.*nwn.*' & name=* { apply_once { set nationalhikingroute=yes; set rn='$(rn) & ${name|not-contained: & :rn}' | '$(rn)' | '${name}'; set nrn='$(nrn) & ${name|not-contained: & :nrn}' | '$(nrn)' | '${name}'; set nwrn='$(nwrn) & ${name|not-contained: & :nwrn}' | '$(nwrn)' | '${name}'; } }
type=route & state!=proposed & (route~'.*foot.*' | route~'.*hiking.*') & network~'.*rwn.*' & name=* { apply_once { set regionalhikingroute=yes; set rn='$(rn) & ${name|not-contained: & :rn}' | '$(rn)' | '${name}'; } }
The most significant difference is that I have apply_once rather than apply.
Hope this helps,
Mike
From: Felix Hartmann [mailto:extremecarver@gmail.com]
Sent: 23 November 2021 13:31
To: Development list for mkgmap <mkgmap-dev@lists.mkgmap.org.uk>
Subject: [mkgmap-dev] Failure to understand apply logic in relations - or failure in the logic
route=hiking { apply { set route=hiking; set route_name = '${route_name} & ${name}' | '${name}'; add route_ref = '${ref}'; } }
I would expect that this rule if several relations are matching one line, adds all names of route=hiking relations to the route_name variable separated by "&". However it is only adding the first found.
Where is my mistake?
--
Felix Hartman - Openmtbmap.org & VeloMap.org
--Felix Hartman - Openmtbmap.org & VeloMap.org--Felix Hartman - Openmtbmap.org & VeloMap.org