<div dir="ltr"><div><div><div>Oups j'ai oublié "augmenter la puissance de calcul"<br></div>Il s'agit tout simplement de mieux ocnfigurer ton serveur postgres pour lui allouer plus de mémoire, car les réglages par défaut sont très très économes :<br>
</div>Il s'agit du fichier postgres.conf<br><a href="http://www.postgresql.org/docs/9.3/static/runtime-config-resource.html">http://www.postgresql.org/docs/9.3/static/runtime-config-resource.html</a><br><br></div>Rémi-C<br>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">Le 2 décembre 2013 19:33, Rémi Cura <span dir="ltr"><<a href="mailto:remi.cura@gmail.com" target="_blank">remi.cura@gmail.com</a>></span> a écrit :<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><br>Salut Laurent,<br></div>on peut imaginer plusieurs approches pour ton problème, en fonction de la taille de tes données, de la précision voulue, etc.<br>
<br></div><div>En résumé tu as un fichier de polygons (combien?) qui représentent un maillage de la France (département, IRIS, région?).<br>
</div><div>Et un fichier de point Lidar (2 millions) répartis sur toute la France et en dehors.<br><br></div><div>Tu as 4 options :<br></div><div>_améliorer ta requete<br></div><div>_réduire le nombre de polygon <br>_ réduire le nombre de points.<br>

</div><div>_augmenter la puissance de calcul<br></div><div><br>1.)améliorer la requete : <br>C'est assez simple : en fait tu veux les points qui sont dans les polygones, tu n'as donc pas besoin de calculer une intersection mais juste un intersect.<br>

<br>CREATE TABLE example_intersections_a AS <br>SELECT  part_2.geom<div class="im"><br>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></div><div>2.) réduire le nombre de polygones<br>

</div><div>fusionne les polygones régulièrement en te basant sur leur centroides: <br></div><div>Par exemple, tu regroupes les polygones dont les centroids sont à 10 km les uns des autres :<br><br></div><div>CREATE TABLE m_pol AS <br>

</div><div style="margin-left:40px">WITH centroid AS (<br></div><div style="margin-left:40px">SELECT ST_Centroid(geom), geom<br>FROM fra_adm0<br>)<br></div><div style="margin-left:40px">SELECT row_number() over() AS r_id, ST_Multi(geom) AS geom<br>

FROM centroid<br></div><div style="margin-left:40px">GROUP BY round(ST_X(centroid)/10000.0)  , round(ST_Y(centroid)/10000.0)<br><br></div><div><div style="margin-left:40px">variante de la meme requete : <br></div><div style="margin-left:40px">

WITH centroid AS (<br></div><div style="margin-left:40px">SELECT ST_Centroid(geom), geom<br>FROM fra_adm0<br>)<br></div><div style="margin-left:40px">SELECT row_number() over() AS r_id,  ST_Multi(geom) AS geom<br>FROM centroid<br>

</div><div style="margin-left:40px">GROUP BY ST_SnapToGrid(centroid, 10000.0)</div><br></div><div>Tu crées un index sur la colonne unioned_polygon et tu utilises cette table plutôt que l'autre dans ta requête d'intersection entre les points et les polygones<br>

</div><div>CREATE INDEX ...<br><br>CREATE TABLE example_intersections_a AS <br>SELECT  part_2.geom<br>FROM m_pol AS part_1,france_merge_pts1 AS part_2 <br>WHERE ST_Intersects(part_1.geom, part_2.geom)=TRUE;<br><br></div>
<div>
<br></div><div>3.) Réduire le nombre de points,<br></div><div>C'est le même principe, on va réunir les points qui sont assez proches pour en diminuer le nombre.<br>A la place des points on aura donc des multipoints.<br>

</div><div>Note qu'après certains multipoints contiendront des points en trop, il faudra donc faire un passage avec st_intersection sur le resultat,mais on ne fera se passe que sur les multipoints qui sont sur les frontières.<br>

<br></div><div><div>CREATE TABLE g_point AS <br><div style="margin-left:40px">SELECT row_number() over() AS r_id,  ST_Multi(geom) AS geom<br>FROM france_merge_pts1</div><div style="margin-left:40px">GROUP BY ST_SnapToGrid(geom, 10000.0)<br>

<br></div>créer l'index sur la colonne geom<br></div><div>utiliser ces multipoints dans ta requête<br><br></div><div>fair est_intersection sur les multipoints qui sont sur les frontières de la France.<br></div><div><br>

</div><div>Bon courage, <br><br>Rémi-C<br></div><div><br></div><div><br></div></div><div><div class="h5"><div class="gmail_extra"><br><br><div class="gmail_quote">2013/12/2 laurent <span dir="ltr"><<a href="mailto:lcelati@latitude-geosystems.com" target="_blank">lcelati@latitude-geosystems.com</a>></span><br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">I imported my 2 layers into db thanks to postgis tools. An spatial index has<br>
been created after the loading automatically.<br>
Indeed, via my qgis DB manager, i can confirm the spatial index creation for<br>
my two tables...<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
--<br>
View this message in context: <a href="http://postgis.17.x6.nabble.com/ST-intersects-error-message-tp5005029p5005033.html" target="_blank">http://postgis.17.x6.nabble.com/ST-intersects-error-message-tp5005029p5005033.html</a><br>


<div><div>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" target="_blank">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><br>
</div></div></blockquote></div><br></div></div></div></div>
</blockquote></div><br></div>