[mkgmap-dev] [PATCH v6] Automatic location completion
From maning sambale emmanuel.sambale at gmail.com on Thu Mar 10 02:53:11 GMT 2011
Thanks for jar file. Now to report my test results: I uploaded the map via Garmin MapInstall search for "Address" and "Intersections". I get a "No Data Available" Using: mkgmap-locator-r1892.jar Args.list: ode-page=1252 tdbfile latin1 country-abbr=PHL country-name=PHILIPPINES remove-short-arcs=5 route add-pois-to-areas family-id=639 family-name=OSM_PHIL overview-mapname=40000001 series-name=OSM_PHIL description=OSM_PHIL style-file=/home/maning/Downloads/osm/routable_garmin/git/osmphgps/styles/default generate-sea=multipolygon,extend-sea-sectors,close-gaps=1000 index make-poi-index adjust-turn-headings drive-on-right report-dead-ends ignore-maxspeeds link-pois-to-ways location-autofill=0 Some error reports: SEVERE (LocationHook): philippines.osm: Element lists created after 230 ms SEVERE (LocationHook): philippines.osm: Quadtree created after 23798 ms SEVERE (LocationHook): philippines.osm: Location admin_level=1 processed after 23815 ms SEVERE (LocationHook): philippines.osm: Location admin_level=2 processed after 23864 ms SEVERE (LocationHook): philippines.osm: Start assigning admin_level=2 after 23962 ms SEVERE (LocationHook): philippines.osm: Special admin_level=2 handling processed after 24627 ms SEVERE (LocationHook): philippines.osm: Cannot process location element because it contains no name tag: 4611686018427393428 [boundary=administrative,admin_level=3,mkgmap:stylefilter=polygon,mkgmap:admin_level2=PHL] SEVERE (LocationHook): philippines.osm: Location admin_level=3 processed after 40069 ms SEVERE (LocationHook): philippines.osm: Cannot process location element because it contains no name tag: 61462633 [boundary=administrative,admin_level=4,mkgmap:admin_level2=PHL] SEVERE (LocationHook): philippines.osm: Cannot process location element because it contains no name tag: 4611686018427387951 [boundary=administrative,admin_level=4,mkgmap:stylefilter=polygon,mkgmap:admin_level2=PHL] SEVERE (LocationHook): philippines.osm: Cannot process location element because it contains no name tag: 27751466 [boundary=administrative,admin_level=4,mkgmap:admin_level2=PHL] SEVERE (LocationHook): philippines.osm: Location admin_level=4 processed after 40335 ms SEVERE (LocationHook): philippines.osm: Location admin_level=5 processed after 40336 ms SEVERE (LocationHook): philippines.osm: Cannot process location element because it contains no name tag: 28045303 [mkgmap:admin_level6=Makati,boundary=administrative,admin_level=6,mkgmap:admin_level2=PHL,mkgmap:admin_level3=Metro Manila] SEVERE (LocationHook): philippines.osm: Location admin_level=6 processed after 42682 ms SEVERE (LocationHook): philippines.osm: Location admin_level=7 processed after 42683 ms SEVERE (LocationHook): philippines.osm: Location admin_level=8 processed after 42823 ms SEVERE (LocationHook): philippines.osm: Location admin_level=9 processed after 42836 ms SEVERE (LocationHook): philippines.osm: Location admin_level=10 processed after 44427 ms SEVERE (LocationHook): philippines.osm: Location admin_level=11 processed after 44427 ms SEVERE (LocationHook): philippines.osm: Location postal_code processed after 44427 ms SEVERE (LocationHook): philippines.osm: Location hook finished in 44427 ms Next I tried using the default style and now I can search for streets via "Address". There must be something wrong with my own style Moving on, for areas with proper relation/multipolygon I get good results for streets within villages (admin_level=10 http://www.openstreetmap.org/browse/relation/371327) but I can't get streets within tows/cities (admin_level=6 http://www.openstreetmap.org/browse/relation/146949) One question, does your code split the road when it crosses another admin_level? 2011/3/10 Carlos Dávila <cdavilam at orangecorreo.es>: > El 08/03/11 23:07, WanMil escribió: > > Next round of the location improvements: > * The algorithm that searched which elements were contained within a > boundary was (is) wrong. I updated some parameters in the Quadtree so I the > probability is very much lower that an element is not assigned correctly. > > In case they can help you improve the algorithm, here you have two examples > of nodes wrongly assigned (according to my styles below): nodes 945168390 > and 943005606, that are within boundary relation 348994 (admin_level=6) are > assigned region=Extremadura (boundary relation 349050, admin_level=4). I can > provide more examples if necessary. > Extract of the styles: > mkgmap:region!=* & is_in:province=* { set mkgmap:region='${is_in:province}' > } > mkgmap:region!=* & mkgmap:admin_level6=* { set > mkgmap:region='${mkgmap:admin_level6}' } > mkgmap:region!=* & mkgmap:admin_level5=* { set > mkgmap:region='${mkgmap:admin_level5}' } > mkgmap:region!=* & mkgmap:admin_level4=* { set > mkgmap:region='${mkgmap:admin_level4}' } > mkgmap:region!=* & mkgmap:admin_level3=* { set > mkgmap:region='${mkgmap:admin_level3}' } > > * The mkgmap:country, addr:country and is_in:country tag is now always > assigned with the three letter country code. This makes it possible to > define country specific rules in the style files. > > With no changed on your mkgmap:country rules in styles I have (among others) > Esp and España (ESP) in the list of countries. If I select Esp, a full list > of places is found, but if I select España (ESP), nothing in found. > > A note ot Carlos: > With this patch you can add debug rules to the style file. So if you don't > understand why a specific region/country is used add the following line to > your style files: > mkgmap:region=* { echo "R=${mkgmap:region} 3=${mkgmap:admin_level3} > 4=3=${mkgmap:admin_level4} 5=${mkgmap:admin_level5} 6=${mkgmap:admin_level6} > is_in=${is_in:region}" } > > How can I send the echo output to a file? I tried java -jar mkgmap.jar > options input_files > textfile with no success > > I think your rules are ok. > > By the way: Should I create a branch for my changes? Maybe this makes it > easier for more people to test and to play with? > > WanMil > > El 06/03/11 19:40, WanMil escribió: > > I implemented Minkos idea using the style file to set the city, > region, zip and country names. > > How does it work? > The new AddressHook adds special tags to each element that is inside a > known boundary: > mkgmap:admin_level2 > mkgmap:admin_level3 > mkgmap:admin_level4 > .. > mkgmap:admin_level11 > > If an admin_level is not known the relevant tag is not set. The same > for the zip tag mkgmap:postalcode. > > The style file contains a new rule block (in each file): > mkgmap:country!=* & addr:country=* > { set mkgmap:country='${addr:country}' } > mkgmap:country!=* & is_in:country=* > { set mkgmap:country='${is_in:country}' } > mkgmap:country!=* & mkgmap:admin_level2=* > { set mkgmap:country='${mkgmap:admin_level2}' } > > mkgmap:region!=* & is_in:county=* > { set mkgmap:region='${is_in:county}' } > mkgmap:region!=* & mkgmap:admin_level6=* > { set mkgmap:region='${mkgmap:admin_level6}' } > ... > > mkgmap:city!=* & openGeoDB:name=* > { set mkgmap:city='${openGeoDB:name}' } > mkgmap:city!=* & mkgmap:admin_level8=* > { set mkgmap:city='${mkgmap:admin_level8}' } > ... > > mkgmap:postal_code!=* & addr:postcode=* > { set mkgmap:postal_code='${addr:postcode}' } > mkgmap:postal_code!=* & mkgmap:postcode=* > { set mkgmap:postal_code='${mkgmap:postalcode}' } > > These rules set the mkgmap tags: > mkgmap:country > mkgmap:region > mkgmap:city > mkgmap:postal_code > > Only these tags are used to set the country, the region, the city and > the zip code. No more rules are applied automatically (there are still > some in the Locator class but they will be removed). > > This enables you to configure which admin_level information you want > to use for the city name, the region names etc. Also country specific > rules are possible (e.g. add a mkgmap:country=NLD rule). > > Todo: The country normalization must be performed by the AddressHook > so that one can be sure that the Netherlands are always tagged with > mkgmap:country=NLD (or mkgmap:country=Nederland?) > > The rules are not perfect up to now but please feel free to post some > good rules for your country. > > I have changed my styles as follows, > > mkgmap:region!=* & is_in:region=* { set mkgmap:region='${is_in:region}' } > mkgmap:region!=* & mkgmap:admin_level4=* { set > mkgmap:region='${mkgmap:admin_level4}' } > mkgmap:region!=* & mkgmap:admin_level6=* { set > mkgmap:region='${mkgmap:admin_level6}' } > mkgmap:region!=* & mkgmap:admin_level5=* { set > mkgmap:region='${mkgmap:admin_level5}' } > mkgmap:region!=* & mkgmap:admin_level3=* { set > mkgmap:region='${mkgmap:admin_level3}' } > > to adapt them to what I think is best for Spain, but, if I understood > well, something is not working as expected: places tagged as villages > that have no is_in:region information and are within admin_level=4 and > admin_level=6 polygons take the region from the a_l=6 polygon, instead > of a_l=4 as it should be from the style above. > > WanMil > > > 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 > > > > > _______________________________________________ > mkgmap-dev mailing list > mkgmap-dev at lists.mkgmap.org.uk > http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev > > -- > Por favor, no me envíe documentos con extensiones .doc, .docx, .xls, .xlsx, > .ppt, .pptx, .mdb, mdbx > Instale OpenOffice desde http://es.openoffice.org/programa/index.html > OpenOffice es libre: se puede copiar, modificar y redistribuir libremente. > Gratis y totalmente legal. > OpenOffice está en continuo desarrollo y no tendrá que pagar por las nuevas > versiones. > > _______________________________________________ > mkgmap-dev mailing list > mkgmap-dev at lists.mkgmap.org.uk > http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev > -- cheers, maning ------------------------------------------------------ "Freedom is still the most radical idea of all" -N.Branden wiki: http://esambale.wikispaces.com/ blog: http://epsg4253.wordpress.com/ ------------------------------------------------------
- Previous message: [mkgmap-dev] [PATCH v6] Automatic location completion
- Next message: [mkgmap-dev] [PATCH v6] Automatic location completion
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the mkgmap-dev mailing list