#1 Fri 11 June 2021 11:52
- Demonshine
- Participant occasionnel
- Date d'inscription: 27 May 2021
- Messages: 21
QGIS: Extraire sous-partie d'une Etiquette
Bonjour,
Afin de gérer l’étiquetage d'une couche, je souhaite extraire une chaine de caractères dans une colonne : "nom". Sauf que les chaines de caractères à extraire dans cette colonne sont variables et je n'arrive donc pas à récupérer les valeurs que je veux pour tous les cas possibles.
Voici quelques valeurs présentes dans ma colonne "nom" pour illustrer mon problème :
cas 1 : - Échangeur Numéro 14 de Croix Daurade -> récupérer seulement le chiffre : '14' (étiquette 1) puis le nom soit : 'Croix Daurade'(étiquette 2)
cas 2 : - Échangeur Numéro 10.1 d'Eurocentre -> récupérer seulement le chiffre : '10.1'(étiquette 1) puis le nom soit : 'Eurocentre' (étiquette 2)
cas 3 : - Échangeur A64-A620 -> récupérer seulement le nom : 'A64-A620' (étiquette 2)
cas 4 : - Échangeur des Demoiselles -> récupérer seulement le nom 'Demoiselles' (étiquette 2)
Il faudrait donc que je fasse deux conditions pour gérer l'affichage des étiquettes en affichant seulement le numéro (condition 1) et seulement le nom (condition 2).
Pour afficher seulement les numéros, j'ai essayé la requête :
Code:
regexp_substr(upper("nom"),'(\\d+.)')
mais cette requête ne me prend pas en compte tous les cas.
Pour afficher seulement les noms, j'ai essayé cette requête :
Code:
right("nom",length("nom")- strpos("nom", 'de'))
Mais sans succès car la lettre 'e' du mot "de" (ex : cas 1) s'affiche dans mon étiquette juste avant le nom. Autre soucis est que j'aimerais également gérer les cas si au lieu du mot de avant le toponyme j'ai le mot "du", "des", "de la" ou "d"...
Merci d'avance pour votre aide
Hors ligne
#2 Fri 11 June 2021 12:50
- michel56
- Participant assidu
- Lieu: Lorient
- Date d'inscription: 14 Jul 2012
- Messages: 474
Re: QGIS: Extraire sous-partie d'une Etiquette
Bonjour,
Avec la fonction replace et deux array:
replace("nom",array('Échangeur ',' d\'',' de ',' des ',' de la ',' du '),array('','','','','',''))
Dernière modification par michel56 (Fri 11 June 2021 13:57)
Opérateur cartographique & DAO & PHP.
Hors ligne
#3 Fri 11 June 2021 14:48
- Demonshine
- Participant occasionnel
- Date d'inscription: 27 May 2021
- Messages: 21
Re: QGIS: Extraire sous-partie d'une Etiquette
Bonjour,
Merci pour votre retour, je n'avais pas pensé à cette option.
Cependant, cette fonction ne marche pas pour le cas 4. : 'Echangeur des demoiselles' où j'obtiens 'des demoiselles' dans mon étiquette. Je pense que cela vient de l'ajout de :"d\" pour que la fonction se produise après le chiffre de l'échangeur mais j'aimerais avoir les deux options. Y a t'il un moyen de mettre les deux options dans votre fonction car je ne vois pas comment faire. J'ai essayé en récrivant une seconde fois la fonction sans l'ajout de "d\" avec un opérateur "AND" mais cela ne fonctionne pas...
Il faudrait également enlever la chaine de caractères : 'Numéro' avant le chiffre. Je pense utiliser un regexp mais je ne vois pas comment "assembler" toutes ces fonctions ensemble...
Merci pour votre aide
Hors ligne
#4 Fri 11 June 2021 15:17
- michel56
- Participant assidu
- Lieu: Lorient
- Date d'inscription: 14 Jul 2012
- Messages: 474
Re: QGIS: Extraire sous-partie d'une Etiquette
En ajoutant Numéro dans le tableau et en supprimant les espaces avant le mot à remplacer:
Code:
replace("nom",array('Échangeur ',' d\'','de ','des ','de la ','du ','Numéro '),array('','','','','','',''))
Dernière modification par michel56 (Fri 11 June 2021 15:30)
Opérateur cartographique & DAO & PHP.
Hors ligne
#5 Fri 11 June 2021 16:00
- Demonshine
- Participant occasionnel
- Date d'inscription: 27 May 2021
- Messages: 21
Re: QGIS: Extraire sous-partie d'une Etiquette
Merci beaucoup, ça fonctionne !
Hors ligne
#6 Mon 14 June 2021 09:23
- Demonshine
- Participant occasionnel
- Date d'inscription: 27 May 2021
- Messages: 21
Re: QGIS: Extraire sous-partie d'une Etiquette
Bonjour,
J'ai une autre question, le format de mes étiquettes est difficile à gérer avec un seul formatage d'étiquettes. Savez-vous s'il est possible de séparer cette requête de sorte à avoir deux formats d'étiquettes. C'est-à-dire faire une condition d'étiquettes pour avoir d'une part juste les numéros des échangeurs et une autre étiquette avec juste les noms ?
Merci par avance,
Hors ligne