[postgis-users] SOLVED: Combining / agglomerating / clustering numbers of adjacent polygons

nicklas.aven at jordogskog.no nicklas.aven at jordogskog.no
Thu Nov 5 04:49:12 PST 2009


I don't know if I have misunderstood this, but to me it looks like what you are doing is:

create table agglom_areas as
select (st_dump(st_union(the_geom))).geom as split_geom
from     grid_squares;

with cascaded union (geos 3.1 or higher) this should befast as I understand it.

But if I have missunderstood everything, just ignore it :-)

/Nicklas

2009-11-05 Derek Jones  wrote:

Dear Leo
>
>Hey thanks!
>
>Since these and other steps can run for several tens of minutes or even 
>hours because of the data densities, I didn't notice because I left them 
>each cooking and did something else instead, but I appreciate any 
>improvements here because I may well be running the same kind of query 
>elsewhere also.
>
>Occam's Razor and all that ;-)
>
>Kind regards
>
>Derek.
>
>Paragon Corporation wrote:
>>  
>> Derek,
>> 
>> FWIW -- this is a bit faster and shorter to write than your last step.  You
>> probably won't notice the difference until you start dealing with huge
>> geometry collections.
>> 
>> --REVISED LAST STEP
>> create table
>>    agglom_areas
>> as
>>    SELECT (ST_Dump(the_geom)).geom As split_geom
>> 	FROM temp_f;
>>     
>> 
>> 
>> ---YOUR LAST STEP--
>> 
>> create table
>>    agglom_areas
>> as
>>    select
>>      st_GeometryN
>>      (
>>        the_geom,
>>        generate_series(1,st_NumGeometries(the_geom))
>>      ) as split_geom
>>    from
>>      temp_f;
>> 
>> 
>> Leo
>> -----Original Message-----
>> From: postgis-users-bounces at postgis.refractions.net
>> [mailto:postgis-users-bounces at postgis.refractions.net] On Behalf Of Derek
>> Jones
>> Sent: Wednesday, November 04, 2009 10:26 PM
>> Cc: PostGIS Users Discussion
>> Subject: [postgis-users] SOLVED: Combining / agglomerating / clustering
>> numbers of adjacent polygons
>> 
>> Dear all,
>> 
>> I solved the problem with just a handful of lines of SQL in the end... :-P
>> 
>> Kinda roundabout thinking but it worked. Here's the solution:
>> 
>> grid_squares contains my reduced grid set from the complete grid overlay
>> from a previous select - it's the density table. I also previously removed
>> singletons from it with a check for any grid entries that had 0 touching
>> entities.
>> 
>> # Break out the multipolygon grids into polygons
>> 
>> create table
>>    temp_e
>> as
>>    select
>>      st_GeometryN
>>      (
>>        the_geom,
>>        generate_series(1,st_NumGeometries(the_geom))
>>      ) as split_geom
>>    from
>>      grid_squares;
>> 
>> # Break out the polygons into linestrings and agglomerate into areas #
>> Becomes one big area as a multipolygon so ...
>> 
>> create table
>>    temp_f
>> as
>>    select
>>      st_buildarea
>>      (
>>        st_collect
>>        (
>>          st_ExteriorRing(split_geom)
>>        )
>>      ) as the_geom
>>    from
>>      temp_e;
>> 
>> # ... afterwards, break out into polygons again # each of which is the
>> clustered set of # polygons comprising the outer boundary agglomeration # of
>> the original grid areas.
>> 
>> create table
>>    agglom_areas
>> as
>>    select
>>      st_GeometryN
>>      (
>>        the_geom,
>>        generate_series(1,st_NumGeometries(the_geom))
>>      ) as split_geom
>>    from
>>      temp_f;
>> 
>> 
>> 
>> I can probably with a little work reduce the steps but I don't have a need
>> to at this point.
>> 
>> This does exactly what I wanted - hope it's useful perhaps to others in the
>> same jam. Appreciate the help given in any event.
>> 
>> Now I can use the generated areas to get me some centroids and then both
>> intersect and then cluster the "other" data set I have which is 10s of 1000s
>> of points and different to this one but related to it.
>> 
>> Thank you again. Always useful to bounce these kinds of things around...
>> 
>> Kind regards
>> 
>> Derek Jones
>> _______________________________________________
>> postgis-users mailing list
>> postgis-users at postgis.refractions.net
>> http://postgis.refractions.net/mailman/listinfo/postgis-users
>> 
>> 
>> 
>> _______________________________________________
>> postgis-users mailing list
>> postgis-users at postgis.refractions.net
>> http://postgis.refractions.net/mailman/listinfo/postgis-users
>> 
>_______________________________________________
>postgis-users mailing list
>postgis-users at postgis.refractions.net
>http://postgis.refractions.net/mailman/listinfo/postgis-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20091105/209037ea/attachment.html>


More information about the postgis-users mailing list