logo separator

[mkgmap-dev] [patch v3] reverse oneways

From Gerd Petermann gpetermann_muenchen at hotmail.com on Wed Apr 30 11:13:01 BST 2014

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 at .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 at .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.html
> > Sent from the Mkgmap Development mailing list archive at Nabble.com.
> > _______________________________________________
> > mkgmap-dev mailing list
> > mkgmap-dev at 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 at lists.mkgmap.org.uk
> http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev
 		 	   		  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.mkgmap.org.uk/pipermail/mkgmap-dev/attachments/20140430/05052989/attachment-0001.html>


More information about the mkgmap-dev mailing list