logo separator

[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>


More information about the mkgmap-dev mailing list