Thanks for the feedback, Michael & Stefan. 

I agree, it would be nice to get this into JTS.  I don't know that it 
will be any more performant than your solutions, but at least the API 
will be standardized, and maybe a clever way to improve performance even 
further will show up down the road.  (Sleuthing out the Arc approach, 
maybe?).  I'll try and find some time to work on this.  I have an idea 
about enhancing the STRtree to provide a nested List mirroring the 
structure of the R-tree, which can then be iterated over to perform the 
union efficiently...

Martin

Michaël Michaud wrote:
> 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
>
>   

-- 
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

Reply via email to