[Git][debian-gis-team/mkgmap][master] 4 commits: New upstream version 0.0.0+svn4257

Bas Couwenberg gitlab at salsa.debian.org
Sun Dec 2 18:34:37 GMT 2018


Bas Couwenberg pushed to branch master at Debian GIS Project / mkgmap


Commits:
27a34e8e by Bas Couwenberg at 2018-12-02T18:12:24Z
New upstream version 0.0.0+svn4257
- - - - -
d7e326a5 by Bas Couwenberg at 2018-12-02T18:12:26Z
Merge tag 'upstream/0.0.0+svn4257'

Upstream version 0.0.0+svn4257

- - - - -
8a60b3c2 by Bas Couwenberg at 2018-12-02T18:12:40Z
New upstream SVN snapshot.

- - - - -
3b21cccf by Bas Couwenberg at 2018-12-02T18:13:42Z
Set distribution to unstable.

- - - - -


17 changed files:

- debian/changelog
- resources/mkgmap-version.properties
- resources/styles/default/lines
- resources/styles/default/points
- resources/styles/default/polygons
- src/uk/me/parabola/imgfmt/app/typ/ColourInfo.java
- src/uk/me/parabola/mkgmap/combiners/MdrBuilder.java
- src/uk/me/parabola/mkgmap/general/MapRoad.java
- src/uk/me/parabola/mkgmap/main/TypCompiler.java
- src/uk/me/parabola/mkgmap/osmstyle/housenumber/HousenumberMatch.java
- src/uk/me/parabola/mkgmap/osmstyle/housenumber/HousenumberRoad.java
- src/uk/me/parabola/mkgmap/reader/MapperBasedMapDataSource.java
- src/uk/me/parabola/mkgmap/reader/osm/SeaGenerator.java
- src/uk/me/parabola/mkgmap/reader/osm/Way.java
- src/uk/me/parabola/mkgmap/typ/CommonSection.java
- src/uk/me/parabola/mkgmap/typ/LineSection.java
- src/uk/me/parabola/mkgmap/typ/PolygonSection.java


Changes:

=====================================
debian/changelog
=====================================
@@ -1,3 +1,9 @@
+mkgmap (0.0.0+svn4257-1) unstable; urgency=medium
+
+  * New upstream SVN snapshot.
+
+ -- Bas Couwenberg <sebastic at debian.org>  Sun, 02 Dec 2018 19:13:31 +0100
+
 mkgmap (0.0.0+svn4245-1) unstable; urgency=medium
 
   * New upstream SVN snapshot.


=====================================
resources/mkgmap-version.properties
=====================================
@@ -1,2 +1,2 @@
-svn.version: 4245
-build.timestamp: 2018-10-19T06:22:23+0100
+svn.version: 4257
+build.timestamp: 2018-11-26T14:51:21+0000


