Pages: 1
- Sujet précédent - QGIS 2.10 : Compter et classer les poly superposés dans la même couche - Sujet suivant
#1 Mon 26 October 2015 18:47
- Groflo
- Participant actif
- Date d'inscription: 3 Jun 2013
- Messages: 84
QGIS 2.10 : Compter et classer les poly superposés dans la même couche
Bonjour,
Sur une couche où j'ai différents individus géolocalisés, je souhaite compter le nombre d'entre eux situés à moins d'1 km d'un autre, et idéalement les classer en fonction du nombre d'individus à moins d'1 km de chacun.
Pour que ce soit plus clair : je souhaite calculer un potentiel de covoiturage en me basant sur la proximité entre individus : s'ils 2 personnes sont à moins d'1 km l'une de l'autre (donc une zone tampon de 500 m autour de chacun, qui se touchent entre elles), on peut considérer qu'elles peuvent passer se prendre. Et si en plus, 1 individu dispose de plus de 5 ou 6 personnes à moins d'1 km de lui, on peut supposer qu'il est très probable qu'il puisse trouver quelqu'un avec qui covoiturer.
Je souhaite donc pouvoir :
*faire une zone tampon de 500 m autour de chaque individu ;
*compter le nombre de zones qui se chevauchent (ce qui donne mon total de personnes potentiellement concernées par un ou plusieurs covoiturage) ;
*séparer les individus ayant au moins 5 autres individus chevauchant sa zone des individus n'ayant que moins de 5 personnes chevauchant sa zone.
Pour la zone tampon, c'est ok, et j'ai pris soin de ne pas faire d'union des zones. J'ai donc de jolis cercles qui parfois se chevauchent, sur la même couche.
Mais pour la suite, je sèche. Peut-être passer par l'outil de sélection à partir d'expression et utiliser la fonction d'expression « intersects() » mais je n'ai aucune idée de comment cela fonctionne.
Si quelqu'un peut m'aider à y voir plus clair…
Merci par avance.
Dernière modification par Groflo (Mon 26 October 2015 18:47)
Hors ligne
#2 Tue 27 October 2015 09:16
- JulieDubois
- Participant occasionnel
- Date d'inscription: 3 Jul 2015
- Messages: 13
Re: QGIS 2.10 : Compter et classer les poly superposés dans la même couche
Bonjour,
Il me semble que, si en faisant les zones tampons, tu utilises l'union des zones, alors tu pourras ensuite faire un count() des individus par zone. Tu pourras ensuite séparer les individus ayant au moins 5 autres individus proche d'eux par un style approprié.
Hors ligne
#3 Tue 27 October 2015 09:33
- Groflo
- Participant actif
- Date d'inscription: 3 Jun 2013
- Messages: 84
Re: QGIS 2.10 : Compter et classer les poly superposés dans la même couche
Ah, je n'avais pas pensé à ça. Merci pour cette proposition.
En revanche, j'avoue mon faible niveau de connaissance avec les expressions (s'il s'agit bien d'une fonction d'expression). Comment concrètement faire des count() « par zone » ?
De plus, cela risque de poser un problème : si plusieurs tampons d'individus se chevauchent et s'unissent, ne vais-je pas compter dans la même zone des individus qui peuvent au final être très éloignés les uns des autres (le dernier à chevaucher pouvant ne pas directement chevaucher le premier, mais lui être uniquement lié par différents individus entre eux 2) ?
Hors ligne
#4 Tue 27 October 2015 09:39
- JulieDubois
- Participant occasionnel
- Date d'inscription: 3 Jul 2015
- Messages: 13
Re: QGIS 2.10 : Compter et classer les poly superposés dans la même couche
après avoir fait le tampon avec l'union des entités, il y aura une seule entité à séparer en plusieurs polygones avec l'outil "Morceau unique vers morceaux multiples" (Outils de géométrie).
Pour le count(), il y a l'outil "Points dans un polygone..." (Outils d'analyse) qui crée un nouveau shape avec la colonne qui nous intéresse.
De plus, cela risque de poser un problème : si plusieurs tampons d'individus se chevauchent et s'unissent, ne vais-je pas compter dans la même zone des individus qui peuvent au final être très éloignés les uns des autres (le dernier à chevaucher pouvant ne pas directement chevaucher le premier, mais lui être uniquement lié par différents individus entre eux 2) ?
En effet, je n'avais pas pensé à ce problème ...
Hors ligne
#5 Tue 27 October 2015 09:55
- Groflo
- Participant actif
- Date d'inscription: 3 Jun 2013
- Messages: 84
Re: QGIS 2.10 : Compter et classer les poly superposés dans la même couche
J'ai entre temps fait le « points dans un polygone » sur un tampon non unifié, et ça fonctionne en partie : lorsque plusieurs tampons chevauchent le centre d'un autre tampon, j'ai sur ce dernier le compte qui apparait dans ma nouvelle colonne. Malheureusement, il faut que le point soit recouvert de l'autre tampon, ce qui signifie que 2 zones recouvertes ne sont pas comptées tant que la zone B ne recouvre pas le point central de A.
Il me manque donc logiquement plusieurs résultats.
Il me faudrait quelque chose du genre : à chaque polygone, si le polygone est recouvert par un autre polygone, faire +1 dans la colonne résultat.
Mais à défaut, dans un premier temps, si j'arrivais ne serait-ce qu'à compter les zones recouvertes par 1 ou plusieurs zones, ça me permettrait au moins de dire X personnes sont potentiellement concernées.
Le fait de les classer en plus ou moins probable n'est qu'en second temps, un « bonus ».
Hors ligne
#6 Tue 27 October 2015 10:20
- Groflo
- Participant actif
- Date d'inscription: 3 Jun 2013
- Messages: 84
Re: QGIS 2.10 : Compter et classer les poly superposés dans la même couche
Bon, j'avance, je suis passé par une autre solution, en partant de ma couche de points initiaux.
Si je fais une matrice des distances, je peux avoir le point le plus proche et la distance pour chaque point. Par jointure, je peux donc ne sélectionner que les individus qui ont au moins un autre individu situé à 1 km ou moins de chez eux.
Comme dans le menu « matrice des distances », je peux décider d'avoir la distance pour les x points les plus proches, j'ai fait pour 5. J'ai donc, pour chaque point (à partir de son ID), les distances des 5 points les plus proches de lui.
Mais là, je sèche. J'ai un CSV de la forme :
ID Départ || TargetID || Distance
1 43 457
1 5 209
2 24 890
2 12 299
2 44 193
2 119 499
etc.
Comment puis-je, à partir de ce CSV, avoir un comptage du nombre d'occurrence de chaque ID de départ ?
Pour avoir une table du type
ID Départ || Nombre de covoitureurs potentiels
1 2
2 4
etc.
Merci.
Dernière modification par Groflo (Tue 27 October 2015 10:20)
Hors ligne
#7 Tue 27 October 2015 10:26
- JulieDubois
- Participant occasionnel
- Date d'inscription: 3 Jul 2015
- Messages: 13
Re: QGIS 2.10 : Compter et classer les poly superposés dans la même couche
Je rencontre le même problème avec cette requête ...
Code:
SELECT a.id , st_distance(a.geom, b.geom) as DISTANCE , b.id FROM covoit_1 as a, covoit_2 as b WHERE st_distance(a.geom, b.geom) < 1000 AND a.id is not b.id ORDER BY 1
Je ne sais pas comment compter les occurrences (sans passer par excel) après avoir obtenu :
id DIST id
ROE17201 143.4 ROE2676
ROE17201 184.5 ROE2673
ROE17201 246.9 ROE17203
ROE17203 108.9 ROE2676
ROE17203 246.9 ROE17201
ROE17203 286.3 ROE2673
ROE17235 106.2 ROE2681
ROE17235 202.6 ROE2696
ROE17235 467.2 ROE2708
ROE17254 570.1 ROE2755
Hors ligne
#8 Tue 27 October 2015 11:14
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3947
Re: QGIS 2.10 : Compter et classer les poly superposés dans la même couche
Bonjour,
Groflo, regarde du côté de l'extension GroupStats, ça te permettra de générer un fichier csv que tu pourras joindre à ta couche de points. Par contre, si c'est pour avoir pour chaque point combien en sont les plus proches, une zone tampon de 1km + "points dans polygone" aurait aussi fait l'affaire, non?
JulieDuBois, peut-être un
Code:
SELECT id, count(DIST) as nbr from (SELECT a.id , st_distance(a.geom, b.geom) as DISTANCE , b.id as bid FROM covoit_1 as a, covoit_2 as b WHERE st_distance(a.geom, b.geom) < 1000 AND a.id is not b.id ORDER BY 1) liste group by id
Par contre, a et b sont deux tables différentes? car je ne comprends pas l'intérêt de la comparaison des id.
PS: JulieDuBois, faudra peut-être ouvrir un autre sujet dans GEOBD si le sujet doit être plus traité que cela, afin de ne pas polluer celui de "Groflo"
Hors ligne
#9 Tue 27 October 2015 11:27
- Groflo
- Participant actif
- Date d'inscription: 3 Jun 2013
- Messages: 84
Re: QGIS 2.10 : Compter et classer les poly superposés dans la même couche
Bonjour,
Groflo, regarde du côté de l'extension GroupStats, ça te permettra de générer un fichier csv que tu pourras joindre à ta couche de points. Par contre, si c'est pour avoir pour chaque point combien en sont les plus proches, une zone tampon de 1km + "points dans polygone" aurait aussi fait l'affaire, non?
Alors en effet, GroupStats fonctionne à merveille, et je peux avoir le résultat, merci infiniment.
En revanche, j'avoue n'avoir même pas eu la présence d'esprit de penser à une seule zone tampon de 1,001 km (j'imagine qu'il faut que le point soit dans le polygone, pas sur sa limite) avec « points dans polygone ». Ça peut m'éviter le paquet de manipulations que je viens de faire.
Parfois, il faut arriver à lever la tête du guidon pour penser plus simplement.
Hors ligne
#10 Tue 27 October 2015 16:16
- Groflo
- Participant actif
- Date d'inscription: 3 Jun 2013
- Messages: 84
Re: QGIS 2.10 : Compter et classer les poly superposés dans la même couche
Je confirme que ça fonctionne parfaitement avec les tampons d'1 km et les points dans polygone et que c'est bien plus rapide.
Merci donc.
Hors ligne
Pages: 1
- Sujet précédent - QGIS 2.10 : Compter et classer les poly superposés dans la même couche - Sujet suivant