Jointures spatiales: utilisation de la fonction st_intersects
Résolu/Fermé4 réponses
Chris 94
Messages postés
50978
Date d'inscription
mardi 8 janvier 2008
Statut
Modérateur
Dernière intervention
17 février 2023
7 341
11 nov. 2020 à 11:51
11 nov. 2020 à 11:51
Bonjour,
Merci pour cette information. As-tu une question ?
Pour rappel :
Merci pour cette information. As-tu une question ?
Pour rappel :
Les réponses sont données par des bénévoles, pas par des machines. Il est vivement recommandé d'user des formes minimales de la politesse ("bonjour', "s'il vous plait", "merci d'avance") pour rester dans le cadre de notre charte d'utilisation.
Bonjour,
je veux savoir
Si j'utilise correctement la fonction st_intersects
et pourquoi la requête tourne sans s'arrêter ni renvoyer de résultats.
Merci d'avance
je veux savoir
Si j'utilise correctement la fonction st_intersects
et pourquoi la requête tourne sans s'arrêter ni renvoyer de résultats.
Merci d'avance
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
Modifié le 13 nov. 2020 à 11:14
Modifié le 13 nov. 2020 à 11:14
Bonjour,
Je ne connais pas ces fonctions géométriques, mais déjà la construction de ta requête n'est pas bonne, car tu joins ensemble pp, pf et pm, ce qui les combine alors que tu voudrais plutôt en additionner les résultats. Ça peut expliquer ton problème : cela fait exploser le nombre de résultats et le nombre de calculs, d'autant plus que j'imagine ces fonctions assez gourmandes.
Utilise plutôt des UNION pour ajouter les résultats :
Et pour faire tes tests, tu peux isoler une seule de ces requêtes.
Xavier
Je ne connais pas ces fonctions géométriques, mais déjà la construction de ta requête n'est pas bonne, car tu joins ensemble pp, pf et pm, ce qui les combine alors que tu voudrais plutôt en additionner les résultats. Ça peut expliquer ton problème : cela fait exploser le nombre de résultats et le nombre de calculs, d'autant plus que j'imagine ces fonctions assez gourmandes.
Utilise plutôt des UNION pour ajouter les résultats :
SELECT d.nom_dep, d.geom, pp.geom, 'pp' as type_surface FROM departments d, champs_petroliers_surfaciques pp WHERE st_intersects(d.geom, pp.geom)=true AND d.nom_dep='LEKOKO' UNION ALL SELECT d.nom_dep, d.geom, pf.geom, 'pf' FROM departments d, permis_forestiers2020 pf WHERE st_intersects(d.geom, pf.geom)=true AND d.nom_dep='LEKOKO' UNION ALL SELECT d.nom_dep, d.geom, pm.geom, 'pm' FROM departments d, permis_miniers_surfaciques pm WHERE st_intersects(d.geom, pm.geom)=true AND d.nom_dep='LEKOKO'
Et pour faire tes tests, tu peux isoler une seule de ces requêtes.
Xavier