=====================================
resources/styles/default/lines
=====================================
@@ -14,105 +14,100 @@ aeroway=runway & highway!=* & is_closed()=false {name '${ref}'} [0x27 resolution
 (aeroway=taxiway | aeroway=taxilane) & highway!=* & is_closed()=false {name '${ref}'} [0x27 resolution 24]
 
 # Assign the street name for house number search
-highway=* & name=* { set mkgmap:street='${name}' }
+highway=* & name=* {set mkgmap:street='${name}'}
 
 # Mark highways with the toll flag
-highway=* & (toll=yes|toll=true) { set mkgmap:toll=yes }
+highway=* & (toll=yes | toll=true) {set mkgmap:toll=yes}
 
 # mark multipolygons as area
 highway=* & mkgmap:mp_created=true {add area=yes}
 
 # Hide proposed ways
-(highway=proposed | highway=proposal | highway=planned | highway ~ '.*proposed.*') {delete highway;delete junction}
+highway=proposed | highway=proposal | highway=planned | highway~'.*proposed.*' {delete highway; delete junction}
 # Hide removed ways
-(highway=razed | highway=dismantled) {deletealltags}
+highway=razed | highway=dismantled {deletealltags}
 # Hide abandoned ways. Abandoned highways have some evidence of their former existence but are no longer used. These
 # abandoned highways could be useful in topographical maps.
 # https://wiki.openstreetmap.org/wiki/Key:abandoned:
-((abandoned:highway=* & highway!=*) | highway=abandoned) {deletealltags}
+(abandoned:highway=* & highway!=*) | highway=abandoned {deletealltags}
 # Hide other non-existent ways
-(highway=unbuilt | highway=neverbuilt | highway=rejected | highway ~ 'x-.*') {delete highway;delete junction}
+highway=unbuilt | highway=neverbuilt | highway=rejected | highway~'x-.*' {delete highway; delete junction}
 # Remove highway tag from ways which are not suitable for routing
-highway=traffic_signals | highway=junction | highway=island | highway=centre_line | highway=traffic_island | highway=stopline {delete highway} 
+highway=traffic_signals | highway=junction | highway=island | highway=centre_line | highway=traffic_island | highway=stopline
+    {delete highway}
 highway=piste | highway=ski {delete highway}
 highway=no | highway=none {delete highway}
- 
+
 # Hide unaccessible tunnels
-highway=* & tunnel=yes & (access=private|access=no)
-& foot!=* & bicycle!=* {delete highway;delete junction}
+highway=* & tunnel=yes & (access=private | access=no) & foot!=* & bicycle!=* {delete highway; delete junction}
 # Disable dead-end-checks for unaccessible oneways
-highway=* & oneway=yes & (access=private|access=no)
-{add mkgmap:dead-end-check=false}
+highway=* & oneway=yes & (access=private | access=no) {add mkgmap:dead-end-check=false}
 # Validation-like checks (uncomment to enable)
-#highway=motorway_link & oneway!=yes & oneway!=no { echo "motorway_link lacks oneway" }
-highway=motorway|highway=motorway_link { add oneway=yes; add mkgmap:numbers=false }
+#highway=motorway_link & oneway!=yes & oneway!=no {echo "motorway_link lacks oneway"}
+highway=motorway | highway=motorway_link {add oneway=yes; add mkgmap:numbers=false}
 
 # start of rules for process-exits and process-destination options
 # which may add info to a part of these highway=*_link roads:
 # motorway_link, trunk_link, primary_link, secondary_link, tertiary_link
-# build destination hint 
-mkgmap:dest_hint=*
-  { set dest_hint = '${destination:ref|subst: =>} ${mkgmap:dest_hint|subst:;=> |subst:/=> }' |
-         '${ref|subst: =>} ${mkgmap:dest_hint|subst:;=> |subst:/=> }' | 
-         '${mkgmap:dest_hint|subst:;=> |subst:/=> }';
-       }
-# build exit hint 
-mkgmap:exit_hint=true 
-  { set exit_hint = 'Exit ${mkgmap:exit_hint_ref} ${mkgmap:exit_hint_name}' | 
-         'Exit ${mkgmap:exit_hint_ref} ${mkgmap:exit_hint_exit_to}' | 
-         'Exit ${mkgmap:exit_hint_exit_to}' |
-         'Exit ${mkgmap:exit_hint_name}' |
-         'Exit ${mkgmap:exit_hint_ref}';
-       }
-  
-# use destination hint and/or exit hint to build name              
-(mkgmap:exit_hint=true | mkgmap:dest_hint=*)
-  {	name '${exit_hint} ${dest_hint}' | 	'${dest_hint}' | 		'${exit_hint}' }
+# build destination hint
+mkgmap:dest_hint=* {
+    set tmp:dest_hint='${destination:ref|subst: =>} ${mkgmap:dest_hint|subst:;=> |subst:/=> }' |
+                      '${ref|subst: =>} ${mkgmap:dest_hint|subst:;=> |subst:/=> }' |
+                      '${mkgmap:dest_hint|subst:;=> |subst:/=> }';
+    }
+# build exit hint
+mkgmap:exit_hint=true {
+    set tmp:exit_hint='Exit ${mkgmap:exit_hint_ref} ${mkgmap:exit_hint_name}' |
+                      'Exit ${mkgmap:exit_hint_ref} ${mkgmap:exit_hint_exit_to}' |
+                      'Exit ${mkgmap:exit_hint_exit_to}' |
+                      'Exit ${mkgmap:exit_hint_name}' |
+                      'Exit ${mkgmap:exit_hint_ref}';
+    }
+# use destination hint and/or exit hint to build name
+mkgmap:exit_hint=true | mkgmap:dest_hint=* {name '${tmp:exit_hint} ${tmp:dest_hint}' | '${tmp:dest_hint}' | '${tmp:exit_hint}'}
 # end of rules for process-exits and process-destination options
 
 # Flag paved roads
-highway=* & (surface=asphalt | surface=paved | surface=sett | 
-    surface=concrete | surface=concrete:lanes | surface=concrete:plates | 
-    surface=paving_stones  | surface=cobblestone  | 
-   	surface=cobblestone:flattened  | surface=metal  | surface=wood) 
-{ set mkgmap:unpaved=0 }
-highway=* & tracktype=grade1 & surface!=* { set mkgmap:unpaved=0 }
+highway=* & (surface=asphalt | surface=paved | surface=sett |
+    surface=concrete | surface=concrete:lanes | surface=concrete:plates |
+    surface=paving_stones | surface=cobblestone |
+    surface=cobblestone:flattened | surface=metal | surface=wood)
+    {set mkgmap:unpaved=0}
+highway=* & tracktype=grade1 & surface!=* {set mkgmap:unpaved=0}
 
 # Flag unpaved roads.
-highway=* & mkgmap:unpaved!=0 & (  
+highway=* & mkgmap:unpaved!=0 & (
     surface=* |
-	mtb:scale=* | 
-    tracktype ~ 'grade[2-6]')
-{ add mkgmap:unpaved=1 }
+    mtb:scale=* |
+    tracktype~'grade[2-6]')
+    {add mkgmap:unpaved=1}
 highway=* & (
-    mtb:scale ~ '[2-6].' |
-    sac_scale ~ '.*(mountain|alpine)_hiking' |
+    mtb:scale~'[2-6].' |
+    sac_scale~'.*(mountain|alpine)_hiking' |
     sport=via_ferrata)
-{ set mkgmap:unpaved=1 }
-(highway=bridleway | highway=path | highway=track) & mkgmap:unpaved!=0 { add mkgmap:unpaved=1 }
-(highway=unsurfaced | highway=via_ferrata) { set mkgmap:unpaved=1 }
+    {set mkgmap:unpaved=1}
+(highway=bridleway | highway=path | highway=track) & mkgmap:unpaved!=0 {add mkgmap:unpaved=1}
+(highway=unsurfaced | highway=via_ferrata) {set mkgmap:unpaved=1}
 
-highway=* & mkgmap:unpaved!=1 & smoothness ~ '.*(bad|horrible|impassable)'  { add mkgmap:road-speed = '-2' } 
+highway=* & mkgmap:unpaved!=1 & smoothness~'.*(bad|horrible|impassable)' {add mkgmap:road-speed='-2'}
 
 # Good ways without relation
-highway=* & mkgmap:fast_road!=* & (int_ref=* | network=e-road | network=AH | network=TAH | network=US:I | network=US:US) {add mkgmap:fast_road=yes}
+highway=* & mkgmap:fast_road!=* & (int_ref=* | network=e-road | network=AH | network=TAH | network=US:I | network=US:US)
+    {add mkgmap:fast_road=yes}
 # Not best for car routing
-highway=* & (access=hov | hov=designated | oneway=reversible) {set mkgmap:road-class=-2; set mkgmap:road-speed=-2; delete mkgmap:fast_road}
+highway=* & (access=hov | hov=designated | oneway=reversible)
+    {set mkgmap:road-class=-2; set mkgmap:road-speed=-2; delete mkgmap:fast_road}
 
 # Convert generic path to most specific
-highway=footway & snowplowing!=no
-& (bicycle=yes|bicycle=designated|bicycle=permissive|bicycle=official)
-{set highway=cycleway; set bicycle=yes; set foot=yes}
-highway=path & snowplowing!=no
-& (bicycle=designated|bicycle=permissive|bicycle=official)
-{set highway=cycleway; set bicycle=yes}
-highway=path & (horse=designated|horse=permissive|horse=official)
-{set highway=bridleway; set horse=yes}
-
-leisure=track & area!=yes
-{add highway=footway; name '${name} (${sport})' | '${name}'}
-(man_made=pier | man_made=piste:halfpipe) & area!=yes
-{add highway=footway; name '${ref} ${name}' | '${ref}' | '${name}' }
+highway=footway & snowplowing!=no & (bicycle=yes | bicycle=designated | bicycle=permissive | bicycle=official)
+    {set highway=cycleway; set bicycle=yes; set foot=yes}
+highway=path & snowplowing!=no & (bicycle=designated | bicycle=permissive | bicycle=official)
+    {set highway=cycleway; set bicycle=yes}
+highway=path & (horse=designated | horse=permissive | horse=official)
+    {set highway=bridleway; set horse=yes}
+
+leisure=track & area!=yes {add highway=footway; name '${name} (${sport})' | '${name}'}
+(man_made=pier | man_made=piste:halfpipe) & area!=yes {add highway=footway; name '${ref} ${name}' | '${ref}' | '${name}'}
 
 # Roundabouts
 junction=roundabout & (highway=trunk | highway=trunk_link) [0x0c road_class=4 road_speed=2 resolution 24 continue]
@@ -139,13 +134,12 @@ junction=roundabout & highway=* [0x0c road_class=0 road_speed=1 resolution 22]
 # Ways that may or may not be useable
 
 # Treat ways under construction almost as highway=path, see also extra rule in inc/access
-highway=construction { add mkgmap:dead-end-check = false; }
-[0x16 road_class=0 road_speed=0 resolution 23]
+highway=construction {add mkgmap:dead-end-check=false} [0x16 road_class=0 road_speed=0 resolution 23]
 
 # Lower the road speed of ways under some construction.
-highway=* & construction=* & maxspeed!=* { add mkgmap:road-speed = '-1' }
+highway=* & construction=* & maxspeed!=* {add mkgmap:road-speed='-1'}
 # Lower the road speed of disused ways.
-highway=* & disused=yes & maxspeed!=* { add mkgmap:road-speed = '-2' }
+highway=* & disused=yes & maxspeed!=* {add mkgmap:road-speed='-2'}
 
 # Ways sorted roughly by descending order of class
 highway=motorway & mkgmap:fast_road=yes [0x01 road_class=4 road_speed=7 resolution 14]
@@ -181,38 +175,35 @@ highway=residential [0x06 road_class=0 road_speed=2 resolution 22]
 highway=bridleway [0x07 road_class=0 road_speed=0 resolution 23]
 highway=byway [0x16 road_class=0 road_speed=0 resolution 23]
 
-highway=service & service=parking_aisle
-[0x07 road_class=0 road_speed=1 resolution 24]
-highway=service & (service=alley|service=driveway)
-[0x07 road_class=0 road_speed=0 resolution 23]
+highway=service & service=parking_aisle [0x07 road_class=0 road_speed=1 resolution 24]
+highway=service & (service=alley|service=driveway) [0x07 road_class=0 road_speed=0 resolution 23]
 highway=service [0x07 road_class=0 road_speed=2 resolution 22]
 
 highway=cycleway [0x07 road_class=0 road_speed=1 resolution 23]
 
-highway=footway|highway=path|highway=steps [0x16 road_class=0 road_speed=0 resolution 23]
+highway=footway | highway=path | highway=steps [0x16 road_class=0 road_speed=0 resolution 23]
 highway=track [0x0a road_class=0 road_speed=1 resolution 22]
 highway=unsurfaced [0x0a road_class=0 road_speed=1 resolution 22]
-highway=road { add mkgmap:dead-end-check = false} [0x06 road_class=0 road_speed=1 resolution 22]
+highway=road {add mkgmap:dead-end-check=false} [0x06 road_class=0 road_speed=1 resolution 22]
 
 # Mop up any unrecognised highway types
-highway=* & area!=yes [0x07 road_class=0 road_speed=0 resolution 23] 
+highway=* & area!=yes [0x07 road_class=0 road_speed=0 resolution 23]
 
 natural=coastline [0x15 resolution 12]
 power=line [0x29 resolution 21]
 
 railway=abandoned [0x0a road_class=0 road_speed=1 resolution 22]
 railway=platform [0x16 road_class=0 road_speed=0 resolution 23]
-# Railway lines, note that many devices display type 0x14 only at resolution 24 
-(railway=rail | railway=tram | railway=disused | railway=subway | railway=narrow_gauge | railway=light_rail | railway=preserved) & !(tunnel=yes) [0x14 resolution 22]
+# Railway lines, note that many devices display type 0x14 only at resolution 24
+(railway=rail | railway=tram | railway=disused | railway=subway | railway=narrow_gauge | railway=light_rail | railway=preserved) & !(tunnel=yes)
+    [0x14 resolution 22]
 
-(man_made=cable|(man_made=* & man_made ~ '.*pipe.*')) & area!=yes &
-tunnel!=yes & location != underground
-{name '${name} (${operator})' | '${name}' | '${operator}' }
-[0x28 resolution 23]
+(man_made=cable | (man_made=* & man_made~'.*pipe.*')) & area!=yes & tunnel!=yes & location!=underground
+    {name '${name} (${operator})' | '${name}' | '${operator}'} [0x28 resolution 23]
 
 # The following boundary styles are after the highway rules because ways
 # are frequently tagged with both and we want the highway to take priority.
-boundary=administrative { name '${mkgmap:boundary_name}' }
+boundary=administrative {name '${mkgmap:boundary_name}'}
 boundary=administrative & admin_level<3 [0x1e resolution 12]
 boundary=administrative & admin_level<5 [0x1d resolution 19]
 boundary=administrative & admin_level<7 [0x1c resolution 21]
@@ -221,9 +212,10 @@ boundary=administrative [0x1c resolution 22]
 boundary=national [0x1e resolution 17]
 boundary=political [0x1c resolution 19]
 
-route=ferry {set mkgmap:numbers = false }
-route=ferry & (motorcar=no | motor_vehicle=no) {add mkgmap:ferry=1} [0x1b road_class=0 road_speed=0 resolution 23]
-route=ferry {add mkgmap:ferry=1} [0x1b road_class=3 road_speed=0 resolution 19]
+route=ferry & (toll=no | toll=false) {set mkgmap:toll=no}
+route=ferry {set mkgmap:numbers=false; set mkgmap:ferry=1; add mkgmap:toll=yes}
+route=ferry & (motorcar=no | motor_vehicle=no) [0x1b road_class=0 road_speed=0 resolution 23]
+route=ferry [0x1b road_class=3 road_speed=0 resolution 19]
 
 (waterway=river | waterway=canal) & intermittent=yes [0x26 resolution 20]
 (waterway=stream | waterway=drain) & intermittent=yes [0x10A02 resolution 22]
@@ -240,24 +232,25 @@ include 'inc/contour_lines';
 
 include 'inc/address';
 # calculate the road speed based on maxspeed tag
-include 'inc/roadspeed'; 
+include 'inc/roadspeed';
 # calculate the access rules
 include 'inc/access';
 
 #limit artificial cycleways to resolution 24
-mkgmap:synthesised=yes & mkgmap:bicycle=yes { set mkgmap:highest-resolution-only = true }
+mkgmap:synthesised=yes & mkgmap:bicycle=yes {set mkgmap:highest-resolution-only=true}
 
 # don't add house numbers to unnamed or artifical bicycle ways
 mkgmap:bicycle=yes & (mkgmap:foot=no & mkgmap:car=no & mkgmap:street!=* | mkgmap:synthesised=yes) {set mkgmap:numbers=false}
 
 # Display highway shield for mayor roads if they have a ref and make them searchable by their name
-(highway=motorway | highway=trunk) & ref=* { name '${ref|highway-symbol:hbox}'; addlabel '${name}' }
-highway=primary & ref=* { name  '${ref|highway-symbol:box}'; addlabel '${name}' }
-(highway=secondary | highway=tertiary) & ref=* { name '${ref|highway-symbol:oval}'; addlabel '${name}' }
+(highway=motorway | highway=trunk) & ref=* {name '${ref|highway-symbol:hbox}'; addlabel '${name}'}
+highway=primary & ref=* {name '${ref|highway-symbol:box}'; addlabel '${name}'}
+(highway=secondary | highway=tertiary) & ref=* {name '${ref|highway-symbol:oval}'; addlabel '${name}'}
 
-name=* { name '${name}' }
-highway=* & ref=* & highway!=motorway & highway!=trunk & highway!=primary & highway!=secondary & highway!=tertiary { addlabel '${ref}' }
+name=* {name '${name}'}
+highway=* & ref=* & highway!=motorway & highway!=trunk & highway!=primary & highway!=secondary & highway!=tertiary
+    {addlabel '${ref}'}
 
-highway=* & int_ref=* { addlabel '${int_ref}' }
-highway=* & nat_ref=* { addlabel '${nat_ref}' }
-highway=* & reg_ref=* { addlabel '${reg_ref}' }
+highway=* & int_ref=* {addlabel '${int_ref}'}
+highway=* & nat_ref=* {addlabel '${nat_ref}'}
+highway=* & reg_ref=* {addlabel '${reg_ref}'}


=====================================
resources/styles/default/points
=====================================
@@ -9,87 +9,86 @@
 # for more information.
 
 addr:housenumber=* {set mkgmap:execute_finalize_rules=true}
-barrier=* & bicycle=*    { set mkgmap:bicycle='${bicycle|subst:private=>no}' }
-barrier=* & foot=*       { set mkgmap:foot='${foot|subst:private=>no}' }                  
-barrier=* & hgv=*        { set mkgmap:truck='${hgv|subst:private=>no}' }                  
-barrier=* & motorcar=*   { set mkgmap:car='${motorcar|subst:private=>no}' }
-barrier=* & psv=*        { set mkgmap:bus='${psv|subst:private=>no}' }                  
-barrier=* & taxi=*       { set mkgmap:taxi='${taxi|subst:private=>no}' }                  
-barrier=* & emergency=*  { set mkgmap:emergency='${emergency|subst:private=>no}' }                  
-barrier=* & delivery=*   { set mkgmap:delivery='${delivery|subst:private=>no}' }                  
-barrier=* & access=*     { addaccess '${access|subst:private=>no}' }
-
-barrier=bollard | barrier=cycle_barrier 
-    { add mkgmap:bicycle=yes; 
-      add mkgmap:foot=yes; 
-      addaccess no;
-      set mkgmap:road-speed=1; }
-barrier=bus_trap  
-    { add mkgmap:bus=yes; 
-      add mkgmap:foot=yes; 
-      add mkgmap:bicycle=yes; 
-      addaccess no;
-      set mkgmap:road-speed=1; }
-barrier=gate
-    { add mkgmap:bicycle=yes; 
-      add mkgmap:foot=yes; 
-      addaccess no;
-      set mkgmap:road-speed=0; }
-barrier=kissing_gate | barrier=stile | barrier=block
-    { add mkgmap:foot=yes; 
-      addaccess no;
-      set mkgmap:road-speed=0; }
-
-internet_access=yes { name 'Internet ${name}' | 'Internet' } [0x2f12 resolution 24 continue]
-internet_access=* & internet_access!=no & internet_access!=yes { name 'Internet(${internet_access}) ${name|def:}' } [0x2f12 resolution 24 continue]
+
+barrier=* & bicycle=*   {set mkgmap:bicycle  =  '${bicycle|subst:private=>no}'}
+barrier=* & foot=*      {set mkgmap:foot     =     '${foot|subst:private=>no}'}
+barrier=* & hgv=*       {set mkgmap:truck    =      '${hgv|subst:private=>no}'}
+barrier=* & motorcar=*  {set mkgmap:car      = '${motorcar|subst:private=>no}'}
+barrier=* & psv=*       {set mkgmap:bus      =      '${psv|subst:private=>no}'}
+barrier=* & taxi=*      {set mkgmap:taxi     =     '${taxi|subst:private=>no}'}
+barrier=* & emergency=* {set mkgmap:emergency='${emergency|subst:private=>no}'}
+barrier=* & delivery=*  {set mkgmap:delivery = '${delivery|subst:private=>no}'}
+barrier=* & access=*    {addaccess               '${access|subst:private=>no}'}
+
+barrier=bollard | barrier=cycle_barrier {
+    add mkgmap:bicycle=yes;
+    add mkgmap:foot=yes;
+    addaccess no;
+    set mkgmap:road-speed=1;
+    }
+barrier=bus_trap {
+    add mkgmap:bus=yes;
+    add mkgmap:foot=yes;
+    add mkgmap:bicycle=yes;
+    addaccess no;
+    set mkgmap:road-speed=1;
+    }
+barrier=gate {
+    add mkgmap:bicycle=yes;
+    add mkgmap:foot=yes;
+    addaccess no;
+    set mkgmap:road-speed=0;
+    }
+barrier=kissing_gate | barrier=stile | barrier=block {
+    add mkgmap:foot=yes;
+    addaccess no;
+    set mkgmap:road-speed=0;
+    }
+
+internet_access=yes {name 'Internet ${name}' | 'Internet'} [0x2f12 resolution 24 continue]
+internet_access=* & internet_access!=no & internet_access!=yes
+    {name 'Internet(${internet_access}) ${name}' | 'Internet(${internet_access})'} [0x2f12 resolution 24 continue]
 
 (public_transport=platform | highway=bus_stop | railway=tram_stop | railway=halt | railway=station)
-& (ref=* | route_ref=*) {
-  set ref='${ref|def:}(${route_ref})';
-}
+    & (ref=* | route_ref=*)
+    {set ref='${ref|def:}(${route_ref})'}
 (public_transport=platform | highway=bus_stop | railway=tram_stop | railway=halt | railway=station)
-& lit=yes & (shelter=yes | covered=yes)
-{
-  set ref='${ref|def:}*';
-}
+    & lit=yes & (shelter=yes | covered=yes)
+    {set ref='${ref|def:}*'}
 (public_transport=platform | highway=bus_stop | railway=tram_stop | railway=halt | railway=station)
-& lit!=yes & (shelter=yes | covered=yes)
-{
-  set ref='${ref|def:}+';
-}
+    & lit!=yes & (shelter=yes | covered=yes)
+    {set ref='${ref|def:}+'}
 (public_transport=platform | highway=bus_stop | railway=tram_stop | railway=halt | railway=station)
-& (shelter=no | covered=no)
-{
-  set ref='${ref|def:}-';
-}
+    & (shelter=no | covered=no)
+    {set ref='${ref|def:}-'}
 
 include 'inc/name';
 
-place=city & population > 999999 & name=*  {set cityxx=yes} [0x0100 resolution 12 continue with_actions]
-place=city & population > 799999 & cityxx!=yes & name=*  {set cityxx=yes} [0x0200 resolution 14 continue with_actions]
-place=city & population > 399999 & cityxx!=yes & name=*  {set cityxx=yes} [0x0300 resolution 15 continue with_actions]
-place=city & population > 299999 & cityxx!=yes & name=*  {set cityxx=yes} [0x0400 resolution 16 continue with_actions]
-place=city & population > 199999 & cityxx!=yes & name=*  {set cityxx=yes} [0x0500 resolution 16 continue with_actions]
-place=city & population >  99999 & cityxx!=yes & name=*  {set cityxx=yes} [0x0600 resolution 17 continue with_actions]
-place=city & population >  49999 & cityxx!=yes & name=*  {set cityxx=yes} [0x0700 resolution 17 continue with_actions]
-place=city & population >   9999 & cityxx!=yes & name=*  {set cityxx=yes} [0x0800 resolution 18 continue with_actions]
-
-place=city & population >       0 & cityxx!=yes & name=*  {set cityxx=yes} [0x0800 resolution 18 continue with_actions]
-place=city                          & cityxx!=yes & name=*  {set cityxx=yes} [0x0700 resolution 18 continue with_actions]
-
-place=town   & population >  69999 & cityxx!=yes  & name=* {set cityxx=yes} [0x0600 resolution 17 continue with_actions]
-place=town   & population >  19999 & cityxx!=yes  & name=* {set cityxx=yes} [0x0700 resolution 18 continue with_actions]
-place=town   & population >   9999 & cityxx!=yes  & name=* {set cityxx=yes} [0x0800 resolution 19 continue with_actions]
-place=town   & population >   4999 & cityxx!=yes  & name=* {set cityxx=yes} [0x0900 resolution 19 continue with_actions]
-place=town   & population >    999 & cityxx!=yes  & name=* {set cityxx=yes} [0x0a00 resolution 19 continue with_actions]
-place=town   & population >         0 & cityxx!=yes  & name=* {set cityxx=yes} [0x0b00 resolution 20 continue with_actions]
-place=town                            & cityxx!=yes  & name=* {set cityxx=yes} [0x0800 resolution 19 continue with_actions]
-
-place=island & cityxx!=yes  {set cityxx=yes}	[0x650c resolution 20 continue with_actions]
-place=islet & cityxx!=yes   {set cityxx=yes}	[0x650c resolution 22 continue with_actions]
-place=village & cityxx!=yes {set cityxx=yes} 	[0x0900 resolution 22 continue with_actions]
-place=suburb & cityxx!=yes  {set cityxx=yes}	[0x0a00 resolution 22 continue with_actions]
-place=hamlet & cityxx!=yes  {set cityxx=yes}	[0x0b00 resolution 24 continue with_actions]
+place=city & population > 999999 &                 name=* {set tmp:city=yes} [0x0100 resolution 12 continue with_actions]
+place=city & population > 799999 & tmp:city!=yes & name=* {set tmp:city=yes} [0x0200 resolution 14 continue with_actions]
+place=city & population > 399999 & tmp:city!=yes & name=* {set tmp:city=yes} [0x0300 resolution 15 continue with_actions]
+place=city & population > 299999 & tmp:city!=yes & name=* {set tmp:city=yes} [0x0400 resolution 16 continue with_actions]
+place=city & population > 199999 & tmp:city!=yes & name=* {set tmp:city=yes} [0x0500 resolution 16 continue with_actions]
+place=city & population >  99999 & tmp:city!=yes & name=* {set tmp:city=yes} [0x0600 resolution 17 continue with_actions]
+place=city & population >  49999 & tmp:city!=yes & name=* {set tmp:city=yes} [0x0700 resolution 17 continue with_actions]
+place=city & population >   9999 & tmp:city!=yes & name=* {set tmp:city=yes} [0x0800 resolution 18 continue with_actions]
+
+place=city & population >      0 & tmp:city!=yes & name=* {set tmp:city=yes} [0x0800 resolution 18 continue with_actions]
+place=city                       & tmp:city!=yes & name=* {set tmp:city=yes} [0x0700 resolution 18 continue with_actions]
+
+place=town & population >  69999 & tmp:city!=yes & name=* {set tmp:city=yes} [0x0600 resolution 17 continue with_actions]
+place=town & population >  19999 & tmp:city!=yes & name=* {set tmp:city=yes} [0x0700 resolution 18 continue with_actions]
+place=town & population >   9999 & tmp:city!=yes & name=* {set tmp:city=yes} [0x0800 resolution 19 continue with_actions]
+place=town & population >   4999 & tmp:city!=yes & name=* {set tmp:city=yes} [0x0900 resolution 19 continue with_actions]
+place=town & population >    999 & tmp:city!=yes & name=* {set tmp:city=yes} [0x0a00 resolution 19 continue with_actions]
+place=town & population >      0 & tmp:city!=yes & name=* {set tmp:city=yes} [0x0b00 resolution 20 continue with_actions]
+place=town                       & tmp:city!=yes & name=* {set tmp:city=yes} [0x0800 resolution 19 continue with_actions]
+
+place=island                     & tmp:city!=yes          {set tmp:city=yes} [0x650c resolution 20 continue with_actions]
+place=islet                      & tmp:city!=yes          {set tmp:city=yes} [0x650c resolution 22 continue with_actions]
+place=village                    & tmp:city!=yes          {set tmp:city=yes} [0x0900 resolution 22 continue with_actions]
+place=suburb                     & tmp:city!=yes          {set tmp:city=yes} [0x0a00 resolution 22 continue with_actions]
+place=hamlet                     & tmp:city!=yes          {set tmp:city=yes} [0x0b00 resolution 24 continue with_actions]
 
 #aeroway=airport [0x5900 resolution 22]
 aeroway=airport [0x2f04 resolution 22]
@@ -110,6 +109,7 @@ amenity=car_rental [0x2f02 resolution 24]
 amenity=car_sharing [0x2f02 resolution 24]
 amenity=car_wash [0x2f0e resolution 24]
 amenity=casino [0x2d04 resolution 24]
+amenity=charging_station [0x2f01 resolution 24 default_name 'Car charging']
 amenity=cinema [0x2d03 resolution 24]
 amenity=college [0x2c05 resolution 24]
 amenity=concert_hall [0x2c09 resolution 24]
@@ -119,18 +119,22 @@ amenity=community_centre [0x3005 resolution 24]
 amenity=community_center [0x3005 resolution 24]
 amenity=courthouse [0x3004 resolution 24]
 amenity=drinking_water [0x5000 resolution 24 default_name 'Water']
-amenity=embassy & country=* { set name='${country} ${name|def:}' } [0x3003 resolution 24]
+amenity=embassy & country=* {set name='${country} ${name|def:Embassy}'} [0x3003 resolution 24]
 amenity=embassy & country!=* [0x3003 resolution 24 default_name 'Embassy']
 amenity=emergency_phone [0x2f12 resolution 24 default_name 'Emergency Phone']
 amenity=ferry_terminal [0x2f08 resolution 22]
+
 amenity=fast_food & cuisine=grill [0x2a03 resolution 24]
-amenity=fast_food & cuisine ~ '.*pizza.*' [0x2a0a resolution 24]
+amenity=fast_food & cuisine~'.*pizza.*' [0x2a0a resolution 24]
+amenity=fast_food & cuisine=* {add name='${cuisine|subst:"_=> "}'} [0x2a07 resolution 24]
 amenity=fast_food [0x2a07 resolution 24]
+
 amenity=fire_station [0x3008 resolution 24]
 amenity=food_court [0x2a13 resolution 24]
-amenity=fuel & fuel:HGV_diesel=yes [ 0x2f16 resolution 23]
-amenity=fuel & shop=convenience [ 0x2e06 resolution 24]
+amenity=fuel & fuel:HGV_diesel=yes [0x2f16 resolution 23]
+amenity=fuel & shop=convenience [0x2e06 resolution 24]
 amenity=fuel [0x2f01 resolution 24]
+amenity=grave_yard | amenity=crematorium [0x6403 resolution 24]
 amenity=kindergarten [0x2c05 resolution 24]
 amenity=library [0x2c03 resolution 24]
 amenity=nightclub [0x2d02 resolution 24]
@@ -139,35 +143,42 @@ amenity=parking [0x2f0b resolution 24 default_name 'Parking']
 amenity=pharmacy [0x2e05 resolution 24]
 amenity=place_of_worship [0x2c0b resolution 24]
 amenity=police [0x3001 resolution 24]
+amenity=post_box [0x2f15 resolution 24 default_name 'Post box']
 amenity=post_office [0x2f05 resolution 24]
-amenity=prison [0x3007 resolution 24]
+amenity=prison [0x3007 resolution 24 default_name 'Prison']
 amenity=pub [0x2d02 resolution 24]
 amenity=public_building [0x3007 resolution 24]
-amenity=recycling [0x2f15 resolution 24]
+amenity=recycling [0x2f15 resolution 24 default_name 'Recycling']
+
 amenity=restaurant & cuisine=american [0x2a01 resolution 24]
 amenity=restaurant & cuisine=asian [0x2a02 resolution 24]
 amenity=restaurant & cuisine=bagel [0x2a0d resolution 24]
 amenity=restaurant & cuisine=barbecue [0x2a03 resolution 24]
 amenity=restaurant & cuisine=british [0x2a11 resolution 24]
-amenity=restaurant & cuisine='cafe/diner' [0x2a0e resolution 24]
 amenity=restaurant & cuisine=chinese [0x2a04 resolution 24]
+amenity=restaurant & cuisine=curry [0x2a02 resolution 24]
 amenity=restaurant & cuisine=deli [0x2a05 resolution 24]
 amenity=restaurant & cuisine=french [0x2a0f resolution 24]
+amenity=restaurant & cuisine=fish_and_chips [0x2a11 resolution 24]
 amenity=restaurant & (cuisine=german | cuisine=bavarian) [0x2a10 resolution 24]
 amenity=restaurant & cuisine=grill [0x2a03 resolution 24]
+amenity=restaurant & cuisine=indian [0x2a02 resolution 24]
 amenity=restaurant & cuisine=international [0x2a06 resolution 24]
 amenity=restaurant & cuisine=italian [0x2a08 resolution 24]
 amenity=restaurant & cuisine=japanese [0x2a02 resolution 24]
 amenity=restaurant & cuisine=korean [0x2a02 resolution 24]
 amenity=restaurant & cuisine=mexican [0x2a09 resolution 24]
-amenity=restaurant & cuisine ~ '.*pizza.*' [0x2a0a resolution 24]
+amenity=restaurant & cuisine~'.*pizza.*' [0x2a0a resolution 24]
 amenity=restaurant & cuisine=sea_food [0x2a0b resolution 24]
+# often "seafood" is used instead of official tag "sea_food"
+amenity=restaurant & cuisine=seafood [0x2a0b resolution 24]
 amenity=restaurant & cuisine=spanish [0x2a09 resolution 24]
 amenity=restaurant & cuisine=speciality [0x2a12 resolution 24]
 amenity=restaurant & cuisine=steak [0x2a0c resolution 24]
 amenity=restaurant & cuisine=thai [0x2a02 resolution 24]
-amenity=restaurant & cuisine=* [0x2a13 resolution 24]
+amenity=restaurant & cuisine=* {add name='${cuisine|subst:"_=> "}'} [0x2a13 resolution 24]
 amenity=restaurant [0x2a00 resolution 24]
+
 amenity=school [0x2c05 resolution 24]
 # amenity=shelter is ambiguous; when possible, consider using other tags:
 #  tourism=lean_to or tourism=picnic_site
@@ -179,7 +190,7 @@ amenity=taxi [0x2f17 resolution 24]
 amenity=telephone [0x2f12 resolution 24 default_name 'Telephone']
 amenity=theatre [0x2d01 resolution 24]
 amenity=toilets & highway=rest_area [0x2f0c resolution 24]
-amenity=toilets [0x4e00 resolution 24 default_name 'Toilets' ]
+amenity=toilets [0x4e00 resolution 24 default_name 'Toilets']
 amenity=townhall [0x3003 resolution 24]
 amenity=university [0x2c05 resolution 24]
 # amenity=zoo is superceded by tourism=zoo
@@ -206,26 +217,27 @@ leisure=ice_rink [0x2d08 resolution 24]
 leisure=marina [0x4300 resolution 24]
 leisure=nature_reserve & name=* [0x6612 resolution 24]
 leisure=park [0x2c06 resolution 24]
-leisure=pitch { name '${name} (${sport})' | '${name}' } [0x2c08 resolution 24]
-leisure=playground [0x2c06 resolution 24]
-leisure=recreation_ground [0x2c08 resolution 24]
-leisure=sports_center | leisure=sports_centre { name '${name} (${sport})' | '${name}' } [0x2d0a resolution 24]
-leisure=stadium { name '${name} (${sport})' | '${name}' } [0x2c08 resolution 24]
-leisure=track { name '${name} (${sport})' | '${name}' } [0x2c08 resolution 24]
+leisure=pitch {name '${name} (${sport})' | '${name}'} [0x2c08 resolution 24]
+leisure=playground [0x2c06 resolution 24 default_name 'Playground']
+leisure=recreation_ground [0x2c08 resolution 24 default_name 'Rec.']
+leisure=sports_center | leisure=sports_centre {name '${name} (${sport})' | '${name}'} [0x2d0a resolution 24]
+leisure=stadium {name '${name} (${sport})' | '${name}'} [0x2c08 resolution 24]
+leisure=swimming_pool [0x2d09 resolution 24]
+leisure=track {name '${name} (${sport})' | '${name}'} [0x2c08 resolution 24]
 leisure=water_park [0x2d09 resolution 24]
 
-man_made=tower|man_made=mast|landmark=chimney [0x6411 resolution 24]
+man_made=tower | man_made=mast | landmark=chimney [0x6411 resolution 24]
 
 # Edge 705 displays 0x650a,0x6511,0x6512,0x6513,0x6603,0x6614 as hollow white circles, no menu
 natural=cave_entrance [0x6601 resolution 24]
 natural=cape [0x6606 resolution 24]
 natural=cliff [0x6607 resolution 24]
-natural=peak {name '${name|def:}${ele|height:m=>ft|def:}' } [0x6616 resolution 24]
+natural=peak {name '${name|def:}${ele|height:m=>ft|def:}'} [0x6616 resolution 24]
 natural=rock [0x6614 resolution 24]
 natural=volcano [0x2c0c resolution 24]
 
 railway=station [0x2f08 resolution 22]
-( public_transport=platform & rail=yes ) | railway=halt [0x2f08 resolution 23]
+(public_transport=platform & rail=yes) | railway=halt [0x2f08 resolution 23]
 public_transport=platform | highway=bus_stop | railway=tram_stop [0x2f17 resolution 24]
 
 shop=bakers [0x2e02 resolution 24]
@@ -259,7 +271,7 @@ shop=shoes [0x2e07 resolution 24]
 shop=supermarket [0x2e02 resolution 24]
 shop=tires [0x2f07 resolution 24]
 shop=tyres [0x2f07 resolution 24]
-shop=* & shop!=no & shop!=none [0x2e0c resolution 24]
+shop=* & shop!=no & shop!=none {add name='${shop|subst:"_=> "}'} [0x2e0c resolution 24]
 
 sport=9pin [0x2d07 resolution 24]
 sport=10pin | leisure=bowling_alley [0x2d07 resolution 24]
@@ -274,6 +286,7 @@ tourism=attraction & historic=* [0x2c02 resolution 24]
 tourism=attraction [0x2c04 resolution 24]
 tourism=artwork [0x2c04 resolution 24]
 tourism=aquarium [0x2c07 resolution 24]
+tourism=bed_and_breakfast [0x2b02 resolution 24]
 tourism=camp_site [0x2b05 resolution 24]
 tourism=caravan_site [0x2b05 resolution 24]
 tourism=chalet [0x2b02 resolution 24]
@@ -290,11 +303,13 @@ tourism=theme_park [0x2c01 resolution 24]
 tourism=viewpoint {name '${name} - ${description}' | '${name}'} [0x2c04 resolution 24]
 tourism=wine_cellar [0x2c0a resolution 24]
 tourism=zoo [0x2c07 resolution 24]
+tourism=* & tourism!=yes & tourism!=no {add name='${tourism|subst:"_=> "}'}
+tourism=* & tourism!=no [0x2c0d resolution 24]
 
 barrier=bollard | barrier=bus_trap | barrier=gate [0x660f resolution 24]
 barrier=block | barrier=cycle_barrier | barrier=stile | barrier=kissing_gate [0x660f resolution 24]
 
-landuse=basin|landuse=reservoir [0x650f resolution 24]
+landuse=basin | landuse=reservoir [0x650f resolution 24]
 
 natural=beach [0x6604 resolution 24]
 natural=glacier [0x650a resolution 24]
@@ -304,10 +319,11 @@ natural=water & name=* [0x6603 resolution 24]
 natural=waterfall | waterway=waterfall [0x6508 resolution 24]
 natural=wetland & name=* [0x6513 resolution 24]
 
-landuse=cemetery|landuse=cemetary|amenity=grave_yard [0x6403 resolution 24]
-(landuse=wood|landuse=forest|natural=wood) & name=* [0x6618 resolution 24]
+landuse=cemetery | landuse=cemetary | amenity=grave_yard [0x6403 resolution 24]
+(landuse=wood | landuse=forest | natural=wood) & name=* [0x6618 resolution 24]
 
 <finalize>
 # The finalizer section is executed for each element when a rule with an element type matches
-name=* { name '${name}' }
+
+name=* {name '${name}'}
 include 'inc/address';


=====================================
resources/styles/default/polygons
=====================================
@@ -10,15 +10,15 @@
 
 addr:housenumber=* {set mkgmap:execute_finalize_rules=true}
 
-leisure=* & sport=* & name=* { set name='${name} (${sport})' }
-leisure=* & sport=* & name!=* { add name='${sport}' }
+leisure=* & sport=* & name=* {set name='${name} (${sport})'}
+leisure=* & sport=* & name!=* {add name='${sport}'}
 
 include 'inc/name';
 
 aeroway=airport [0x07 resolution 20]
 aeroway=aerodrome [0x07 resolution 20]
 aeroway=runway {name '${ref}'} [0x0e resolution 20]
-(aeroway=taxiway | aeroway=taxilane) {name '${ref}'} [0x0e resolution 24]
+aeroway=taxiway | aeroway=taxilane {name '${ref}'} [0x0e resolution 24]
 aeroway=heliport [0x07 resolution 20]
 aeroway=helipad [0x0e resolution 22]
 
@@ -34,8 +34,7 @@ amenity=supermarket [0x08 resolution 22]
 amenity=university [0x0a resolution 21]
 
 healthcare=hospital | amenity=hospital | amenity=clinic [0x0b resolution 22]
-healthcare=* | amenity=dentist | amenity=doctors | amenity=nursing_home
-[0x0b resolution 23]
+healthcare=* | amenity=dentist | amenity=doctors | amenity=nursing_home [0x0b resolution 23]
 
 leisure=common [0x17 resolution 21]
 leisure=garden [0x17 resolution 21]
@@ -53,7 +52,7 @@ leisure=water_park [0x09 resolution 21]
 
 place=village [0x03 resolution 19]
 
-shop=* [0x08 resolution 22]
+shop=* {add name='${shop|subst:"_=> "}'} [0x08 resolution 22]
 
 # squares and plazas
 highway=pedestrian & (area=yes | mkgmap:mp_created=true) [0x17 resolution 22]
@@ -64,7 +63,7 @@ historic=museum | historic=memorial [0x1e resolution 21]
 historic=archaeological_site | historic=ruins [0x1e resolution 21]
 
 landuse=basin [0x3f resolution 20]
-(landuse=reservoir | (natural=water & water=reservoir)) [0x3f resolution 20]
+landuse=reservoir | (natural=water & water=reservoir) [0x3f resolution 20]
 
 natural=bay [0x3d resolution 18]
 natural=glacier [0x4d resolution 18]
@@ -73,26 +72,26 @@ natural=mud [0x51 resolution 20]
 natural=wetland [0x51 resolution 20]
 natural=water [0x3c resolution 18]
 natural=waterfall | waterway=waterfall [0x47 resolution 21]
-natural=sea { add mkgmap:skipSizeFilter=true; set mkgmap:drawLevel=2 } [0x32 resolution 10]
+natural=sea {add mkgmap:skipSizeFilter=true; set mkgmap:drawLevel=2} [0x32 resolution 10]
 
 waterway=riverbank [0x46 resolution 20]
 
 landuse=allotments [0x4e resolution 21]
-landuse=cemetery|landuse=cemetary|amenity=grave_yard [0x1a resolution 21]
+landuse=cemetery | landuse=cemetary | amenity=grave_yard [0x1a resolution 21]
 landuse=commercial [0x0c resolution 19]
 landuse=construction [0x0c resolution 21]
-landuse=farm |landuse=farmland [0x4e resolution 20]
+landuse=farm | landuse=farmland [0x4e resolution 20]
 landuse=farmyard [0x10 resolution 22]
-landuse=forest|landuse=wood [0x50 resolution 20]
+landuse=forest | landuse=wood [0x50 resolution 20]
 landuse=greenfield [0x17 resolution 20]
 landuse=meadow | landuse=grass [0x17 resolution 19]
 landuse=military [0x04 resolution 19]
 landuse=quarry [0x0c resolution 19]
 landuse=recreation_ground [0x19 resolution 19]
 # dedicate resolution 24 for building=* instead of related landuse=*
-landuse=industrial [0x0c resolution 23-19]
-landuse=residential [0x10 resolution 23-19]
-landuse=retail [0x08 resolution 23-20]
+landuse=industrial [0x0c resolution 19-23]
+landuse=residential [0x10 resolution 19-23]
+landuse=retail [0x08 resolution 20-23]
 landuse=village_green [0x17 resolution 20]
 landuse=vineyard [0x4e resolution 20]
 landuse=orchard [0x4e resolution 20]
@@ -106,27 +105,26 @@ natural=scrub [0x4f resolution 20]
 natural=wood [0x50 resolution 20]
 
 # building tag should be last
-(building=* | amenity=*) & area!=no & amenity!=grave_yard [0x13 resolution 24]
-tourism=* & area!=no & waterway!=* [0x1f resolution 24]
+amenity=* & area!=no & amenity!=grave_yard {add name='${amenity|subst:"_=> "}'} [0x13 resolution 24]
+building=* & building!=no [0x13 resolution 24]
+tourism=* & area!=no & waterway!=* {add name='${tourism|subst:"_=> "}'} [0x1f resolution 24]
+
 # man_made can be used on areas or lines
-man_made=* & area!=no
-& (man_made!=door & man_made!=embankment & man_made!=breakwater
-   & man_made!=cable_line & man_made!=cutline & man_made!=cutting
-   & man_made!=levee & man_made!=trench
-   & man_made!=groyne & man_made!=reinforced_slope)
-[0x13 resolution 24]
+man_made=* & area!=no & (
+    man_made!=door & man_made!=embankment & man_made!=breakwater & man_made!=cable_line & man_made!=cutline &
+    man_made!=cutting & man_made!=levee & man_made!=trench & man_made!=groyne & man_made!=reinforced_slope)
+    {add name='${man_made|subst:"_=> "}'} [0x13 resolution 24]
 
-man_made=* & area=yes
-[0x13 resolution 24]
+man_made=* & area=yes {add name='${man_made|subst:"_=> "}'} [0x13 resolution 24]
 
-# render small named islands 
+# render small named islands
 place=island & name=* & area_size() < 1000000 [0x53 resolution 19]
 place=islet & name=* [0x53 resolution 20]
 
 <finalize>
 # The finalizer section is executed for each element when a rule with an element type matches
 
-# we need addrees info from buildings for the address search
+# we need address info from buildings for the address search
 include 'inc/address';
 
-name=* { name '${name}' }
+name=* {name '${name}'}


=====================================
src/uk/me/parabola/imgfmt/app/typ/ColourInfo.java
=====================================
@@ -282,7 +282,7 @@ public class ColourInfo implements Writeable, AlphaAdder {
 			// in each of the day/night sections.
 
 			if (numberOfColours > 4)
-				return ("Too many colours for a line or polygon");
+				return "Too many colours for a line or polygon";
 			if (numberOfColours == 0)
 				return "Line or polygon cannot have zero colours";
 


=====================================
src/uk/me/parabola/mkgmap/combiners/MdrBuilder.java
=====================================
@@ -294,9 +294,6 @@ public class MdrBuilder implements Combiner {
 		List<RoadDef> roads = mr.getRoads();
 
 		for (RoadDef road : roads) {
-			String name = road.getName();
-			if (name == null || name.isEmpty())
-				continue;
 			List<City> cities = road.getCities();
 			if (cities.isEmpty())
 				mdrFile.addStreet(road, null);


=====================================
src/uk/me/parabola/mkgmap/general/MapRoad.java
=====================================
@@ -185,6 +185,19 @@ public class MapRoad extends MapLine {
 		return false;
 	}
 	
+	public int getLabelPos(String label){
+		if (label == null)
+			return -1;
+		for (int i = 0; i < labels.length; i++){
+			if (labels[i] == null){
+				return -1;
+			}
+			if (labels[i].equals(label))
+				return i;
+		}
+		return -1;
+	}
+	
 	public String toString(){
 		if ((getName() == null || getName().isEmpty()) && getStreet() != null)
 			return "id="+this.getRoadDef().getId() + ", (" + this.getStreet() + ")";


=====================================
src/uk/me/parabola/mkgmap/main/TypCompiler.java
=====================================
@@ -26,6 +26,7 @@ import java.nio.channels.FileChannel;
 import java.nio.charset.CharacterCodingException;
 import java.nio.charset.Charset;
 import java.nio.charset.CharsetEncoder;
+import java.nio.charset.StandardCharsets;
 import java.nio.file.StandardOpenOption;
 
 import uk.me.parabola.imgfmt.ExitException;
@@ -211,8 +212,13 @@ public class TypCompiler implements MapProcessor {
 		}
 
 		private void setCodePage(String codePage) {
-			this.codePage = codePage;
-			this.encoder = Charset.forName(codePage).newEncoder();
+			if ("cp65001".equalsIgnoreCase(codePage)) {
+				this.codePage = "utf-8";
+				this.encoder = StandardCharsets.UTF_8.newEncoder();
+			} else {
+				this.codePage = codePage;
+				this.encoder = Charset.forName(codePage).newEncoder();
+			}
 		}
 
 		private String probeCharset(String file) {


=====================================
src/uk/me/parabola/mkgmap/osmstyle/housenumber/HousenumberMatch.java
=====================================
@@ -312,6 +312,12 @@ public class HousenumberMatch extends HousenumberElem {
 			return false;
 		if (getSign().equals(other.getSign()) == false)
 			return false;
+		if (getPlace() != other.getPlace()) {
+			if (getPlace() == null)
+				return false;
+			if (getPlace().equals(other.getPlace()) == false)
+				return false;
+		}
 		if (getZipCode() != null && other.getZipCode() != null){
 			if (getZipCode().equals(other.getZipCode()) == false)
 				return false;


=====================================
src/uk/me/parabola/mkgmap/osmstyle/housenumber/HousenumberRoad.java
=====================================
@@ -559,11 +559,17 @@ public class HousenumberRoad {
 					log.info("dropped label",droppedLabel,"for",road,"in preference to correct address search. Labels are now:",Arrays.toString(labels));
 			}
 		}
+		
 		if (furtherNames != null){
 			boolean changed = false;
 			for (String furtherName : furtherNames){
-				if (road.addLabel(furtherName))
-					changed = true;
+				if (road.getLabelPos(furtherName) == -1) {
+					if (road.addLabel(furtherName))
+						changed = true;
+					else {
+						log.warn("could not add further label",furtherName, "for",road);
+					}
+				}
 			}
 			if (changed){
 				log.info("added further labels for",road,"Labels are now:",Arrays.toString(labels));


=====================================
src/uk/me/parabola/mkgmap/reader/MapperBasedMapDataSource.java
=====================================
@@ -108,6 +108,7 @@ public abstract class MapperBasedMapDataSource implements MapDataSource, Configu
 		background.setPoints(mapper.getBounds().toCoords());
 		background.setType(0x4b); // background type
 		background.setMinResolution(0); // On all levels
+		background.setFullArea(Long.MAX_VALUE-1); // sea also SEA_SIZE in SeaGenerator
 
 		mapper.addShape(background);
 	}


=====================================
src/uk/me/parabola/mkgmap/reader/osm/SeaGenerator.java
=====================================
@@ -104,7 +104,7 @@ public class SeaGenerator extends OsmReadingHooksAdaptor {
 
 	/**
 	 * When order-by-decreasing-area we need all bit of sea to be output consistently.
-	 * Unless _draworder changes things, having seaSize as BIG causes polygons beyond the
+	 * Unless _draworder changes things, having SEA_SIZE as BIG causes polygons beyond the
 	 * coastline to be shown. To hide these and have the sea show up to the high-tide
 	 * coastline, can set this to be very small instead (or use _draworder).
 	 * <p>
@@ -112,7 +112,7 @@ public class SeaGenerator extends OsmReadingHooksAdaptor {
 	 * natural=sea { add mkgmap:skipSizeFilter=true; set mkgmap:drawLevel=2 } [0x32 resolution 10]
 	 * which is equivalent to Long.MAX_VALUE-2.
 	 */
-	private static final long seaSize = Long.MAX_VALUE-2; // sea is BIG
+	private static final long SEA_SIZE = Long.MAX_VALUE-2; // sea is BIG
 
 	/**
 	 * Sort out options from the command line.
@@ -670,7 +670,7 @@ public class SeaGenerator extends OsmReadingHooksAdaptor {
 				saver.addWay(w);
 			}
 			for (Way w : seaWays) {
-				w.setFullArea(seaSize);
+				w.setFullArea(SEA_SIZE);
 				saver.addWay(w);
 			}
 		} else {
@@ -680,7 +680,7 @@ public class SeaGenerator extends OsmReadingHooksAdaptor {
 			// first add the complete bounding box as sea
 			Way sea = new Way(FakeIdGenerator.makeFakeId(),bounds.toCoords());
 			sea.addTag("natural", "sea");
-			sea.setFullArea(seaSize);
+			sea.setFullArea(SEA_SIZE);
 			
 			for (Way w : landWays) {
 				saver.addWay(w);
@@ -954,7 +954,7 @@ public class SeaGenerator extends OsmReadingHooksAdaptor {
 					ne.getLongitude() + 1));
 			sea.addPoint(sea.getPoints().get(0)); // close shape
 			sea.addTag("natural", "sea");
-			sea.setFullArea(seaSize);
+			sea.setFullArea(SEA_SIZE);
 
 			log.info("sea: ", sea);
 			saver.addWay(sea);


=====================================
src/uk/me/parabola/mkgmap/reader/osm/Way.java
=====================================
@@ -257,6 +257,11 @@ public class Way extends Element {
 		this.isViaWay = isViaWay;
 	}
 
+	/**
+	 * Allows to manipulate the area size which might be used to sort shapes when
+	 * option --order-by-decreasing-area is active. 
+	 * @param fullArea
+	 */
 	public void setFullArea(long fullArea) {
 		this.fullArea = fullArea;
 	}


=====================================
src/uk/me/parabola/mkgmap/typ/CommonSection.java
=====================================
@@ -369,6 +369,8 @@ public class CommonSection {
 	 */
 	protected Xpm readXpm(TokenScanner scanner, String header, boolean simple) {
 		ColourInfo colourInfo = readColourInfo(scanner, header);
+		xpmCheck(scanner, colourInfo);
+
 		String msg = colourInfo.analyseColours(simple);
 		if (msg != null)
 			throw new SyntaxException(scanner, msg);
@@ -404,4 +406,12 @@ public class CommonSection {
 		if (!hasXpm)
 			throw new SyntaxException(scanner, "No XPM tag in section");
 	}
+
+	/**
+	 * Check the colourInfo against any restrictions that apply to the element type.
+	 *
+	 * Subtypes make checks as appropriate, there are no common restrictions.
+	 */
+	protected void xpmCheck(TokenScanner scanner, ColourInfo colourInfo) {
+	}
 }


=====================================
src/uk/me/parabola/mkgmap/typ/LineSection.java
=====================================
@@ -12,6 +12,7 @@
  */
 package uk.me.parabola.mkgmap.typ;
 
+import uk.me.parabola.imgfmt.app.typ.ColourInfo;
 import uk.me.parabola.imgfmt.app.typ.TypData;
 import uk.me.parabola.imgfmt.app.typ.TypLine;
 import uk.me.parabola.mkgmap.scan.SyntaxException;
@@ -62,4 +63,14 @@ class LineSection extends CommonSection implements ProcessSection {
 		current.finish();
 		data.addLine(current);
 	}
+
+	protected void xpmCheck(TokenScanner scanner, ColourInfo colourInfo) {
+		int width = colourInfo.getWidth();
+
+		if (width == 0)
+			return;
+
+		if (width != 32)
+			throw new SyntaxException(scanner, "Line bitmaps must be 32 bits wide");
+	}
 }


=====================================
src/uk/me/parabola/mkgmap/typ/PolygonSection.java
=====================================
@@ -12,8 +12,10 @@
  */
 package uk.me.parabola.mkgmap.typ;
 
+import uk.me.parabola.imgfmt.app.typ.ColourInfo;
 import uk.me.parabola.imgfmt.app.typ.TypData;
 import uk.me.parabola.imgfmt.app.typ.TypPolygon;
+import uk.me.parabola.mkgmap.scan.SyntaxException;
 import uk.me.parabola.mkgmap.scan.TokenScanner;
 
 /**
@@ -45,4 +47,30 @@ class PolygonSection extends CommonSection implements ProcessSection {
 		validate(scanner);
 		data.addPolygon(current);
 	}
+
+	/**
+	 * Check xmp restrictions for polygons.
+	 *
+	 * The main one is that bitmaps must be 32x32.  Only certain numbers of colours are
+	 * allowed as well.
+	 */
+	protected void xpmCheck(TokenScanner scanner, ColourInfo colourInfo) {
+		int width = colourInfo.getWidth();
+		int height = colourInfo.getHeight();
+
+		switch (colourInfo.getNumberOfColours()) {
+		case 1:
+		case 2:
+		case 4:
+			break;
+		default:
+			throw new SyntaxException(scanner, "Polygons must have 1, 2 or 4 colours");
+		}
+
+		if (width == 0 && height == 0)
+			return;
+
+		if (height != 32 || width != 32)
+			throw new SyntaxException(scanner, "Polygon bitmaps must be 32x32");
+	}
 }



View it on GitLab: https://salsa.debian.org/debian-gis-team/mkgmap/compare/2ded6c77c3fe5acd626d39d375f9da5f684cb7a4...3b21cccfba8cb2b0d7c91ce404d0252da1e4d0bf

-- 
View it on GitLab: https://salsa.debian.org/debian-gis-team/mkgmap/compare/2ded6c77c3fe5acd626d39d375f9da5f684cb7a4...3b21cccfba8cb2b0d7c91ce404d0252da1e4d0bf
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-grass-devel/attachments/20181202/36a7c881/attachment-0001.html>


More information about the Pkg-grass-devel mailing list