Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#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: 3807

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

SANTANNA a écrit:

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

 

Pied de page des forums

Powered by FluxBB