Rick, Which version of PostgreSQL were you running when you loaded this data? I think I may have ran into similar issues with an earlier point version of 8.3 The problem was that the stored BBOx was wrong. To verify if this is the issue, do the following SELECT ST_Box2D(the_geom) As the_wrongbbox, ST_Box2D(ST_AsBinary(the_geom)) As the_rightbbox, ST_Box3D(the_geom) As the_right3dBox FROM counties WHERE NOT (ST_Box2D(the_geom) = ST_Box2D(ST_AsBinary(the_geom)) ) If you get answers to the above, then that is the culprit
I think to fix I ended up doing a ST_DropBBOx(the_geom) on all those that didn't match the calculated and then ST_AddBBOX(the_geom) on all those where ST_HasBBOX(the_geom) = false So UPDATE counties SET the_geom = ST_DropBBOX(the_geom) WHERE NOT (ST_Box2D(the_geom) = ST_Box2D(ST_AsBinary(the_geom)) ); UPDATe countries SET the_geom = ST_AddBBOX(the_geom) WHERE ST_HasBBOx(the_geom) = false; Hope that helps, Regina _____ From: [email protected] [mailto:[email protected]] On Behalf Of Robert Hollingsworth Sent: Wednesday, March 11, 2009 4:55 PM To: postgis-users Subject: [postgis-users] index-based inconsistencies using postgresql 8.3.4 using postgis 1.3.3 using geos 3.0.0 using proj 4.6.1 I'm encountering a couple of oddities which I'm pretty sure are related. I have US Census Congressional districts modeled in PostGIS. I've got a simple php program that uses ST_Within( ) to check a lat,lon against the congressional district polygons. A small number of the districts are causing the query to return zero records incorrectly. I've also got a simple php-mapscript with a LAYER to simply display all of these congressional districts. When zoomed out around 1:400k and further out, these peculiar districts appear along side their neighbors. When I zoom in closer, these same districts stop appearing. I'm pretty sure this is a problem with the spatial indexes, which were created by shp2pgsql, because I converted the search program from ST_Within( ) to _ST_Within( ), which is advertised as skipping the indexing. _ST_Within( ) is a bit slower, but finds these districts ok. I've run VACUUM ANALYZE on the table, but this hasn't changed anything. I haven't dug into the mapserver pg driver to see if there is any way for me to manipulate the generated query into skipping indexes. I haven't yet dug into the records further to see if they have pathological bboxes or similar. There are no holes in these polygons. Anyone have any ideas on this? thanks, Robert H.
_______________________________________________ postgis-users mailing list [email protected] http://postgis.refractions.net/mailman/listinfo/postgis-users
