logo separator

[mkgmap-dev] [PATCH v4] Automatic location completion

From WanMil wmgcnfg at web.de on Sat Mar 5 19:07:58 GMT 2011

Attached is the next step for the automatic location completion:
* Some speed improvements (it's still slow but not as slow as before ;-)
* boundary=postal_code is now supported.
* The Locator does no longer overwrite already set attributes. This 
seems to be a better solution. I think the Locator must be rewritten 
completely. Up to now I have commented some lines only without deep 
understanding what it is really doing.

Some things that don't work:
* Lot's of POIs are assigned with the default country although the 
MapElements are assigned with the correct country. Example:
- Spain splitted with --overlap=3000 (more overlap is better for my patch)
- Cafe Antxi (http://www.openstreetmap.org/browse/node/629554219) is 
correctly assigned with country=ESP but in the POI search it is 
displayed with the default country.
I have no idea why.

* Zips are only applied to POIs. Streets seems to be not yet supported 
by the MDR creation. (=> Steve?)

Things to do:
* Speed improvement (At the moment the location search takes as much 
time as the rest of the map creation)
* A better mapping of city, region to the admin-levels
* Make use more OSM information (like residential areas, place=city POIs 
in residential areas etc.)
* Clean up of the Locator class

WanMil


> I have improved calculation of the country information. In case no
> country information is available the most used country in a tile is used
> for all elements without country tag.
>
> The patch now patches the trunk and no longer the index branch.
>
> I have observed that lots of POIs are assigned the default country
> although I they are assigned a different country. I have no clue where
> this happens.
> Maybe an index related problem? I was hoping that Steves commit today
> would fix that problem but it didn't.
>
> WanMil
>
>> I have done some development and want you to share my current findings.
>>
>> 1. The MapElement copy constructor seems to have a bug. The attributes
>> map which contains the city, region and country information is not
>> copied. From my point of view this is an important thing that should be
>> fixed in the trunk also.
>>
>> 2. In the patch the Locator is disabled as much as it was possible for
>> me up to now.
>>
>> 3. I am using now separate tags (mkgmap:city, mkgmap:region etc.).
>>
>> I recommend to run this patch with location-autofill=-1 or 0 to see how
>> the patch works and not how the old Locator works.
>>
>> WanMil
>>
>>
>>> 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
>>> * 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)
>>>
>>>
>>> Have fun!
>>> WanMil
>>>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: index_location_v4.patch
Type: text/x-patch
Size: 40760 bytes
Desc: not available
Url : http://lists.mkgmap.org.uk/pipermail/mkgmap-dev/attachments/20110305/10ca2419/attachment.bin 


More information about the mkgmap-dev mailing list