<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=iso-8859-1" http-equiv=Content-Type>
<META name=GENERATOR content="MSHTML 8.00.6001.19412"></HEAD>
<BODY>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Arial><SPAN
class=382515410-17022014>Hello,</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Arial><SPAN
class=382515410-17022014></SPAN></FONT> </DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Arial><SPAN
class=382515410-17022014>Maybe the issue is the number of polygon which not
intersect between your tables : this query will return you all g1 polygon any
times it does not intersect one polygon in your g2 table (I don't know if I'm
clear enought, but a g1 polygon where g2 exists will also be returned since it
does not intersect others g2 polygon)</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Arial><SPAN
class=382515410-17022014></SPAN></FONT> </DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Arial><SPAN
class=382515410-17022014>I think you could try </SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Arial><SPAN
class=382515410-17022014></SPAN></FONT> </DIV>
<DIV dir=ltr align=left><FONT color=#0000ff><SPAN class=382515410-17022014><FONT
color=#000000>SELECT </FONT><FONT color=#000000>name, geom INTO
gadm2_level1_union_selected</FONT></SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT color=#0000ff><SPAN class=382515410-17022014><FONT
color=#000000>FROM </FONT></SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT color=#0000ff><SPAN class=382515410-17022014><FONT
color=#000000>(SELECT g1.*, g2.gid AS g2_gid FROM gadm2_level1_union
g1</FONT></SPAN></FONT></DIV>
<DIV dir=ltr align=left><SPAN class=382515410-17022014>LEFT JOIN
gadm2_level2_union g2 ON ST_Intersects(g1.centroid, g2.geom)) foo</SPAN></DIV>
<DIV dir=ltr align=left><FONT color=#0000ff><SPAN
class=382515410-17022014></SPAN></FONT><FONT color=#0000ff><SPAN
class=382515410-17022014><FONT color=#000000>WHERE g2_gid is
null</FONT></SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT color=#000000><SPAN
class=382515410-17022014></SPAN></FONT> </DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Arial><SPAN
class=382515410-17022014>Hugues.</SPAN></FONT></DIV>
<DIV align=left><FONT size=2 face=Arial></FONT> </DIV><BR>
<DIV dir=ltr lang=fr class=OutlookMessageHeader align=left>
<HR tabIndex=-1>
<FONT size=2 face=Tahoma><B>From:</B> postgis-users-bounces@lists.osgeo.org
[mailto:postgis-users-bounces@lists.osgeo.org] <B>On Behalf Of </B>Andreas Forø
Tollefsen<BR><B>Sent:</B> Monday, February 17, 2014 11:49 AM<BR><B>To:</B>
PostGIS Users Discussion<BR><B>Subject:</B> [postgis-users] Point, Polygon -
Does not intersects<BR></FONT><BR></DIV>
<DIV></DIV>
<DIV dir=ltr>Hi,
<DIV><BR></DIV>
<DIV>I am running the current setup:</DIV>
<DIV> "POSTGIS="2.0.2 r10789" GEOS="3.4.0dev-CAPI-1.8.0" PROJ="Rel. 4.7.1,
23 September 2009" GDAL="GDAL 1.9.0, released 2011/12/29" LIBXML="2.7.8" (core
procs from "2.0.1 r9979" need upgrade) RASTER (raster procs from "2.0.1 r9979"
need upgrade)"</DIV>
<DIV><BR></DIV>
<DIV>I have two tables with geometries. Both include polygons representing
administrative units. One at the first level and one at the second level.</DIV>
<DIV>I want a table that includes all the second level polygons where available,
and where not available I want the first level polygons.</DIV>
<DIV><BR></DIV>
<DIV>To find the level 1 polygons for filling the gaps where level 2 is N/A, I
thought about finding where the centroid of level one polygons does not
intersects with the polygons for level 2.</DIV>
<DIV><BR></DIV>
<DIV>Hence, I tried:</DIV>
<DIV>
<DIV><BR></DIV>
<DIV>SELECT <A href="http://g1.name">g1.name</A>, g1.geom INTO
gadm2_level1_union_selected FROM gadm2_level1_union g1, gadm2_level2_union g2
WHERE ST_Intersects(g1.centroid, g2.geom)=FALSE;</DIV>
<DIV><FONT color=#0000ff size=2 face=Arial></FONT><BR></DIV>
<DIV>I also tried the ST_Disjoint(g1.centroid, g2.geom).</DIV>
<DIV><BR></DIV>
<DIV>My problem is that this is running for ages without finishing. This should
be such a simple query, but I have used half of the day running it. If I take
the two geometries into PostGIS and run a spatial query to find the points from
level 1 not intersecting with polygons of level 2, it takes 15 seconds.</DIV>
<DIV><BR></DIV>
<DIV>What could be the issue with my query?</DIV>
<DIV><BR></DIV>
<DIV>Thanks!</DIV>
<DIV>Andreas</DIV>
<DIV><BR></DIV></DIV></DIV></BODY></HTML>