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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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

SIGEAL
Participant assidu
Lieu: Saint Laurent des Combes
Date d'inscription: 5 Sep 2005
Messages: 195
Site web

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

SIGEAL
Participant assidu
Lieu: Saint Laurent des Combes
Date d'inscription: 5 Sep 2005
Messages: 195
Site web

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

 

Pied de page des forums

Powered by FluxBB