Hi Gerd,
the address file is an include and you don't know what happens before.
Maybe it is not set in the mkgmap style. But the address file is quite
general and so it is probably used by other styles which might have some
special rules before "include address" that set mkgmap:country.
So I would recommend to leave it as it is (I think the style optimizer
will reduce the performance drawbacks of the one additional
mkgmap:country!=* ).
I would like to use
mkgmap:country!=* { set
mkgmap:country='${mkgmap:admin_level2}'|'${addr:country}'|'${is_in:country}'
}
But that doesn't work because it is not allowed to use a != rule only.
Maybe you have a good idea to tweak it so that it works in such a way.
You are right that this assignment does not normalize the country codes
within the styles. It would be good to add that.
A function need to call Locator.getCountryISOCode(String). This returns
the three letter ISO code. All values listed in the Locator.xml are
accepted (name, ISO code, variants). Additionally it learns
automatically all localization variants from the loaded bounds files.
Just start at BoundaryLocationPreparer.parseTags(String).
For all other values that are still not mapped the uppercase string is
returned.
At the moment mkgmap:country is normalized after the style file
processing in the MapBuilder class. Just search for
locator.getCountryISOCode(String).
Ulrich
Hi all,
the default style file inc/address starts with these three rules:
# first set the country code
mkgmap:country!=* & mkgmap:admin_level2=* { set
mkgmap:country='${mkgmap:admin_level2}' }
mkgmap:country!=* & addr:country=* { set mkgmap:country='${addr:country}' }
mkgmap:country!=* & is_in:country=* { set
mkgmap:country='${is_in:country}' }
I found no code in the mkgmap java sources that sets mkgmap:country, so
the first rule
will always set mkgmap:country unless one manipulates the OSM data.
The following rules evaluate mkgmap:country and expect the ISO 1366 code
with 3 characters, e.g. DEU
for Germany.
The wiki for tag addr:country says that it should contain the 2
character ISO code, e.g. DE for Germany.
The is_in:country tag contains the country name, not the iso code.
I think we should remove the two useless rules unless someone finds a
working alternative.
Gerd
_______________________________________________
mkgmap-dev mailing list
mkgmap-dev@lists.mkgmap.org.uk
http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev
_______________________________________________
mkgmap-dev mailing list
mkgmap-dev@lists.mkgmap.org.uk
http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev