Annonce
Pour sa 21ème année, l’association GeoRezo a toujours besoin de vous !
10€ = 1 mois de frais bancaires ; 15€ = 12 mois de nom de domaine ; 30€ = 1 semaine de location des serveurs …
Retrouver nos membres bienfaiteurs
#1 Mon 13 April 2020 09:41
- HugoSo
- Participant occasionnel
- Date d'inscription: 3 Feb 2020
- Messages: 15
QGIS: Lier par distance deux shapefiles
Bonjour à tous,
Je vous explique ma situation : J'ai un shapefile de point qui représente mes fuites sur le réseau d'eau potable de ma commune. Ces fuites sont intégrés par fichier excel par rapport aux adresses postales. Elles sont donc à proximités du réseau d'eau (shapefile ligne) sans pour autant être liées audit réseau.
Pour cela, j'aimerai savoir s'il existe un outil pour lier deux shapefiles, en fonction de leurs distances. C'est à dire que le shape point (fuites) vient se positionner sur mon shape Ligne (réseau) la où la distance est la plus courte entre les deux..
Le but étant par la suite de dire que sur ce tronçons, j'ai tant de fuites.
Merci d'avance pour vos lumières !
Hors ligne
#2 Mon 13 April 2020 16:29
- carteq
- Participant assidu
- Date d'inscription: 8 Mar 2008
- Messages: 829
Re: QGIS: Lier par distance deux shapefiles
Ça se fait en SQL. Je n'ai malheureusement pas le temps aujourd'hui. Peut-être demain, ou quelqu'un d'autre ?
Hors ligne
#3 Wed 15 April 2020 04:29
- carteq
- Participant assidu
- Date d'inscription: 8 Mar 2008
- Messages: 829
Re: QGIS: Lier par distance deux shapefiles
Le but étant par la suite de dire que sur ce tronçons, j'ai tant de fuites.
Code:
Select DID as line_ID, Count(EID) as nb_fuites from ( Select * from (Select a.ID as DID , b.ID as EID, Min(distance(a.geometry, b.geometry)) as dist from Conduites as a , fuites as b GROUP BY a.ID, b.ID ORDER by DID, DIST) as R JOIN (Select b.ID as CID , Min(distance(a.geometry, b.geometry)) as dist1 from Conduites as a , fuites as b GROUP BY b.ID ORDER by CID, dist1) as J ON EID= CID and dist= dist1 ) Group BY DID
Je suis parti avec un shape de points et un shape de lignes. Juste une colonne ID dans chacun.
Il reste à vérifier les résultats (qui dépendent de la façon dont QGIS calcule la distance par rapport à une ligne : au noeud le plus près, au centroide, au lieu le plus près ???)
Dernière modification par carteq (Wed 15 April 2020 04:37)
Hors ligne
#4 Mon 20 April 2020 08:53
- HugoSo
- Participant occasionnel
- Date d'inscription: 3 Feb 2020
- Messages: 15
Re: QGIS: Lier par distance deux shapefiles
Bonjour Vincent,
Merci de votre retour, je n'ai jamais utilisé le langage SQL, je m'y penche et je reviens vers vous si jamais quelque chose m'échappe
Merci
Hors ligne
#5 Mon 20 April 2020 09:41
- HugoSo
- Participant occasionnel
- Date d'inscription: 3 Feb 2020
- Messages: 15
Re: QGIS: Lier par distance deux shapefiles
Ok alors j'ai étudié votre code, je ne comprend pas toutes les abréviations.. mais je comprend le sens de la démarche.
Je ne comprend pas qu'au début on cherche à sélectionner "DID as line_ID et Count(EID)" dans la même table alors que j'ai deux tables différentes..
Mes deux shapefiles ont un champ "ID" respectif.
Pouvez-vous à la limite mettre des commentaires ou des noms différents afin que je puisse mettre au point votre code?
Merci d'avance !
Hors ligne
#6 Mon 20 April 2020 14:14
- carteq
- Participant assidu
- Date d'inscription: 8 Mar 2008
- Messages: 829
Re: QGIS: Lier par distance deux shapefiles
Mes deux shapefiles ont un champ "ID" respectif.
Vous n'avez alors qu'à changer le nom des couches "Conduites as a , fuites as b", deux fois.
Le SQL est exécuté à l'envers ici. Les 3e et 4e Select sont exécutés en premier, puis joints ensemble. Ensuite le 2e, et enfin le 1er.
Hors ligne