PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 30/11/2020 22:27:39

preliator
Membre

Problème de lenteur avec st_intersection (novice)

Bonjour,

Je dispose 2 couches d'occupation du sol (2006 et 2018) de type Multipolygon, et une grille de polygones de 100*100m de type Polygon.
Ces 2 couches sont coupées sur un cercle de 10 000 m², sont sur le Lambert 93, et ont un index spatial.

https://zupimages.net/viewer.php?id=20/49/dlkk.png

La couche d'occupation du sol de 2006 contient 14 320 entrées, celle de 2018 environ 13 000, et la grille 31 000.



Dans chaque cellule de ma grille (et dans sa stricte emprise), je souhaite découper les éléments d'occupation du sol, de manière séparée pour les 2 dates différentes (pour commencer). Pour cela, je me suis dirigé vers st_intersection :

select grille.id as id_carr, 2006 as annee, code, st_intersection(occ_2006_test.geom, grille.geom) as geom
from grille, occ_2006_test
where st_intersects(occ_2006_test.geom, grille.geom);

select grille.id as id_carr, 2018 as annee, code, st_intersection(occ_2018_test.geom, grille.geom) as geom
from grille, occ_2018_test
where st_intersects(occ_2018_test.geom, grille.geom);

La première requête, celle sur la couche de 2006, dure 12 secondes et me retourne 110 000 lignes. La seconde, pour une raison inconnue, tourne encore après 10 minutes....

Comment expliquer cette différence de performance ? (le lien pour accéder à mes couches, si jamais https://drive.google.com/file/d/1P4_C_5 … sp=sharing

Merci.

Dernière modification par preliator (01/12/2020 10:39:54)

Hors ligne

#2 01/12/2020 08:14:12

Marc Cousin
Membre

Re : Problème de lenteur avec st_intersection (novice)

le fichier n'est pas accessible


Marc.

Hors ligne

#3 01/12/2020 10:03:06

preliator
Membre

Re : Problème de lenteur avec st_intersection (novice)

Oups ! J'ai du mal avec le Drive ... voilà c'est bon. Merci.

Hors ligne

#4 01/12/2020 10:16:34

Marc Cousin
Membre

Re : Problème de lenteur avec st_intersection (novice)

Il vaudrait mieux un dump de la base, histoire de pouvoir reproduire le problème... parce que là, on peut en faire un peu ce qu'on veut, des gpkg


Marc.

Hors ligne

#5 01/12/2020 10:39:38

preliator
Membre

Re : Problème de lenteur avec st_intersection (novice)

Merci pour votre disponibilité ! Qu'entendez-vous par un dump ? Sinon, voici les données au format .sql : https://drive.google.com/file/d/1P4_C_5 … sp=sharing

Hors ligne

#6 01/12/2020 12:39:35

Marc Cousin
Membre

Re : Problème de lenteur avec st_intersection (novice)

Les deux jeux de données sont très similaires… à un polygone près:

gis=# select id,st_npoints(geom) as np from occ_2018 order by np desc limit 5;
  id  |   np   
------+--------
 7685 | 955200
 7670 | 11054
 8998 | 2579
 4473 | 2055
 12198 | 1802

C'est cette géométrie (7685) qui fait tout tomber. De ce que je vois dans qgis, c'est l'ensemble des rues de Lyon, ce polygone. Ou un truc ressemblant. Dès qu'on le supprime, ça va mieux.


Marc.

Hors ligne

#7 01/12/2020 13:05:34

preliator
Membre

Re : Problème de lenteur avec st_intersection (novice)

Un grand merci... effectivement, c'est un très gros polygone. Au lieu de le supprimer, existe t-il un moyen de le "couper" en plusieurs partie ?

Hors ligne

#8 01/12/2020 13:12:46

Marc Cousin
Membre

Re : Problème de lenteur avec st_intersection (novice)

Oui, il doit y avoir moyen, mais j'ai vraiment l'impression qu'il est rendondant avec les autres. Sinon vous pouvez le découper, à coup de st_intersection par exemple (avec votre grille ?), ou de st_subdivide ?


Marc.

Hors ligne

Pied de page des forums