[postgis-users] Help?: Constructing a geometry collection

John Poole jlpoole56 at gmail.com
Mon Sep 27 08:05:07 PDT 2010


I've been grappling with the following concept and reviewing the
PostGIS 1.5.1 Manual and cannot seem to come up with a working
solution to achieve this simple goal:

GOAL: I want to collect various polygons and then determine the
bounding box or extent of the collection in order to display an
appropriately zoomed image on MapServer

Here's the SQL I'm starting with:

   select the_geom from parcels_public where gid > 27611 and gid < 28000
returns
  388 rows of geometries.

How do I create a geometry collection from a set of rows?  I've been
looking at ST_Collect and trying:

* * * warning below is bad code * * *
Select ST_Collect((select the_geom from parcels_public where gid >
27611 and gid < 28000)) as myCollectionObject

which produces:
   ERROR:  more than one row returned by a subquery used as an expression

   ********** Error **********

   ERROR: more than one row returned by a subquery used as an expression
   SQL state: 21000

* * *

Referencing the thread in the documentation,
http://postgis.refractions.net/pipermail/postgis-users/2008-June/020331.html
,
I tried this

* * * warning below is bad code * * *
SELECT ST_Multi(ST_Collect(f.the_geom)) as singlegeom
	FROM (
		SELECT (
			select the_geom
			from parcels_public
			where gid > 27611 and gid < 27640
		)
	) As f
which produces:
  ERROR:  column f.the_geom does not exist
  LINE 1: SELECT ST_Multi(ST_Collect(f.the_geom)) as singlegeom
                                     ^

  ********** Error **********

  ERROR: column f.the_geom does not exist
  SQL state: 42703
  Character: 28
* * *

I know this can be done, but I seemed to be missing something very
basic both in creating subqueries and in the documentation and I'm
confusing structure, e.g. rows returned vs. a geometry collection.
Maybe my problem is that I do not know how to construct a geometry
collection from a given set of rows?

The end goal is to have the coordinates of the collection so I can use
them as an extent to send to MapServer to create an image that is
zoomed into the minimum size that displays all members of the
collection.  I anticipate using ST_Extent(myCollectionObject) once I'm
able to create the collection object.

-- 
John L. Poole

P.O. Box 6566
Napa, CA 94581-6566
707-812-1323

jlpoole56 at gmail.com



More information about the postgis-users mailing list