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

Annonce

Rencontres QGIS 2025

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

#1 Fri 11 October 2013 18:08

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

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: 401

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

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

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

MathieuR
Membre
Lieu: aix-en-provence
Date d'inscription: 16 Feb 2009
Messages: 1690
Site web

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 smile


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: 3945

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

 

#6 Mon 14 October 2013 16:33

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

Re: QGIS 2.0.1 : Etiquetage Retour à la ligne intelligent

Merci Santanna. Je vais creuser dans cette direction.
Le tout est un maniement de chaîne, je pense.

Hors ligne

 

#7 Mon 14 October 2013 16:58

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

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

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

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

 

Pied de page des forums

Powered by FluxBB