logo separator

[mkgmap-dev] useless rules in default style inc/address

From WanMil wmgcnfg at web.de on Thu Nov 27 19:39:16 GMT 2014

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 at lists.mkgmap.org.uk
> http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev
>



More information about the mkgmap-dev mailing list