[postgis-users] Finding if a polygons is fully covered by others

Nicolas Gillet - MARKET-IP nicolas.gillet at market-ip.com
Mon Jan 18 01:23:16 PST 2010


Hello,

 

I am looking for some help in optimizing a query.

 

I have a table with bounding boxes and sometimes I need to find if a new
given polygon can be fully covered by existing bounding boxes of my table.

 

Right now I can find it out by summing the areas of intersections between my
polygon and those in my table and comparing this computed area with my
polygon area.

 

Here's the query :

 

SELECT ST_area(ST_GeometryFromText('POLYGON((-1 0, -1 1, 1 1, 1 0, -1 0))',
4326) ) -

(SELECT SUM(st_area(st_intersection(the_geom,
ST_GeometryFromText('POLYGON((-1 0, -1 1, 1 1, 1 0, -1 0))', 4326) ) ))

                FROM tests WHERE the_geom &&
ST_GeometryFromText('POLYGON((-1 0, -1 1, 1 1, 1 0, -1 0))', 4326) )

 

=> if query returns 0 then my polygon can be fully covered if != 0 then it
can't.

 

But I was wondering if there couldn't be an easier way to do this.

 

Thank you.

 

Nicolas.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20100118/c0ebef85/attachment.html>


More information about the postgis-users mailing list