<div dir="ltr"><div><div><div><div><div><div><div><div><div><div><div><div><div>Bonjour,<br></div>on aurait gagné du temps avec cette info dès le début.<br></div>Ne cherchez pas plus loin l'erreur est là.<br><br></div>
D'abord la force d'une base de donnée réside dans les indexes, sinon pas d'accélération<br></div>Si vous avez un seul polygone, l'index ne sert à rien. Pour qu'il soit utile il vous faudrait par exemple les départements français (ce qui vous ferait une table avec une 100aine de polygone).<br>
</div>Ces informations sont gratuites et de qualité :<a href="http://professionnels.ign.fr/geofla">http://professionnels.ign.fr/geofla</a><br><br></div>Ensuite je suis prêt à parier que votre unique géométrie (frontière de la France) est extrêmement complexe (vous pouvez voir le poids occupé sur le disque dans pgadmin dans l'onglet statistique).<br>
</div>Pour s'en convaincre , voici qui devrait vous donner le nombre de points qui compose votre polygone de frontière de France.<br></div>SELECT count(*)<br>FROM (SELECT ST_DumpPoints(part_1.geom) FROM fra_adm0 AS part_1) As foo<br>
</div><div><br>De plus votre polygone est en fait peut etre un multipolygone : essayé la commande :<br></div><div>SELECT GeometryType(part_1.geom) <br>FROM fra_adm0 AS part_1<br></div><div>Si c'est unmultipolygone, vous pouvez le casser en plusieurs morceaux pour accélerer les calculs.<br>
</div><div><br></div><div><br></div>La solution est donc très simple : utiliser les départements, ou simplifier ce gros fichier sur toute la France.<br></div>Soit avec ST_Simplify <a href="http://postgis.net/docs/ST_Simplify.html">http://postgis.net/docs/ST_Simplify.html</a><br>
</div>Soit avec la fonction buffer, en faisant se succéder une buffer de +X km avec un buffer de -X km.<br><br></div>Quand vous avez des doutes sur une fonction, regardez la doc : <br><a href="http://postgis.net/docs">http://postgis.net/docs</a><br>
</div>En l'occurence ST_Intersects(A,B) renvoie VRAIS si A et B ne sont pas totalement disjoint, et FAUX sinon<br><div><div><div><div><div><div><div><div><br></div><div>La façon dont on l'utilise dans la requête permet de ne garder que les lignes qui vérifient cette propriété.<br>
<br></div><div>Enfin 2 millions de points est un tout petit fichier, en particulier pour des points lidar.<br></div><div>Pour vous donner un ordre de grandeur, sur le genre de requête que vous faire, avec 600 millions de points correctement organisé, on trouve un résultat en 15 ms.<br>
<br></div><div>Si vous essayez de faire un MNT, vous pouvez simplement en récupérer tout fait : <a href="http://makosol.free.fr/page10.html">http://makosol.free.fr/page10.html</a><br><br></div><div>En conclusion,<br></div>
<div>voici la requête a utiliser :<br>CREATE TABLE example_intersections_a AS <br><br>SELECT  part_2.geom<br><div class="im">FROM fra_adm0 AS part_1,france_merge_pts1 AS part_2 <br></div>WHERE ST_Intersects(part_1.geom, part_2.geom)=TRUE; <br>
<br><br></div><div>Enfin il existe un très bon livre sur l'utilisation de PostGIS qui vous donnera les bases : <br></div><div>Il s'agit de PostGIS in Action.<br><br></div><div>Bien Cordialement,<br></div><div>Rémi-C<br>
</div><div><br></div></div></div></div></div></div></div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">Le 2 décembre 2013 20:07, laurent <span dir="ltr"><<a href="mailto:lcelati@latitude-geosystems.com" target="_blank">lcelati@latitude-geosystems.com</a>></span> a écrit :<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Bonjour,<br>
<br>
Merci beaucoup pour votre réponse. Pour etre plus clair : J'ai un layer<br>
polygonal représentant les limites admin nationales de la France. Il s'agit<br>
d'une seule entité. Et mon autre donnée est en effet un fichier de points<br>
LIDAR vraiment énorme (>re à 2 millions de points) distribués sur plusieurs<br>
pays. Et mon but est d'isoler dans une nouvelle table les points qui se<br>
trouvent sur le territoire francais (qui sont inclus dans mon polygone<br>
France et également ceux qui touchent le polygone).<br>
<br>
J'avais crû comprendre que la fonction ST_intersects ne ferait que renvoyer<br>
le nombre de points intersectant mon polygone. Moi je veux vraiment<br>
construire une nouvelle géométrie dans une nouvelle table. Et j'avais crû<br>
comprendre que la seule fonction faisant celà était ST_Intersectection. Mais<br>
j'ai peut etre mal compris...<br>
<br>
J'ai quitté le bureau tout à l'heure et ma requete était toujours en cours!<br>
Ce qui m'étonne dans ma requete c'est que j'ai renseigné en premier mon<br>
layer polygone puis mon layer points. Après reflexion il aurait été peut<br>
etre plus logique de renseigner en premeier mon layer points. Mais je ne<br>
sais meme pas si celà est important. J'ai un peu peut qu'au final je me<br>
retrouve avecc une nouvelle table avec des objets surfaciques et non<br>
ponctuels...<br>
<br>
Merci en tout cas pour tous vos conseils.<br>
<br>
<br>
<br>
<br>
<br>
--<br>
View this message in context: <a href="http://postgis.17.x6.nabble.com/ST-intersects-error-message-tp5005029p5005036.html" target="_blank">http://postgis.17.x6.nabble.com/ST-intersects-error-message-tp5005029p5005036.html</a><br>

<div class="HOEnZb"><div class="h5">Sent from the PostGIS - User mailing list archive at Nabble.com.<br>
_______________________________________________<br>
postgis-users mailing list<br>
<a href="mailto:postgis-users@lists.osgeo.org">postgis-users@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users" target="_blank">http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users</a></div></div></blockquote></div><br></div>