[mkgmap-dev] useless rules in default style inc/address
From Gerd Petermann gpetermann_muenchen at hotmail.com on Fri Nov 28 07:52:39 GMT 2014
Hi WanMil, > 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!=* ). OK. I don't mind to have a few more simple rules, I just wanted to point out that they will probably not produce the wanted result. > > 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. OK, I'll have a look. Up to now I don't even know why it is not allowed. > > You are right that this assignment does not normalize the country codes > within the styles. It would be good to add that. OK. I'll try to code the style function. Sounds easy enough. Gerd > 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 > > > > _______________________________________________ > mkgmap-dev mailing list > mkgmap-dev at lists.mkgmap.org.uk > http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://www.mkgmap.org.uk/pipermail/mkgmap-dev/attachments/20141128/404c219b/attachment.html>
- Previous message: [mkgmap-dev] useless rules in default style inc/address
- Next message: [mkgmap-dev] Substring returns full string
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the mkgmap-dev mailing list