logo separator

[mkgmap-dev] [patch v3] reverse oneways

From GerdP gpetermann_muenchen at hotmail.com on Wed Apr 30 10:51:11 BST 2014

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.


More information about the mkgmap-dev mailing list