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