
After the index branch has been developed so far that we can use the results in MapSource (thanks to Steve!!) there is a big need for a mechanism to fill missing location information.
There has been a lot of discussion about that. It stopped because it was quite theoretical (from my point of view). Therefore I have started to implement a prototype osm hook that tries to complete the missing location information. I think the is_in tag is quite problematic therefore I decided to use the addr tags.
Attached is a *very* early implementation that makes use of the boundary polygons. It checks all nodes and ways/polygons within all boundary polygons and fills the missing addr tags.
I think this is a better foundation for the discussion how we want to fill the missing location information.
Before flaming me about terrible code please be aware that: * the patch is not optimized * it's version 1, so far away from handling all situations / countries * it's a very early prototype
I would be happy if you try it and make some proposals how it could be improved.
Some improvements I already know and thinking about: * The new hook should run after the multipolygon finishing and not before * The is_in tag should be handled I suppose you mean in case boundary polygons are missing.
Not really. I thought that I should not add any address information if the is_in tag is already set. But the is_in tag is very problematic. So I should delete this point.
* boundary information propagation => First go through all boundaries and add the information from higher levels to lower ones, i.e. add addr:district to all city boundaries within that district * Use landuse=residential information in combination with the place nodes * In case a boundary level is missing (which mostly will be the case for countries admin_level=2), select the addr information from all nodes and ways within a boundary by using the most used addr-tag value. (in germany the addr:country=DE should be the most used) According to [1], there's a great variety in the matching of admin_level=* to places across countries, so it could be useful to have some options to choose what admin_level one want to assign to a given place=*. In a first try of your patch in Spain I see some streets are assigned suburbs while they should be (IMHO) assigned to cities. Searching for several streets and leaving city blank I get three (by now) patterns: street, city, region, country (the right one for me) street, suburb, province, country (street assigned to nearest place=suburb node) street, suburb, region, country (I don't know if street is assigned to boundary polygons or to nearest place=suburb node, because both exist and unpatched mkgmap gives the same result). I could give you ID's of involved nodes, streets and relations if you need them.
[1]http://wiki.openstreetmap.org/wiki/Key:admin_level#admin_level
Yes, I expect such configuration needs. It seems as if it will be necessary to have a config file for this information (which addr-level should be used for which information in which country). I'll put it on my list.