[mkgmap-dev] Failure to understand apply logic in relations - or failure in the logic
From Felix Hartmann extremecarver at gmail.com on Thu Nov 25 17:07:04 GMT 2021
Ah sorry - I missed the entry about that point in the style manual.... Now I understand it. On Thu, 25 Nov 2021 at 18:00, Felix Hartmann <extremecarver at gmail.com> wrote: > 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 at 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 at 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.html >>> >>> On Tue, 23 Nov 2021, 19:32 Mike Baggaley <mike at 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 at gmail.com] >>>> *Sent:* 23 November 2021 13:31 >>>> *To:* Development list for mkgmap <mkgmap-dev at 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 > > -- Felix Hartman - Openmtbmap.org & VeloMap.org -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://www.mkgmap.org.uk/pipermail/mkgmap-dev/attachments/20211125/4763bbc6/attachment.html>
- Previous message: [mkgmap-dev] Failure to understand apply logic in relations - or failure in the logic
- Next message: [mkgmap-dev] Problem in splitter643
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the mkgmap-dev mailing list