#1 Mon 18 March 2019 10:51
- preliator
- Participant assidu
- Date d'inscription: 17 Nov 2018
- Messages: 433
QGIS: Distance entre chaque point
Bonjour à tous,
Je voudrais faire une analyse statistique sur la distance moyenne que sépare chaque pylône électrique en fonction de la tension des fils qu'il supporte en France (plus de 22 000 données). Pour cela, j'ai utilisé différentes options dans Qgis que je vais vous dévoiler, cependant je rencontre 2 problèmes majeurs :
1 : Pour calculer la distance entre tout les points, j'utilise "Matrice des distance", avec ces options affichées dans la photo 1, ce qui me permet de calculer uniquement le point le plus proche. Cependant, lorsqu'il y a une longue distance qui sépare 2 séries de points, cette distance n'est pas calculée, car justement, la matrice ne calcule que les distances les plus courtes. Or, j'ai besoin de toute les distances ! Démonstration dans la photo 2.
2 : Vu que j'utilise la matrice des distances sur une seule et même couche, j'ai forcément 2 points qui ont la même distance. Photo 3. Je pense que cela doit influer sur mes résultats.
Bref, tout ça pour dire que la matrice des distances ne me satisfait pas pour mon problème..... Je voudrais donc trouver un moyen de calculer toute les distances qui sépare mes points, et si possible, la situation idéale serait de pouvoir relier ces points par une ligne en fonction du champ "Tension", qui comporte la tension des fils que supporte le pylône (50 Kv, 100 Kv, Ou 400 Kv), histoire qu'un pylône de 400 Kv ne ne relie pas à un pylône de 50 Kv
Merci à vous.
Dernière modification par preliator (Mon 18 March 2019 10:59)
Hors ligne
#2 Mon 18 March 2019 11:00
- preliator
- Participant assidu
- Date d'inscription: 17 Nov 2018
- Messages: 433
Re: QGIS: Distance entre chaque point
Image 3 : https://zupimages.net/up/19/12/azhl.jpg
Hors ligne
#3 Mon 18 March 2019 14:59
- carteq
- Participant assidu
- Date d'inscription: 8 Mar 2008
- Messages: 829
Re: QGIS: Distance entre chaque point
Pouvez-vous poster les 2 premières images, comme la 3e ? Le nouveau serveur ne donne pas accès aux 2 premières.
Hors ligne
#4 Mon 18 March 2019 20:47
- preliator
- Participant assidu
- Date d'inscription: 17 Nov 2018
- Messages: 433
Re: QGIS: Distance entre chaque point
Hop ! Voilà
Photo 1 : https://zupimages.net/up/19/12/jl72.jpg
Photo 2 : https://zupimages.net/up/19/12/0mlq.png
Photo 3 : https://zupimages.net/up/19/12/azhl.jpg
Dernière modification par preliator (Mon 18 March 2019 20:48)
Hors ligne
#5 Mon 18 March 2019 23:03
- carteq
- Participant assidu
- Date d'inscription: 8 Mar 2008
- Messages: 829
Re: QGIS: Distance entre chaque point
Avez-vous essayé le spanning tree, tel que suggéré dans votre autre post sur ce sujet ? Voici ce que ça donne (voir jpg). Ça relie tous les points avec le plus proche, sans isoler de groupes. Si vous faites une couche pour chaque tension de lignes, vous couvrirez tous vos points.
jpg : https://drive.google.com/open?id=1_1qU4 … h31UbCzAdW
Dernière modification par carteq (Mon 18 March 2019 23:05)
Hors ligne
#6 Tue 19 March 2019 00:21
- preliator
- Participant assidu
- Date d'inscription: 17 Nov 2018
- Messages: 433
Re: QGIS: Distance entre chaque point
Si je demande, c'est aussi parceque je n'ai pas réussi avec le spanning tree. En effet, je n'ai pas réussi avec cette méthode car un message d'erreur apparaît à chaque tentative, et je ne comprend pas comment il fonctionne
"Les couches suivantes n'ont pas été générées correctement "
Hors ligne
#7 Tue 19 March 2019 10:56
- Pascal Boulerie
- Participant assidu
- Lieu: France
- Date d'inscription: 12 Sep 2005
- Messages: 2923
- Site web
Re: QGIS: Distance entre chaque point
L'algorithme et/ou la fonction de spanning tree est-il livré avec une documentation en ligne quelque part dans le manuel du logiciel sur le site QGis.org ?
Mot-clé (pour retrouver le message ultérieurement) : SpanningTree .
« L'État est désormais quasi déliquescent. » (José Cohen-Aknine, ingénieur X-Ponts, IGPEF, dans Déliquescence et renaissance de l'État.)
Hors ligne
#8 Tue 19 March 2019 13:24
- carteq
- Participant assidu
- Date d'inscription: 8 Mar 2008
- Messages: 829
Re: QGIS: Distance entre chaque point
J'ai regardé l'outil v.net.spanningtree. Il ne correspond pas à mes expériences avec d'autres logiciels. Il demande en outre une couche de lignes en entrée, alors que l’algorithme sert plutôt à en générer une à partir de points à mon avis. La version Grass sert à trouver les éléments d'un réseau qui connectent les points en entrée, et ce avec le moindre coût le long du réseau.
Je vais regarder en SQL ou avec la calculatrice de champs alors.
Hors ligne
#9 Tue 19 March 2019 14:15
- preliator
- Participant assidu
- Date d'inscription: 17 Nov 2018
- Messages: 433
Re: QGIS: Distance entre chaque point
J'ai regardé l'outil v.net.spanningtree. Il ne correspond pas à mes expériences avec d'autres logiciels. Il demande en outre une couche de lignes en entrée, alors que l’algorithme sert plutôt à en générer une à partir de points à mon avis. La version Grass sert à trouver les éléments d'un réseau qui connectent les points en entrée, et ce avec le moindre coût le long du réseau.
Je vais regarder en SQL ou avec la calculatrice de champs alors.
En effet, c'est pour ça que je trouvais l'outil bizarre pour mon exemple. J'ai essayé énormément de paramètres au hasard avant de réussir à ce qu'il charge quelque chose ; j'ai finalement réussi en créant une couche ligne vierge.
La j'ai tenté de l'appliquer à une couche de 800 points, ça fais 3h que Qgis réfléchis. On verra si ça répond à mon besoin.
Hors ligne
#10 Tue 19 March 2019 14:37
- carteq
- Participant assidu
- Date d'inscription: 8 Mar 2008
- Messages: 829
Re: QGIS: Distance entre chaque point
L'outil que j'utilise traite 20 000 points en 1 minute tout au plus je pense.
Hors ligne
#11 Tue 19 March 2019 14:38
- preliator
- Participant assidu
- Date d'inscription: 17 Nov 2018
- Messages: 433
Re: QGIS: Distance entre chaque point
L'outil que j'utilise traite 20 000 points en 1 minute tout au plus je pense.
Et quel est cet outil ? Je suis très intéressé
Dernière modification par preliator (Tue 19 March 2019 14:47)
Hors ligne
#12 Tue 19 March 2019 15:17
- carteq
- Participant assidu
- Date d'inscription: 8 Mar 2008
- Messages: 829
Re: QGIS: Distance entre chaque point
écrivez-moi à vfrechette at boisaco point com. Je ne veux pas faire de publicité dans la section Open Source.
Hors ligne
#13 Tue 19 March 2019 22:01
- carteq
- Participant assidu
- Date d'inscription: 8 Mar 2008
- Messages: 829
Re: QGIS: Distance entre chaque point
lorsqu'il y a une longue distance qui sépare 2 séries de points
Si il y a une longue distance, n'est-ce pas justement parce que les 2 séries de points ne sont pas connectés en réalité ? J'imagine que les lignes sont équipées de pylônes placés à un intervalle assez régulier.
j'ai forcément 2 points qui ont la même distance
Cela se règle aisément par une élimination des doublons (calculatrice de champs ou SQL)
Dernière modification par carteq (Tue 19 March 2019 22:03)
Hors ligne
#14 Tue 19 March 2019 22:50
- preliator
- Participant assidu
- Date d'inscription: 17 Nov 2018
- Messages: 433
Re: QGIS: Distance entre chaque point
Je viens de vérifier, ces "longues" distance surviennent lorsqu'il y a par exemple présence d'une falaise ou d'un plan d'eau. Sinon, ces pylones sont toujours bien connectés en réalité.
Concernant la suppression des doublons, je me confronte toujours au problème de calcul extrêmement lent. Probablement que la encore, je n'utilise pas la bonne méthode. Quelle méthode me conseillez-vous pour supprimer des doublons dans une couche de plus de 20 000 points ?
Dernière modification par preliator (Tue 19 March 2019 22:50)
Hors ligne
#15 Wed 20 March 2019 13:19
- carteq
- Participant assidu
- Date d'inscription: 8 Mar 2008
- Messages: 829
Re: QGIS: Distance entre chaque point
Code:
Probablement que la encore, je n'utilise pas la bonne méthode
Quelle méthode utilisez-vous ?
Hors ligne
#16 Wed 20 March 2019 22:17
- carteq
- Participant assidu
- Date d'inscription: 8 Mar 2008
- Messages: 829
Re: QGIS: Distance entre chaque point
En SQL, j'ai bâti la matrice de distance, retenu les paires les plus proches et leur géométrie puis construit les lignes entre les points. Le tout en une seule requête (avec sous-requêtes). Tous les points ne sont pas encore joints.
Ensuite, il faudrait scripter en python :
- Grouper ensuite les lignes qui se touchent.
- Puis sélectionner les 2 lignes groupées qui sont les plus proches et construire la ligne la plus courte qui les relie (à partir de pylônes)
- Puis recommencer l'étape précédente jusqu'à obtenir une seule entité linéaire qui relie tous les points.
Hors ligne
#17 Thu 21 March 2019 11:05
- preliator
- Participant assidu
- Date d'inscription: 17 Nov 2018
- Messages: 433
Re: QGIS: Distance entre chaque point
Code:
Probablement que la encore, je n'utilise pas la bonne méthodeQuelle méthode utilisez-vous ?
J'utilise principalement 2 méthode :
1 : MMQGIS qui permet (d'après ce que j'ai compris) de supprimer tout les points ayant strictement la même position. Malheureusement, dans mon cas, certains points sont espacés de 1m par exemple.
2 : Récemment, j'ai pu acquérir la formule suivante :
Code:
with_variable( 'min_distance', 15, case when aggregate('Fusionne', 'count', "statut", filter:=distance(geometry(@parent), $geometry) < @min_distance) > 1 then 'doublon existe' else 'ok' end )
Qui, grâce à un champ "Statut" vide, m'indique, dans cet exemple, tout les points qui sont situés à une distance inférieure à 15m entre eux. Cependant, le temps de calcul est extrêmement long pour 22 000 points. Pourtant, j'estime avoir un bon PC.
Hors ligne
#18 Thu 25 April 2019 22:06
- carteq
- Participant assidu
- Date d'inscription: 8 Mar 2008
- Messages: 829
Re: QGIS: Distance entre chaque point
J'ai testé le calcul de la distance du pylone le plus près avec ceci, via une couche Spatialite:
Code:
Select min(st_distance(a.GEOMETRY, b.GEOMETRY))as dist from pilones7153 as a , pilones7153 as b where a.id <> b.id group by a.id
Ça fonctionne. Cependant, ce n'est pas performant. Pour vos 232000 points, j'estime le calcul à 52 heures.
Probablement qu'avec PostGIS, ça ira terriblement plus vite. Avec un autre logiciel à ma disposition, ça prend quelques secondes.
Hors ligne