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

Reply via email to