[postgis-users] ST_intersects : error message

Rémi Cura remi.cura at gmail.com
Tue Dec 3 00:07:02 PST 2013


Bonjour,
on aurait gagné du temps avec cette info dès le début.
Ne cherchez pas plus loin l'erreur est là.

D'abord la force d'une base de donnée réside dans les indexes, sinon pas
d'accélération
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).
Ces informations sont gratuites et de qualité :
http://professionnels.ign.fr/geofla

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).
Pour s'en convaincre , voici qui devrait vous donner le nombre de points
qui compose votre polygone de frontière de France.
SELECT count(*)
FROM (SELECT ST_DumpPoints(part_1.geom) FROM fra_adm0 AS part_1) As foo

De plus votre polygone est en fait peut etre un multipolygone : essayé la
commande :
SELECT GeometryType(part_1.geom)
FROM fra_adm0 AS part_1
Si c'est unmultipolygone, vous pouvez le casser en plusieurs morceaux pour
accélerer les calculs.


La solution est donc très simple : utiliser les départements, ou simplifier
ce gros fichier sur toute la France.
Soit avec ST_Simplify http://postgis.net/docs/ST_Simplify.html
Soit avec la fonction buffer, en faisant se succéder une buffer de +X km
avec un buffer de -X km.

Quand vous avez des doutes sur une fonction, regardez la doc :
http://postgis.net/docs
En l'occurence ST_Intersects(A,B) renvoie VRAIS si A et B ne sont pas
totalement disjoint, et FAUX sinon

La façon dont on l'utilise dans la requête permet de ne garder que les
lignes qui vérifient cette propriété.

Enfin 2 millions de points est un tout petit fichier, en particulier pour
des points lidar.
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.

Si vous essayez de faire un MNT, vous pouvez simplement en récupérer tout
fait : http://makosol.free.fr/page10.html

En conclusion,
voici la requête a utiliser :
CREATE TABLE example_intersections_a AS

SELECT  part_2.geom
FROM fra_adm0 AS part_1,france_merge_pts1 AS part_2
WHERE ST_Intersects(part_1.geom, part_2.geom)=TRUE;


Enfin il existe un très bon livre sur l'utilisation de PostGIS qui vous
donnera les bases :
Il s'agit de PostGIS in Action.

Bien Cordialement,
Rémi-C



Le 2 décembre 2013 20:07, laurent <lcelati at latitude-geosystems.com> a écrit
:

> Bonjour,
>
> Merci beaucoup pour votre réponse. Pour etre plus clair : J'ai un layer
> polygonal représentant les limites admin nationales de la France. Il s'agit
> d'une seule entité. Et mon autre donnée est en effet un fichier de points
> LIDAR vraiment énorme (>re à 2 millions de points) distribués sur plusieurs
> pays. Et mon but est d'isoler dans une nouvelle table les points qui se
> trouvent sur le territoire francais (qui sont inclus dans mon polygone
> France et également ceux qui touchent le polygone).
>
> J'avais crû comprendre que la fonction ST_intersects ne ferait que renvoyer
> le nombre de points intersectant mon polygone. Moi je veux vraiment
> construire une nouvelle géométrie dans une nouvelle table. Et j'avais crû
> comprendre que la seule fonction faisant celà était ST_Intersectection.
> Mais
> j'ai peut etre mal compris...
>
> J'ai quitté le bureau tout à l'heure et ma requete était toujours en cours!
> Ce qui m'étonne dans ma requete c'est que j'ai renseigné en premier mon
> layer polygone puis mon layer points. Après reflexion il aurait été peut
> etre plus logique de renseigner en premeier mon layer points. Mais je ne
> sais meme pas si celà est important. J'ai un peu peut qu'au final je me
> retrouve avecc une nouvelle table avec des objets surfaciques et non
> ponctuels...
>
> Merci en tout cas pour tous vos conseils.
>
>
>
>
>
> --
> View this message in context:
> http://postgis.17.x6.nabble.com/ST-intersects-error-message-tp5005029p5005036.html
> Sent from the PostGIS - User mailing list archive at Nabble.com.
> _______________________________________________
> postgis-users mailing list
> postgis-users at lists.osgeo.org
> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20131203/1197c643/attachment.html>


More information about the postgis-users mailing list