<div dir="ltr"><div class="gmail_signature" data-smartmail="gmail_signature">I have a table of points on a regular hexagon grid spacing.  I need to create an edge table between every point and the points in its adjacent hexagon. </div><div class="gmail_signature" data-smartmail="gmail_signature">Say the table is points with an id field and point geom.  I am trying :</div><div class="gmail_signature" data-smartmail="gmail_signature"><br></div><div class="gmail_signature" data-smartmail="gmail_signature">WITH</div><div class="gmail_signature" data-smartmail="gmail_signature">p1 as (select * from points),</div><div class="gmail_signature" data-smartmail="gmail_signature">p2 as (select * from points)</div><div class="gmail_signature" data-smartmail="gmail_signature">SELECT </div><div class="gmail_signature" data-smartmail="gmail_signature"><a href="http://p1.id">p1.id</a> as src,<br><a href="http://p2.id">p2.id</a> as dest,<br></div><div class="gmail_signature" data-smartmail="gmail_signature">st_makeline(p1.geom,p2.geom) as geom,<br></div><div class="gmail_signature" data-smartmail="gmail_signature">FROM p1, p2</div><div class="gmail_signature" data-smartmail="gmail_signature">WHERE <a href="http://p1.id">p1.id</a> != <a href="http://p2.id">p2.id</a>  -- don't link a point to itself<br>and  ST_dwithin (p1.geom,p2.geom, 16 * 1.74 )  -- only link to nearest 6 points (spacing 16)<br>       and p1.geom > p2.geom  -- only link in one direction<br></div><div class="gmail_signature" data-smartmail="gmail_signature"><br></div><div class="gmail_signature" data-smartmail="gmail_signature">This works fine but gets really slow with lots of points.  Is there a better way of attacking this problem?</div><div class="gmail_signature" data-smartmail="gmail_signature"><br></div><div class="gmail_signature" data-smartmail="gmail_signature">Thanks</div></div>