
Hi Felix,
Well yes you can commit it as is. But please document somewhere (best in the default style with an example how to cope with it). Is it only oneway=-1 that's reversed by mkgmap? Or are there other tags?
yes, oneway=-1 and oneway=reverse. I don't know why the 2nd alternative is needed, tagInfo doesn't show that oneway=reverse is used.
I agree the new handling is better and easier to write a style for, however the old handling was more straight forward logical because mkgmap simply never reversed something... :-) I can't confirm that. Routable ways with oneway=-1 or oneway=reverse were reversed since r1272.
Is there a need to harmonize oneway values in style? (oneway=reverse, oneway=opposite, oneway=yes, oneway=1, oneway=forward, oneway=backward, oneway=true are all values that I've seen from time to time.). Are there other tags like bicycle=oneway that will change something?
mkgmap treats oneway=1 and oneway=true like oneway=yes, oneway=-1 is treated like oneway=reverse. No other values are recognized, so oneway=forward and oneway=backward are ignored and have to be handled in the style. bicycle=oneway is not handled by mkgmap, but bicycle:oneway and oneway:bicycle are treated by the make-opposite-cycleways option. There are still some other tags without prefix mkgmap: that are interpreted, e.g. barrier=*, highway=* Maybe this should be changed in the future. Gerd
(e.g. highway=path; oneway:bicycle=-1 highway=residential, oneway=yes; bicycle:oneway=no highway=residential; oneway=opposite # or any other of the strange above values sometimes present in OSM )
On 30.04.2014 11:51, GerdP wrote:
Hi Felix,
ah, that sounds good :-) Yes, the patch doesn't restore the old handling of oneways.
If I got that right you have two alternatives: Use two different types for left and right, or use the same type and add tag "oneway=-1" were needed, but should not do both.
With the old version you needed both, and that's what I wanted to fix when I decided to apply the reversing also to overlay lines, but only with this last patch it works as I want it.
I hope you agree that I should commit the patch as is?
Gerd
Felix Hartmann-2 wrote
Hi Gerd, the patch doesn't work correctly (in so far that mkgmap version October 2013 or older worked) - but I think consistent at least now.
If a way is tagged incline=down or incline=negative number (copy=99 further in the style)- it seems to work for the area I checked. If however a way is tagged incline=up (copy=98 further down in the style) - the way ends up in the opposite direction (because I add oneway=-1???).
Now - that could be style related, or not... I actually don't really reverse the ways for layout. So far I just use opposing arrows. If a way is copy=99 - the arrows point to the right (equals in the direction of the way), if a way is copy=98 - then the arrows point to the left and I add a onway=-1. If there would be a command to actually reverse ways (not only set oneway) - then I would not need left/right pointing arrows but just right pointing arrows.
I made the important part bold. I assume mkgmap now actually changes the direction of the way if I manually set oneway=-1....
It's okay for me (will require 10-12 hours checking my style, but actually save me lines in the typfile If I can be sure that mkgmap now actually reverses all ways where I add oneway=-1). However - please tell me for which keys mkgmap now reverses ways? Only oneway=-1? Or are there other keys where mkgmap reverses the way. I do have more direction dependent types than downhill arrows...
Heres all lines of my style that are related to this - In 2013 theese lines worked perfectly consistent (yes they are complicated, but they should work correctly).:
incline >5 & incline <11 & highway=* & mtb:scale:uphill=1 & mtb:scale>0 {set copy=198; set copy1=yes} incline <-5 & incline >-11 & highway=* & mtb:scale:uphill=1 & mtb:scale>0 {set copy=199; set copy1=yes} incline >10 & incline <30 & highway=* & mtb:scale:uphill=1 {set copy=198; set copy1=yes} incline <-10 & incline >-30 & highway=* & mtb:scale:uphill=1 {set copy=199; set copy1=yes} ### maybe make it for all scale:uphill if very light color possible incline >30 & highway=* & mtb:scale:uphill=1 {set copy=98; set copy1=yes} incline <-30 & highway=* & mtb:scale:uphill=1 {set copy=99; set copy1=yes} incline >8 & highway=* & mtb:scale:uphill=2 {set copy=98; set copy1=yes} incline <-8 & highway=* & mtb:scale:uphill=2 {set copy=99; set copy1=yes} incline >30 & highway=* & mtb:scale:uphill=2 & length()>300 {set oneway=-1; set copy=98; set copy1=yes} incline <-30 & highway=* & mtb:scale:uphill=2 & length()>300 {set oneway=yes; set copy=99; set copy1=yes} incline >20 & highway=* & mtb:scale:uphill!=0 & mtb:scale:uphill!=1 & mtb:scale:uphill!=2 {set oneway=-1; set copy=98; set copy1=yes} incline <-20 & highway=* & mtb:scale:uphill!=0 & mtb:scale:uphill!=1 & mtb:scale:uphill!=2 {set oneway=yes; set copy=99; set copy1=yes}
# Make steep pathes downhill only mtb:scale=0 & incline>20 & mtb:scale:uphill!=1 & mtb:scale:uphill!=2 {set oneway=-1; set copy=98; set copy1=yes} mtb:scale=1 & incline>15 & mtb:scale:uphill!=1 & mtb:scale:uphill!=2 {set oneway=-1; set copy=98; set copy1=yes} mtb:scale=1 & incline>20 & mtb:scale:uphill!=1 {set oneway=-1; set copy=98; set copy1=yes} mtb:scale=2 & incline>10 & mtb:scale:uphill!=1 & mtb:scale:uphill!=2 {set oneway=-1; set copy=98; set copy1=yes} mtb:scale=2 & incline>15 & mtb:scale:uphill!=1 {set oneway=-1; set copy=98; set copy1=yes} mtb:scale=3 & incline>10 & mtb:scale:uphill!=1 {set oneway=-1; set copy=98; set copy1=yes} mtb:scale=4 & incline>10 & mtb:scale:uphill!=1 {set oneway=-1; set copy=98; set copy1=yes} mtb:scale=5 & incline>10 & mtb:scale:uphill!=1 {set oneway=-1; set copy=98; set copy1=yes}
mtb:scale=0 & incline<-20 & mtb:scale:uphill!=1 & mtb:scale:uphill!=2 {set oneway=yes; set copy=99; set copy1=yes} mtb:scale=1 & incline<-15 & mtb:scale:uphill!=1 & mtb:scale:uphill!=2 {set oneway=yes; set copy=99; set copy1=yes} mtb:scale=1 & incline<-20 & mtb:scale:uphill!=1 {set oneway=yes; set copy=99; set copy1=yes} mtb:scale=2 & incline<-10 & mtb:scale:uphill!=1 & mtb:scale:uphill!=2 {set oneway=yes; set copy=99; set copy1=yes} mtb:scale=2 & incline<-15 & mtb:scale:uphill!=1 {set oneway=yes; set copy=99; set copy1=yes} mtb:scale=3 & incline<-10 & mtb:scale:uphill!=1 {set oneway=yes; set copy=99; set copy1=yes} mtb:scale=4 & incline<-10 & mtb:scale:uphill!=1 {set oneway=yes; set copy=99; set copy1=yes} mtb:scale=5 & incline<-10 & mtb:scale:uphill!=1 {set oneway=yes; set copy=99; set copy1=yes}
( mtb:scale:uphill=1 ) & ( incline=negative | incline=down | incline=- ) & mtb:scale>0 {add mkgmap:taxi=no; set copy=99; set copy1=yes} ( mtb:scale:uphill=1 ) & ( incline=positive | incline=up | incline=+ ) & mtb:scale>0 {add mkgmap:taxi=no; set copy=98; set copy1=yes} ( mtb:scale:uphill=2 ) & ( incline=negative | incline=down | incline=- | incline<0 ) {add mkgmap:taxi=no; set copy=99; set copy1=yes} ( mtb:scale:uphill=2 ) & ( incline=positive | incline=up | incline=+ | incline>0 ) {add mkgmap:taxi=no; set copy=98; set copy1=yes} ( mtb:scale:uphill=3 | mtb:scale:uphill=4 | mtb:scale:uphill=5 ) & ( incline=negative | incline=down | incline=- | incline<0 ) {add mkgmap:taxi=no; set oneway=yes; set copy=99; set copy1=yes; add mkgmap:unpaved=1} ( mtb:scale:uphill=3 | mtb:scale:uphill=4 | mtb:scale:uphill=5 ) & ( incline=positive | incline=up | incline=+ | incline>0 ) {add mkgmap:taxi=no; set oneway=-1; set copy=98; set copy1=yes; add mkgmap:unpaved=1}
*copy=99 & highway=* & mtb:scale:uphill=5 & mtb:scale=* & mtb:scale!=5 {add mkgmap:taxi=no; set dontadd=oneway} [0x10f0a resolution 21 continue with_actions]** **copy=98 & highway=* & mtb:scale:uphill=5 & mtb:scale=* & mtb:scale!=5 {add mkgmap:taxi=no; set dontadd=oneway} [0x10406 resolution 21 continue with_actions]** **copy=99 & highway=* & mtb:scale:uphill=4 & mtb:scale=* & mtb:scale!=5 {add mkgmap:taxi=no; set dontadd=oneway} [0x10405 resolution 21 continue with_actions]** **copy=98 & highway=* & mtb:scale:uphill=4 & mtb:scale=* & mtb:scale!=5 {add mkgmap:taxi=no; set dontadd=oneway} [0x10407 resolution 21 continue with_actions]** **copy=99 & highway=* & mtb:scale:uphill=3 & mtb:scale=* & mtb:scale!=5 {add mkgmap:taxi=no; set dontadd=oneway} [0x10409 resolution 21 continue with_actions]** **copy=98 & highway=* & mtb:scale:uphill=3 & mtb:scale=* & mtb:scale!=5 {add mkgmap:taxi=no; set dontadd=oneway} [0x1040a resolution 21 continue with_actions]** **copy=199 & highway=* & mtb:scale:uphill=1 & length()>150 {add mkgmap:taxi=no; set dontadd=oneway} [0x10016 resolution 21 continue with_actions]** **copy=198 & highway=* & mtb:scale:uphill=1 & length()>150 {add mkgmap:taxi=no; set dontadd=oneway} [0x10019 resolution 21 continue with_actions]** **copy=99 & highway=* & mtb:scale:uphill=2 & mtb:scale=* & mtb:scale!=5 & length()>30 {add mkgmap:taxi=no; set dontadd=oneway} [0x10016 resolution 21 continue with_actions]** **copy=98 & highway=* & mtb:scale:uphill=2 & mtb:scale=* & mtb:scale!=5 & length()>30 {add mkgmap:taxi=no; set dontadd=oneway} [0x10019 resolution 21 continue with_actions]** **copy=99 & highway=* & mtb:scale:uphill=1 & mtb:scale=* & mtb:scale!=5 & length()>60 {add mkgmap:taxi=no; set dontadd=oneway} [0x10016 resolution 21 continue with_actions]** **copy=98 & highway=* & mtb:scale:uphill=1 & mtb:scale=* & mtb:scale!=5 & length()>60 {add mkgmap:taxi=no; set dontadd=oneway} [0x10019 resolution 21 continue with_actions]** **copy=99 & highway=* & mtb:scale:uphill=5 & mtb:scale!=* & mtb:scale!=5 {add mkgmap:taxi=no; set dontadd=oneway} [0x10f0a resolution 22 continue with_actions]** **copy=98 & highway=* & mtb:scale:uphill=5 & mtb:scale!=* & mtb:scale!=5 {add mkgmap:taxi=no; set dontadd=oneway} [0x10406 resolution 22 continue with_actions]** **copy=99 & highway=* & mtb:scale:uphill=4 & mtb:scale!=* & mtb:scale!=5 {add mkgmap:taxi=no; set dontadd=oneway} [0x10405 resolution 22 continue with_actions]** **copy=98 & highway=* & mtb:scale:uphill=4 & mtb:scale!=* & mtb:scale!=5 {add mkgmap:taxi=no; set dontadd=oneway} [0x10407 resolution 22 continue with_actions]** **copy=99 & highway=* & mtb:scale:uphill=3 & mtb:scale!=* & mtb:scale!=5 {add mkgmap:taxi=no; set dontadd=oneway} [0x10409 resolution 22 continue with_actions]** **copy=98 & highway=* & mtb:scale:uphill=3 & mtb:scale!=* & mtb:scale!=5 {add mkgmap:taxi=no; set dontadd=oneway} [0x1040a resolution 22 continue with_actions]** **copy=99 & highway=* & mtb:scale:uphill=2 & mtb:scale!=* & mtb:scale!=5 & length()>30 {add mkgmap:taxi=no; set dontadd=oneway} [0x10016 resolution 23 continue with_actions]** **copy=98 & highway=* & mtb:scale:uphill=2 & mtb:scale!=* & mtb:scale!=5 & length()>30 {add mkgmap:taxi=no; set dontadd=oneway} [0x10019 resolution 23 continue with_actions]** **dontadd=oneway & highway=* & copy=99 {set oneway=-1; set mkgmap:toll=yes; add mkgmap:taxi=no; set mkgmap:unpaved=1; set mkgmap:set_unconnected_type=none} [0x13 road_class=0 road_speed=0 resolution 24 continue]** **dontadd=oneway & highway=* & copy=98 {set oneway=yes; set mkgmap:toll=yes; add mkgmap:taxi=no; set mkgmap:unpaved=1; set mkgmap:set_unconnected_type=none} [0x13 road_class=0 road_speed=0 resolution 24 continue]*
# make reverse steep climb pathes/tracks ( copy=99 | copy=98 ) & ( mtb:scale:uphill=2 | mtb:scale:uphill=1 | mtb:scale:uphill=0 ) & dontadd!=oneway & highway=* {set oneway=no; set mkgmap:set_unconnected_type=none} [0x13 road_class=0 road_speed=1 resolution 24 continue] ( copy=99 | copy=98 ) & mtb:scale:uphill!=2 & mtb:scale:uphill!=1 & mtb:scale:uphill!=0 & dontadd!=oneway & highway=* {set oneway=no; set mkgmap:set_unconnected_type=none} [0x13 road_class=0 road_speed=0 resolution 24 continue]
Note for Gerd: Lines further down, then respect the oneway=yes or oneway=-1...
On 28.04.2014 08:03, Gerd Petermann wrote:
Hi Felix,
attached is a patch that may help to solve your problems with reversed oneways.
It may not work without --ignore-turn-restrictions. I'd first like to make sure that I understand what you are doing.
I've added a few lines to the default style to produce additional lines for ways with highway=* & incline=up If I got you right, you create one oneway for the uphill direction and another one with reverse direction for downhill, and also overlaying lines with types that are direction dependent. The result is in switch_oneway.zip.
The attached reverse-oneway-v3.patch changes mkgmap to keep the order of points in each way. That means, points are reversed after style processing if tag oneway=-1 is found, and this order is then maintained in the rest of the program.
Gerd P.S. I think we can drop the idea of reversing ways with "oneway=-1" before style processing. This will not help in your case, as you add the tag in the style.
_______________________________________________ mkgmap-dev mailing list
mkgmap-dev@.org
http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev -- keep on biking and discovering new trails
Felix openmtbmap.org & www.velomap.org
_______________________________________________ mkgmap-dev mailing list mkgmap-dev@.org http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev
-- View this message in context: http://gis.19327.n5.nabble.com/patch-v3-reverse-oneways-tp5804371p5804673.ht... Sent from the Mkgmap Development mailing list archive at Nabble.com. _______________________________________________ mkgmap-dev mailing list mkgmap-dev@lists.mkgmap.org.uk http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev
-- keep on biking and discovering new trails
Felix openmtbmap.org & www.velomap.org
_______________________________________________ mkgmap-dev mailing list mkgmap-dev@lists.mkgmap.org.uk http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev