logo separator

[mkgmap-dev] [PATCH V4] boundary preparer with quadtree

From WanMil wmgcnfg at web.de on Sun Feb 19 12:21:17 GMT 2012

Hi Gerd,

I've just started to look through the sources. I haven't read all so 
maybe some of my comments are just wrong...

* class BoundaryLevelCollator in BoundaryLocationPreparer:
I think you have copied that from the LocationHook. But now you are 
using it in a different context which might cause problems. The collator 
retrieves the name of an admin_level and compares them. In the 
LocationHook it can use the final name-tag-list but during the 
preparation step the preparer does not know anything about the 
name-tag-list (it is possible that I prepare the bounds with 
"name:de,name:it" and you are using the prepared bounds with "name:zh"). 
The chances are not very high that this causes a problem but I think 
during preparation you should check all tags matching "*name*" to be safe.

* Good idea to use the max-jobs parameter for the preparation. Maybe you 
can use the threadPool ExecutorService from the Main class instead of 
creating your own thread environment? Implementing the preparer as a 
thread was not my final idea but it was easy to realize so I didn't 
invest the time to change that.

* FindBugs found two warnings:
line 1048:
   if (nodes.get(i).boundaryId == nodes.get(i-1).boundaryId){
line 1271:
   if (o1 == o2) {

Strings should be compared with equals instead of ==

That's it for now.


> Hi Gerd,
> thanks for that patch. It's a big step forward :-)
> I've comitted it and also merged all changes from the trunk so that the
> branch does not diverge too much.
> I tried to compile boundaries for an old planet file but got an
> exception in the BoundaryMerger:
> Exception in thread "main" java.lang.NullPointerException
>           at
> uk.me.parabola.mkgmap.reader.osm.boundary.BoundaryMerger.merge(BoundaryMerger.java:93)
>           at
> uk.me.parabola.mkgmap.reader.osm.boundary.BoundaryMerger.main(BoundaryMerger.java:144)
> Can you have a look on it?
> Thanks!
> WanMil
>> Hi WanMil,
>> attached is the new patch for the performance branch.
>> Its quite big because I've rewritten many methods to work with the quadtree
>> instead of
>> List<boundary>
>> Major changes:
>> - new file format for *.bnd files. It stores first the boundary tags, then
>> the areas with float precision.
>> The file size is not much different from the old format, but when zipped it
>> is much smaller.
>> The time to load the file into the quadtree is shorter than the time to load
>> the old format.
>> The old format is still supported, but requires much more time in the
>> LocationHook (probably it is still
>> faster than trunk, but not much)
>> - the bounds parameter allows now to specify a zip file with the *.bnd
>> files. The zip file can have a directory structure, but should not contain
>> duplicate *.bnd files.
>> - BoundaryPreparer uses multiple processors for the
>> workoutBoundaryRelations() part when --max-jobs parameter allows it. When
>> called as stand-alone program, it starts one thread for each processor.
>> - the utilities BoundaryDiff, BoundaryMerger, BoundaryFile2Gpx,
>> BoundaryLister were rewritten to use the quadtree, most of them also allow
>> *.zip as input. BoundaryLister lists only the OSM tags, not the
>> information created for the quadtree. Can be changed if needed.
>> Open problem:
>> The BoundaryMerger creates a result that contains a few more small holes
>> than the trunk version. I'm going to analyse that during the next days.
>> Todo: Javadoc
>> Ciao,
>> Gerd
>> http://gis.19327.n5.nabble.com/file/n5495676/boundary_prep_quadtree_v4.patch
>> boundary_prep_quadtree_v4.patch
>> --
>> View this message in context: http://gis.19327.n5.nabble.com/PATCH-V4-boundary-preparer-with-quadtree-tp5495676p5495676.html
>> Sent from the Mkgmap Development mailing list archive at Nabble.com.
>> _______________________________________________
>> 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

More information about the mkgmap-dev mailing list