logo separator

[mkgmap-dev] [PATCH v1] Rework of inc/access

From WanMil wmgcnfg at web.de on Thu Apr 17 23:07:52 BST 2014

Hi,

attached is a reworked inc/access file.

It now uses a 1:1 assignment between OSM tag and mkgmap access tag:
foot=*       { set mkgmap:foot='${foot}' }
bicycle=*    { set mkgmap:bicycle='${bicycle}' }
motorcar=*   { set mkgmap:car='${motorcar}' }
goods=*      { set mkgmap:delivery='${goods}' }
hgv=*        { set mkgmap:truck='${hgv}' }
bus=*        { set mkgmap:bus='${bus}' }
taxi=*       { set mkgmap:taxi='${taxi}' }
emergency=*  { set mkgmap:emergency='${emergency}' }


motorcycle is no longer used. There is no clean solution when motorcycle 
!= motorcar. The default style supports motorcars. Users that want to 
use the cards especially for motorcycling should modify their inc/access 
file appropriately.

delivery is no longer used. It is not an access key. The wiki notes:
The key delivery is mostly used with the value yes to indicate that the 
restaurant offers delivery of your meal.

More access keys are used. They are taken into account obeying the rules 
of vehicle subclasses (set motorcar=no if motor_vehicle=no or vehicle=no 
etc.).

The old rule
highway=path { add foot=yes; add access=no }
did not work for the way [highway=path; access=no]. This way should not 
be used by foot anyway but the rule above errorneously allowed foot. 
This is fixed now.

carpool handling is now disabled. It does not work (as far as I know) so 
the rules are not useful.

Many thanks to Mario Hantschke who worked out some problems of the old 
access file and provided some good ideas for the new rules.

Please check the new rules. If you are unhappy with some assignements 
please post an tagging example of a way and how you think the access 
rules should be assigned.

Have fun!
WanMil
-------------- next part --------------
# Define the access restrictions
# The following tags define the restrictions:
# mkgmap:bicycle
# mkgmap:foot
# mkgmap:car
# mkgmap:truck
# mkgmap:taxi
# mkgmap:bus
# mkgmap:emergency
# mkgmap:delivery
# A class is not allowed to use the way if its tag is set to 'no'

# First set access settings with high priority.
#
# In case a way is tagged with 
#    highway=motorway;access=yes 
# we assume that foot and bikes are not allowed anyhow.

highway=* { echotags "Before" }

highway=* & motorroad=yes                  { add bicycle=no; add foot=no; }
highway=motorway | highway=motorway_link   { add bicycle=no; add foot=no; }

access=agricultural  { set access=no; add foot=yes }

# Now fill the access tree (http://wiki.openstreetmap.org/wiki/Key:access) 
# This is required so that subsequent rules do not add a tag (bicycle) which is already defined by a higher tag (vehicle) 
access=*             { add foot='${access}'; add vehicle='${access}'; }
vehicle=*            { add bicycle='${vehicle}'; add motor_vehicle='${vehicle}'; }
motor_vehicle=*      { add motorcar='${motor_vehicle}'; add goods='${motor_vehicle}'; add hgv='${motor_vehicle}'; add psv='${motor_vehicle}'; add emergency='${motor_vehicle}'; }
psv=*                { add taxi='${psv}'; bus='${psv}'; }

# Add access rules that are derived from the highway type
highway=steps                              { add foot=yes; add access=no }
highway=pedestrian & area!=yes             { add foot=yes; add access=no } 
highway=path                               { add foot=yes; add bicycle=yes; add access=no } 
highway=bridleway                          { add access=no }
highway=cycleway                           { add bicycle=yes; add access=no }
highway=footway                            { add foot=yes; add access=no }
railway=platform                           { add foot=yes; add access=no }

# throughroute cannot be handled differently for different vehicle types
# Therefore we have to choose one vehicle type - and the winner is: motorcar
motorcar=destination   { set mkgmap:throughroute=no; set motorcar=yes } 
access=destination     { set mkgmap:throughroute=no; set access=yes }

# Normalize all values that indicate a restriction to 'no'
foot=private          | foot=agricultural          { set foot=no }
bicycle=private       | bicycle=agricultural       { set bicycle=no }
motorcar=private      | motorcar=agricultural      { set motorcar=no }
goods=private         | goods=agricultural         { set goods=no }
hgv=private           | hgv=agricultural           { set motorcar=no }
bus=private           | bus=agricultural           { set bus=no }
taxi=private          | taxi=agricultural          { set taxi=no }
emergency=private     | emergency=agricultural     { set emergency=no }

# Copy the OSM access tags to the mkgmap internal tags
foot=*       { set mkgmap:foot='${foot}' }
bicycle=*    { set mkgmap:bicycle='${bicycle}' }
motorcar=*   { set mkgmap:car='${motorcar}' }
goods=*      { set mkgmap:delivery='${goods}' }
hgv=*        { set mkgmap:truck='${hgv}' }
bus=*        { set mkgmap:bus='${bus}' }
taxi=*       { set mkgmap:taxi='${taxi}' }
emergency=*  { set mkgmap:emergency='${emergency}' }

# The access tag defines all restrictions that are not already set
access=* { addaccess '${access}' }

highway=* { echotags "After" }


# Check for carpool lane (they are not really supported yet so these lines are commented)
# hov=* { add carpool='${hov}' }
# (carpool=yes | carpool=designated | carpool=permissive | carpool=official)     { set mkgmap:carpool=yes }


More information about the mkgmap-dev mailing list