<div style>Estou a tentar usar a nova função &lt;-&gt;)  (<a href="http://postgis.refractions.net/docs/geometry_distance_centroid.html" target="_blank" style="background-color:transparent;color:rgb(17,85,204)">Geometry Distance Centroid</a>) para em cada registo da minha tabela (cosn1) calcular a distância ao poligono mais próximo com a mesma classe.</div>
<div style><br></div><div style>Tentei o seguinte código SQL:</div><div style><br></div><div style><div>WITH index_query AS (</div><div>  SELECT g1.gid As ref_gid, ST_Distance(g1.the_geom,g2.the_geom) As ENN    </div><div>
<span style="white-space:pre-wrap">                </span>FROM &quot;cosn1&quot; As g1, &quot;cosn1&quot; As g2   </div><div><span style="white-space:pre-wrap">                </span>WHERE g1.gid &lt;&gt; g2.gid AND g1.class = g2.class</div><div><span style="white-space:pre-wrap">                </span>ORDER BY g1.gid, g1.the_geom &lt;-&gt; g2.the_geom) </div>
<div>  SELECT DISTINCT ON (ref_gid) ref_gid, ENN </div><div>  <span style="white-space:pre-wrap">        </span>FROM index_query</div><div>  ORDER BY ref_gid, ENN;</div></div><div style><br></div><div style>Mas depois apercebi-me da seguinte nota:</div>
<div style><br></div><div style><br></div><div style><span style="color:rgb(46,46,46);font-family:&#39;Lucida Grande&#39;,Verdana,Geneva,Arial,Helvetica,sans-serif;text-align:-webkit-left;background-color:rgb(228,247,221)">Note: Index only kicks in if one of the geometries is a constant (not in a subquery/cte). e.g. &#39;SRID=3005;POINT(1011102 450541)&#39;::geometry instead of a.geom</span></div>
<div style><span style="color:rgb(46,46,46);font-family:&#39;Lucida Grande&#39;,Verdana,Geneva,Arial,Helvetica,sans-serif;text-align:-webkit-left;background-color:rgb(228,247,221)"><br></span></div><div style>O que quer dizer que o Indice Espacial não é utilizado, e que a consulta demora praticamente o mesmo tempo que a versão para postgis 1.5:</div>
<div style><br></div><div style><div>SELECT DISTINCT ON(g1.gid)  g1.gid As ref_gid, ST_Distance(g1.the_geom,g2.the_geom) As ENN    </div><div><span style="white-space:pre-wrap">                </span>FROM &quot;cosn1&quot; As g1, &quot;cosn1&quot; As g2   </div>
<div><span style="white-space:pre-wrap">                </span>WHERE g1.gid &lt;&gt; g2.gid AND g1.class = g2.class</div><div><span style="white-space:pre-wrap">                </span>ORDER BY g1.gid, ST_Distance(g1.the_geom,g2.the_geom)</div></div>
<div style><br></div><div style>Alguém tem alguma sugestão para que possa contornar esta limitação da função?</div><div style><br></div><div style>Obrigado,</div><div style><br></div><div style>Alexandre Neto</div>