Steve Ratcliffe wrote:
On 27/09/09 21:28, Felix Hartmann wrote:
  
Thanks for your work, sadly though for me at the moment the style branch
is useless because continue on the strictly ordered style rules has no
effect. (I need to have the rules running not only in order, but also if
continue given, several rules on the same object. (actually I don't even
    

Thanks for testing it.  I was trying out your style file and it didn't
appear to be working for me either but I couldn't be sure, since I
don't really know what it should be like.

Obviously it is a bug if multiple lines are not being created.
  
Multiple lines ARE created. but what does not work is rules like the following:

highway=primary                         { name '${name} pri' | 'primary' } continue
highway=*  { name '${name} (${ref})' | '${ref}' | '${name}' } continue

if a highway=primary has a reference set this case will result in the reference being dropped. I would need it to be run without the reference being dropped.

Actually this concept of continue is not ideal for such rules, best would be a command to start again from continue on all lines:
i.e.

I have a: highway=path; route=mtb; mtb:scale=0: mtb:scale:uphill=0

mtb:scale=0  & mtb:scale:uphill=0 & route=mtb { name 'mtbrt00 ${name}' | 'mtbrt00' } continue
mtb:scale:uphill=0 & route=mtb { name 'mtbrt.0 ${name}' | 'mtbrt.0' } continue
mtb:scale=0 & route=mtb { name 'mtbrt0. ${name}' | 'mtbrt0.' } continue

highway=path                             { name '${name} pth' | 'pth' } continue


would make all three rules being enacted which I do not want, I only want to have further rules still run again on the same objects (if not yet written out to 0x* without continue).
best would be to have the continue tag working as a new pass, so on each continue tag, all objects (that are not yet written out to 0x* without continue) will be parsed again. so the resulting way would be named: name="mtbrt00mtbrt.0mtbrt0.{name}pth"
I wan't the result however to be "mtbrt00 {name} pth"

ideal would be to have inside the style-file the following:
mtb:scale=0  & mtb:scale:uphill=0 & route=mtb { name 'mtbrt00 ${name}' | 'mtbrt00' } parseagain
mtb:scale:uphill=0 & route=mtb { name 'mtbrt.0 ${name}' | 'mtbrt.0' }
mtb:scale=0 & route=mtb { name 'mtbrt0. ${name}' | 'mtbrt0.' }

highway=path                             { name '${name} pth' | 'pth' } parseagain

to reach my above wanted result.




Objects should only be excluded after parsing through lines with 0x* but without continue. So I could start my style-file with boundaries with continue (before any rules are run)
then things I don't want to be considered for the main rules block like:

highway=motorway                 [0x1e resolution 16]
highway=motorway_link             [0x28 resolution 20]
highway=motorway_junction         [0x28 resolution 20]
highway=trunk                     [0x28 resolution 18]
highway=trunk_link                 [0x28 resolution 20]
highway=* & motorroad=yes         [0x28 resolution 18]
highway=* & motoroad=yes         [0x28 resolution 18]

Rules (run against everything that is still, in, but motorways are already out, the same for say railway=* & tunnel=* - objects which I don't need the main rules block to be run against so that it has speed improvements)

highway=* [0x* resolution * continue]



Actually it would be great if we could define a type, say 0x999999 which drops items out from further processing because we don't want them to be displayed at all in our map. I.e. I don't want my maps to include waterway=* & tunnel=yes, but I want to display all tunnel=yes with type 0x*. To speed up the processing any object which is on type 0x99999 is dropped from further processing and not put into the map. This would avoid a lot of != use and could speed up mkgmap because you can quickly exclude objects from the database that the rules and following lines have to be run against.

Plus, it runs about 10 times slower than the trunk branch (plus continue
    

I've not really looked at the performance yet, but there is no reason
why it should be any slower, so I'm sure that is fixable.

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