logo separator

[mkgmap-dev] [patch v3] reverse oneways

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

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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.mkgmap.org.uk/pipermail/mkgmap-dev/attachments/20140430/d1210382/attachment-0001.html>


More information about the mkgmap-dev mailing list