logo separator

[mkgmap-dev] [patch v3] reverse oneways

From Felix Hartmann extremecarver at gmail.com on Wed Apr 30 10:58:10 BST 2014

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?
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... :-)

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?
(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



More information about the mkgmap-dev mailing list