[postgis-users] How to extract multiple convex hulls from a query?

Stephen Woodbridge woodbri at swoodbridge.com
Wed Aug 24 13:41:04 PDT 2011


Thanks, This is what I ended up with:

select b.slice, st_convexhull(st_collect(a.the_geom)) as hull from
      (SELECT * FROM function_returning_points() ) as a,
      (select generate_series(500, 1500, 500) as slice) as b
where a.dist <= b.slice group by b.slice order by b.slice;

This is somewhat simplified from the actual query but I think it is 
doing what I want.

-Steve

On 8/24/2011 3:51 PM, Robert Hollingsworth wrote:
> Steve,
> I think I've done something similar with ST_ConvexHull( ), where I had a
> data set full of LINESTRING geometries and wanted to ConvexHull them
> into as many separate polygons as there are unique sets of values for
> two or three attributes stored on the objects. paraphrased below to
> obscure original detail:
>
> SELECT
> ST_ConvexHull ( ST_Collect ( the_geom ) ) AS poly,
> table1.attr1,
> table1.attr2,
> table1.attr3
> FROM
> table1,
> table2
> WHERE
> some condition AND
> some other condition AND
> GROUP BY
> table1.attr1,
> table1.attr2,
> table1.attr3;
>
> I think in your case if you could do something like this or similar?
> select
> func_returning_dist_as_one_of_5_ranges(the_distance) AS range,
> ST_ConvexHull ( ST_Collect ( the_geom ) ) AS poly
> from table
> where....
> GROUP BY range;
>
>
>     Hi all,
>
>     I am trying to construct multiple convex hulls from a series of point
>     where I have an attribute dist for each point.
>
>     What I want is to generate convex hulls for expanding rings where dist
>     <= slice up to some max_dist.
>
>     So if slice=100 and max_dist=500, then each hull would be:
>
>     1. all points <= 100
>     2. all points <= 200
>     3. all points <= 300
>     4. all points <= 400
>     5. all points <= 500
>
>     So I have a procedure that generates the points and is fairly costly to
>     run. I would like to run it once and extract all the hulls in a single
>     pass if possible.
>
>     I'm currently running postgresql 8.3 and "POSTGIS="1.5.1"
>     GEOS="3.2.0-CAPI-1.6.0" PROJ="Rel. 4.6.1, 21 August 2008"
>     LIBXML="2.6.32" USE_STATS"
>
>     Any thoughts or snippets would be appreciated.
>
>     Thanks,
>     -Steve
>
>
>
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users




More information about the postgis-users mailing list