[postgis-users] SRID, misc queries
Brian Hamlin
maplabs at light42.com
Sat Oct 13 11:50:22 PDT 2007
Hella All-
I am new to PostGIS, and have slowly been making some headway...
I have created a database that contains two tables, a set of Points, and
a set of MULTIPOLYGON. Following the directions, and with some false
starts,
I have a geometry_columns table with two entries, one for a field in
each
table, both set to SRID 4326.
It is confusing to me when the geomtery_columns table is automatically
referenced, and when it is not. (I have had endless 'Operation on mixed
SRID geometries' errors) For example, this query works
select count(*) from just_ca where st_within( 'POINT(-122.27 37.87)',
just_ca.the_geom)
however, this one does not
select count(*) from gectable where
st_within( geom_pts2,
'POLYGON(( 39.0 -122.0, 38.0 -122.0, 38.0 -121.0, 39.0 -121.0, 39.0
-122.0))' )
... mixed SRID error
So, I tried casts, then SetSRID. (the syntax of casts is not
well-explained as far as I
have found, nor the types, for example ::BOX3D or BOX2D)
So here is a current query
SELECT gectable.name
FROM just_ca, gectable
WHERE
just_ca.city = 'Berkeley'
AND
st_within( SetSRID(gectable.geom_pts2,4326),
SetSRID( just_ca.the_geom,4326))
this takes 10 seconds on 110,000 points (and 12 polys in city Berkeley).
(I added a GIST index on geom_pts2 and the_geom, and the query took
the same amount of time as without indexes. just_ca.city = 'Berkeley'
alone
takes just 4ms)
The following query gets a mixed SRID error
SELECT gectable.name
FROM just_ca, gectable
WHERE
just_ca.city = 'Berkeley'
AND
st_within( gectable.geom_pts2, just_ca.the_geom )
why??
More information about the postgis-users
mailing list