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

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 …

Faire un don 

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 smile

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

 

Pied de page des forums

Powered by FluxBB