Pages: 1
- Sujet précédent - QGIS: Fusion de 2 couches de points avec critères sur attributs - Sujet suivant
#1 Tue 11 December 2018 11:37
- ODJAC33
- Participant assidu
- Date d'inscription: 6 Aug 2017
- Messages: 240
QGIS: Fusion de 2 couches de points avec critères sur attributs
Bonjour à tous,
Mon problème est le suivant : j'ai 2 couches de points (appelées C1 et C2) que je souhaiterais fusionner en appariant les points de C1 et C2 suivant les critères suivants :
- points situés à moins de 1 m l'un de l'autre
- points dont l'ecart en Z est inférieur à une certaine valeur
J'ai testé l'algorithme Fusion mais cela ne convient pas car cet algorithme ne fait qu'une somme des 2 bases sans aucun appariement.
Typiquement C1 contient 707 points et C2 en contient 1700. L'algo fusion me donne forcément 2407 points, or j'aimerais n'en avoir que 2209, ie 198 points appariés suivant les critères définis ci-dessus(chaque paire de points appariés se transformant en un seul point).
J'ai testé aussi NNJOIN entre C1 et C2 en triant les points qui sont à moins de 1 m l'un de l'autre, mais là je me retrouve uniquement avec les points appariés.
En faite il faudrait un algo qui soit un mixte de "Fusion" et "NNJOIN" : une fusion qui fasse les appariements.
Si quelqu'un a une solution, je suis très preneur... Merci d'avance.
Hors ligne
#2 Sat 15 December 2018 16:41
- ODJAC33
- Participant assidu
- Date d'inscription: 6 Aug 2017
- Messages: 240
Re: QGIS: Fusion de 2 couches de points avec critères sur attributs
Bonjour à tous,
Je me suis embarqué vers une solution qui vaut ce qu'elle vaut mais qui ne peut se finaliser qu'avec une petite aide de votre part sur une requête SQL.
Je souhaiterais en effet faire une requête forçant un attribut de ma base à prendre une certaine valeur si un autre attribut de cette même base vaut une certaine valeur.
En clair j'ai un attribut distance (un flottant), qui, s'il est supérieur à 1m. doit mettre un autre attribut appelé Nom (une chaine de caractère à Null.
J'ai testé ça : if ("distance" > 1, "Nom" ILIKE NULL), mais c'est une expression invalide.
Merci de votre aide.
Hors ligne
#3 Mon 17 December 2018 09:43
Re: QGIS: Fusion de 2 couches de points avec critères sur attributs
Bonjour,
Essaie ça :
Code:
CASE WHEN "distance" > 1 THEN NULL ELSE "Nom" END
Dernière modification par SIGEAL (Mon 17 December 2018 09:43)
Christophe Damour (SIGéal)
Hors ligne
#4 Mon 17 December 2018 19:38
- ODJAC33
- Participant assidu
- Date d'inscription: 6 Aug 2017
- Messages: 240
Re: QGIS: Fusion de 2 couches de points avec critères sur attributs
Bonjour,
J'ai essayé en tapant exactement ce que tu proposes : CASE WHEN "distance" >1 THEN Null ELSE "Nom" END
Ça me sélectionne tous les objets de la base ayant un attribut distance <1 mais les objets dont l'attribut distance est supérieur à 1 n'ont malheureusement pas un attribut Nom qui à Null.
J'ai aussi essayé ça :CASE WHEN "distance" >1 THEN "Nom" ILIKE Null ELSE "Nom" END
Mais ça me donne le même résultat.
Merci encore.
Hors ligne
#5 Wed 19 December 2018 07:47
Re: QGIS: Fusion de 2 couches de points avec critères sur attributs
Pour créer une nouvelle colonne (réelle ou virtuelle), il faut que tu utilises cette requête avec la calculatrice de champs, pas avec l'outil de sélection par expression.
Christophe Damour (SIGéal)
Hors ligne
#6 Wed 19 December 2018 15:42
- ODJAC33
- Participant assidu
- Date d'inscription: 6 Aug 2017
- Messages: 240
Re: QGIS: Fusion de 2 couches de points avec critères sur attributs
En faite, je ne souhaite pas vraiment créer une nouvelle colonne, je voudrais appliquer la condition suivante : si l'attribut distance des objets de la base est supérieur à 1, alors l'attribut nom des objets de cette même base (qui existe déjà dans ma base) prend la valeur Null.
Typiquement si la valeur de distance d'un objet O1 vaut 1,3m alors son attribut nom qui était par exemple T2341 (identifiant d'un objet O2 apparié à O1) vaudra alors Null (ou une case vide).
Merci encore.
Hors ligne
#7 Wed 19 December 2018 17:04
- ODJAC33
- Participant assidu
- Date d'inscription: 6 Aug 2017
- Messages: 240
Re: QGIS: Fusion de 2 couches de points avec critères sur attributs
Mais ta solution fonctionne, j'ai créé un attribut appar (comme appariement) avec l'expression toute simple suivante pour le définir :
CASE WHEN "distance" <1 then "Nom" Else null END
Et ça marche.
Merci beaucoup.
Hors ligne
Pages: 1
- Sujet précédent - QGIS: Fusion de 2 couches de points avec critères sur attributs - Sujet suivant