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é ?

#1 Fri 12 September 2025 11:04

AlineC
Membre du bureau
Lieu: AVIGNON
Date d'inscription: 5 Sep 2005
Messages: 2225
Site web

QGIS: jointure approximative ?

Bonjour,
J'ai une donnée SIG qui repère des ténements fonciers et un tableau excel qui détaille des éléments d'information.
Malheureusement il n'y a pas pour l'instant d'identifiant commun ...
Est ce que dans Qgis il y a une manière de faire une jointure que j’appellerais "approximative" entre les noms de site, y compris s'il y a quelques différences ?
Merci

Hors ligne

 

#2 Fri 12 September 2025 14:03

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1206

Re: QGIS: jointure approximative ?

Salut Aline,

tu peux utiliser la distance de levenshtein pour faire çà.

La distance de levenshtein entre deux chaines de caractères a et b corresponds au nombre d'opérations minimum nécéssaires (remplacement, suppression ou ajout de caractère) pour transformer a en b. Plus cette distance est petite, plus les deux chaines peuvent être considérées similaires.

Exemple : la distance entre "bayrou" et "lecornu" est de 5 (!), et celle entre "paix" et "pet" est de 3.

Un petit tuto ( en anglais sad ) :
https://www.youtube.com/watch?v=dC8bnMnJlcs

Dernière modification par tumasgiu (Fri 12 September 2025 14:47)

Hors ligne

 

#3 Fri 12 September 2025 15:11

AlineC
Membre du bureau
Lieu: AVIGNON
Date d'inscription: 5 Sep 2005
Messages: 2225
Site web

Re: QGIS: jointure approximative ?

Merci Tumasgiu,
c'est un plugin ou un outil déjà existant dans qgis ?

Hors ligne

 

#4 Fri 12 September 2025 15:31

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1206

Re: QGIS: jointure approximative ?

C'est une fonction directement utlisable dans l'éditeur d'expression de qgis (cela existe également dans les sgbdr).

Dans le tuto, l'idée est de créér un champ virtuel qui stockerait pour chaque enregistrement de la table A, la clé de la table B la plus approchante avec l'expression et ensuite faire une jointure classique avec ce champ virtuel :

Code:

array_first(
    aggregate(
        layer:="table B",
        aggregate:="array_agg,
        expression:="colonne_dans_table_b",
        filter:=levenshtein("colonne_dans_table_b", attribute(@parent,""colonne_dans_table_a")) <= distance_max,
        order_by:=levenshtein("colonne_dans_table_b", attribute(@parent,""colonne_dans_table_a"))
      )
)

Il y a peut être un meilleur moyen de le faire ou un plugin, mais pas à ma connaissance.

Dernière modification par tumasgiu (Hier 12:17)

Hors ligne

 

#5 Aujourd'hui 15:08

AlineC
Membre du bureau
Lieu: AVIGNON
Date d'inscription: 5 Sep 2005
Messages: 2225
Site web

Re: QGIS: jointure approximative ?

Pour compléter les explications de Tumasqiu les outils de "correspondance approximative" (ou "fuzzy matching" pour les recherches en anglais) sont disponibles dans la calculatrice et donc utilisable avec le code ci-dessus

Hors ligne

 

Pied de page des forums

Copyright Association GeoRezo