[josm-dev] [PATCH 1/2] QuadBuckets (using quad tiling) for node storage in JOSM

Petr Nejedlý petr at nejedli.cz
Sat Sep 12 20:04:12 BST 2009


Karl Guggisberg napsal(a):
> Hi,
> 
> what about JOSM-NG?
> http://svn.openstreetmap.org/applications/editors/josm-ng/ 
> 
> Here's their Quadtree implementation:
>  
> http://svn.openstreetmap.org/applications/editors/josm-ng/src/org/openstreet
> map/josmng/view/osm/QTree.java
> 
> Is there still somebody around who has worked on JOSM-NG?

Im still here though mostly in listen-only mode and with little time to 
spare...

Dave Hansen napsal(a):
 > Ooh, I forgot about josm-ng.  That one looks very usable.  If mine
 > doesn't pan out, I'll certainly look at that one.

Well, the QTree in josm-ng is similar to yours in the way it distributes 
the content, though I did pay quite some attention to memory usage 
(hint: e.g. LinkedList is not the collection you'd like to use unless 
you have specific reason to) and support also 2d entities (node is 
zero-d). The problem with importing it directly into josm is that it 
uses (in -ng) the projected (and integer) coordinates. While it doesn't 
care whether the coordinates are projected or not, it hugely benefit 
from their signed integer nature.

Dave Hansen napsal(a):
 > QuadBuckets also happen to implement Collection<Node>.  So, we can
 > just plug it in for Collection like in the DataSet class.

I have not looked at the josm codebase for a while, but as long as
Node has publicly mutable coordinates, you can't honestly do it.
If anything moves a node, it has no way to automatically jump into the 
new bucket. And it makes no sense to try patching all the places which 
can move a node (MoveCommand is not the only one).

Regards,
   Petr Nejedlý




More information about the josm-dev mailing list