#1 Fri 11 October 2013 18:08
QGIS 2.0.1 : Etiquetage Retour à la ligne intelligent
Bonjour,
Je cherche à reproduire le mode wrap d'Arcgis (V10.1) dans QGIS, à savoir : on définit un certain nombre de caractères maximum au delà duquel il faut revenir à la ligne.
J'avoue sécher sur le coup, je n vois pas trop comment nourrir QGIs pour lui dire de faire ça...
En résumé :
A minima, il faudrait que je puisse revenir à la ligne au caractère "n"
Au mieux, que je lui fasse revenir à la ligne au premier caractère "espace" rencontré à gauche avant le caractère "n"
Hors ligne
#2 Fri 11 October 2013 22:01
- cyrille
- Participant assidu
- Date d'inscription: 7 Feb 2006
- Messages: 394
Re: QGIS 2.0.1 : Etiquetage Retour à la ligne intelligent
Bonsoir,
Il faut utiliser le menu formatage (dans étiquetage) et indiquer le caractère sur lequel le retour à la ligne se fait c'est a dire un blanc (taper une fois espace)
Hors ligne
#3 Mon 14 October 2013 15:15
Re: QGIS 2.0.1 : Etiquetage Retour à la ligne intelligent
Merci. Ca marche pas mal pour les noms de communes quand ils ont des tirets (-) mais le fait de mettre un espace comme caractère de retour à la ligne n'est pas suffisant ; j'illustre mon propos pour être plus clair avec pour condition : maximum 30 caractères par ligne, retour à la ligne sans couper le mot
Exemple :
Chaine initiale :
Vallée du Rhin de Strasbourg à Marckolsheim
Chaine finale avec retour à la ligne :
Vallée du Rhin de Strasbourg à
Marckolsheim
Autre exemple :
Chaine initiale :
Milieux forestiers, pelouses et marais des massifs de Moloy, La Bonière et Lamargelle
Chaine finale avec retour à la ligne:
Milieux forestiers, pelouses
et marais des massifs de Moloy
, La Bonière et Lamargelle
Évidemment, il est possible de créer une fonction de mise à jour du champ pour y insérer un caractère de retour à la ligne qui respecterait ces conditions (=c'est techniquement possible), mais j'aurais voulu un mode interactif qui ne nécessite pas de modifier les données.
Hors ligne
#4 Mon 14 October 2013 15:51
Re: QGIS 2.0.1 : Etiquetage Retour à la ligne intelligent
Bonjour Robin,
je pense qu'avec les fonctions d'expression régulière regexp_* de la calculatrice de champ , il y aurait moyen de faire ça, notamment d'insérer un caractère spécial tous les N caractères.
Si je vois un peu comment faire ça, je te tiens au jus..
Jamais utilisé les expressions régulières sous QGIS
geodata au cerema et petits billets en géomatique
Hors ligne
#5 Mon 14 October 2013 16:03
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3885
Re: QGIS 2.0.1 : Etiquetage Retour à la ligne intelligent
Bonjour,
J'ignore quelle variable (ou fonction) permet de sélectionner un mot dans une chaîne de caractères mais cette fonction permet déjà d'aller à la ligne au 30ème caractère. Il faudra indiquer dans la case de retour à la ligne le caractère (_). L'exemple esrt applicable jusqu'à 90 caractères....
Code:
case when length("nom")<=30 then "nom" when length(nom)<=60 then left("nom",30) || '_' || substr("nom",31, length("nom")-30) else left("nom",30) || '_' || substr("nom",31, 30)|| '_' || substr("nom",31, length("nom")-60)
Reste plus qu'à trouver comment prendre le mot entier. Il y a une fonction strpos pour connaitre la position d'un caractère. Peut-être une piste en jouant sur la position des espaces.
Dernière modification par SANTANNA (Mon 14 October 2013 16:05)
Hors ligne
#7 Mon 14 October 2013 16:58
Re: QGIS 2.0.1 : Etiquetage Retour à la ligne intelligent
On peut aussi passer par exemple par concat() :
Code:
Case(...du code...) concat(left( "nom" ,30),'_',substr("nom",31, length("nom")-30))
En demandant un retour à la ligne à chaque _
Pour le retour à la ligne sur un caractère, à présent que j'ai compris comment utiliser une boucle de condition dans le moteur d'étiquetage, ça devrait être plus simple.
Ps : désolé pour les lecteurs par mail, je fais pas mal d'édition dans mes messages.
Dernière modification par Robin (Mon 14 October 2013 16:59)
Hors ligne
#8 Mon 14 April 2014 16:07
Re: QGIS 2.0.1 : Etiquetage Retour à la ligne intelligent
Pour suivi la solution était bien une expression régulière comme suggéré par MathieuR :
http://georezo.net/forum/viewtopic.php?id=91626
Hors ligne