Hi, Karsten.
One potential problem with merging all the buffers for a given value is
that you may wind up with a very large polygon that creates its own
handling issues.
If you only need this for analytical purposes, not for display, then it
might work better to aim for a middle ground. You could merge the
buffers in "clumps". To do this, you need to partition the buffers into
spatially-coherent groups. A simple way to do this is to create a grid
over the area (say based on the coordinate system you are using).
Create a reprsentative point for each buffer (e.g. the interior point or
centroid). The buffers can then be assigned to the grid cell their
point lies in. Then group the buffers by their grid cell, and union
each group.
Actually, if you want to carry on and create single polygons, then the
clumped buffer polygons give a better basis to work from (since they
should have many fewer points than the source polygons).
If there are still memory issues with the clumped unions, then you can
carry out this process in an iterated fashion, starting with small grid
cells and then repeating with a larger size. (At this point you will
have basically reimplemented the GEOS CascadedUnion algorithm. But
that's ok - performing the algorithm at the SQL level allows more
control over memory and processing usage).
I'd be interesting to hear if this approach works out.
Martin
On 6/28/2013 5:11 PM, karsten vennemann wrote:
I was wondering if there is a good (or best practice) approach on how
to merge geometry features that are touching or overlapping and have
one common value in one table field.
Here is what I was trying to do: given a large dataset such as the
(detailed NHD data layer) of rivers in California I created multiple
buffers and inserted the results into a new table with one geometry
column adding a score value to each of the same buffers distances
used. Thus the buffer polygon layer has a score with a value of
10,100,500 and 1000 m corresponding to the buffer distance used. Given
the approach I used to create the buffers those are often spatially
overlapping (because there was no merge operation of the buffers and
because the rivers are split along the flow line in multiple segments
by node in the source shape file). The resulting layer works ok for my
purposes (which is to retrieve information in which buffers a certain
location is intersecting it with the river buffer (results can be
10,100,500 and 1000 or no intersect with the buffers).
Now the layers is about 20 GB big disk size having a lot of
unnecessary geometries with are overlapping.
How can I go about merging all the existing geometries on this huge
data set into a result layer that has (optimally ) only 4 polygons
with the result scores to find my intersects.
When I tried some of my own approaches (e.g. using st_collect and
such to do this) so far whenever I started these sever resource
intensive operations soon these where aborted by the system because i
got some kind of out of memeonry errosr on my server (an ubuntu
achjien). Is there a good way to optimize this kind of query operation
without using 100% of my server ram so that I will not run out of
memory or resulting in a lengthy query that would be running for 6
weeks or so J?
Any query examples or general insight are greatly appreciated .
Cheers
Karsten
Karsten Vennemann
Terra GIS Ltd
2119 Boyer Ave E
Seattle, WA 98112
USA
tel ++ 206 905 1711
fax ++ 925 905 1711
_______________________________________________
postgis-users mailing list
[email protected]
http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
No virus found in this message.
Checked by AVG - www.avg.com <http://www.avg.com>
Version: 2013.0.2904 / Virus Database: 3184/6359 - Release Date: 05/26/13
Internal Virus Database is out of date.
_______________________________________________
postgis-users mailing list
[email protected]
http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users