Hi Martin,

The way I optimized the union plugin in OpenJUMP is not as clever as 
using a quadtree, but it is equivalent in the ideal case of regularly 
distributed features.
I just grouped features in a regular grid which size is computed based 
on the featurecollection envelope and size (number of features). This is 
an iterative process : when I finished the union in all grid cells, I do 
it again with a larger grid until I have no more geometry to union. I 
called it progressive union.
Performance improvement may be more than 10 x, and for large datasets, 
it simpley make it possible to union the layer.
I did not look for a better hack at the plugin level, as I thought that 
better performances can be obtained from JTS itself. But I'm not sure it 
is possible : what about PreparedGeometry ?

Regards

Michael

Martin Davis a écrit :

>Not sure I do see...  Either way, if you are doing repeated calls to 
>union(), then this is going to be slow.  But maybe you mean that you are 
>*combining* the input geometries in to a single multi-geometry, and then 
>buffering that once?  That should be faster, then.  Although... for 
>complex inputs, I suppose this could actually end up being slower than 
>doing the buffers individually, and then using a cascading scheme to 
>union them. 
>
>Sounds like Stefan has a scheme to do this, anyway.  But it would be 
>nice to get it into JTS.
>
>Larry Becker wrote:
>  
>
>>Hi Martin,
>>
>>  The union operation is implemented by buffering the union of the
>>input, rather than the union of the input buffered, if you see the
>>distinction.  I was hoping JTS had already optimized this, but from
>>what you are saying, I would guess not.
>>
>>Larry
>>
>>On 8/31/07, Martin Davis <[EMAIL PROTECTED]> wrote:
>>  
>>    
>>
>>>Cool...
>>>
>>>I think that one way around the "slow union" problem is to develop a
>>>"Cascading Union" function.  This will build up a union of multiple
>>>geometries by forming them into a tree, and recursively unioning the
>>>branches of the tree from the leaves to the root.    In theory this
>>>should provide a fairly optimal balance between performance and memory use.
>>>
>>>A nice way to form the tree would be to add the input geometries to a
>>>JTS Quadtree or STRtree and then traverse the tree in depth-first
>>>order.  Unfortunately currently the implementations don't support the
>>>ability to traverse the tree in any order - this wouldn't be too hard to
>>>add, though.
>>>
>>>Thoughts?  Anyone keen on trying this out?
>>>
>>>Martin
>>>
>>>
>>>
>>>Larry Becker wrote:
>>>    
>>>      
>>>
>>>>I have committed the improved buffer plugin.  Three sample screens are
>>>>attached in english, french, and german.    It now supports buffering
>>>>the selection. It provides a convenience union option.  The sidebar
>>>>picture now previews the current options.  It copies attributes by
>>>>default, even from selections on multiple layers, but this can be
>>>>turned off.  It supports setting the number of segments in a quarter
>>>>circle.
>>>>
>>>>Be careful with the union operation.  With large selections, it can
>>>>take a long time.  For instance using Uwe's GeoCity project, I tried
>>>>to buffer everything by 1000 meters.  Without union it completed in
>>>>about 20 seconds, and with union I finally killed it after 5 minutes.
>>>>
>>>>regards,
>>>>Larry Becker
>>>>
>>>>
>>>>------------------------------------------------------------------------
>>>>
>>>>
>>>>------------------------------------------------------------------------
>>>>
>>>>
>>>>------------------------------------------------------------------------
>>>>
>>>>------------------------------------------------------------------------
>>>>
>>>>-------------------------------------------------------------------------
>>>>This SF.net email is sponsored by: Splunk Inc.
>>>>Still grepping through log files to find problems?  Stop.
>>>>Now Search log events and configuration files using AJAX and a browser.
>>>>Download your FREE copy of Splunk now >>  http://get.splunk.com/
>>>>------------------------------------------------------------------------
>>>>
>>>>_______________________________________________
>>>>Jump-pilot-devel mailing list
>>>>Jump-pilot-devel@lists.sourceforge.net
>>>>https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>>>>
>>>>      
>>>>        
>>>>
>>>--
>>>Martin Davis
>>>Senior Technical Architect
>>>Refractions Research, Inc.
>>>(250) 383-3022
>>>
>>>
>>>-------------------------------------------------------------------------
>>>This SF.net email is sponsored by: Splunk Inc.
>>>Still grepping through log files to find problems?  Stop.
>>>Now Search log events and configuration files using AJAX and a browser.
>>>Download your FREE copy of Splunk now >>  http://get.splunk.com/
>>>_______________________________________________
>>>Jump-pilot-devel mailing list
>>>Jump-pilot-devel@lists.sourceforge.net
>>>https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>>>
>>>    
>>>      
>>>
>>  
>>    
>>
>
>  
>


-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to