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 Thu 10 April 2014 14:55

Hydrolithe
Participant assidu
Lieu: Lyon
Date d'inscription: 21 Apr 2010
Messages: 223

QGIS 2.2: Etiquette multi-lignes sur un seul champ

Bonjour,

J'ai parcouru plusieurs post concernant l'étiquetage multi-lignes. J'arrive bien à créer une étiquette sur plusieurs lignes à partir de plusieurs champs.

Mais je n'arrive pas à créer une étiquette multi-ligne sur un seul champ : j'ai un champ ID qui contient des noms de zones assez longs en terme de caractères (> 50 caractères) et je cherche donc à adapter mes étiquettes en les affichant sur plusieurs lignes.

Existe-t-il une autres solution que d'insérer un caractère générique (* par exemple) dans mon champ et d'activer l'option "Retour à la ligne sur le caractère" ? Car je vais me retrouver avec des * dans le nom des champs et j'utilise ces données attributaires dans d'autres applications qui ne vont pas interpréter le caractère * de la même façon.

Je vous remercie d'avance, Pierre

Hors ligne

 

#2 Thu 10 April 2014 16:38

haubourg
Participant assidu
Lieu: Grenoble
Date d'inscription: 7 Sep 2005
Messages: 257
Site web

Re: QGIS 2.2: Etiquette multi-lignes sur un seul champ

Hydrolithe a écrit:

Bonjour,

J'ai parcouru plusieurs post concernant l'étiquetage multi-lignes. J'arrive bien à créer une étiquette sur plusieurs lignes à partir de plusieurs champs.

Mais je n'arrive pas à créer une étiquette multi-ligne sur un seul champ : j'ai un champ ID qui contient des noms de zones assez longs en terme de caractères (> 50 caractères) et je cherche donc à adapter mes étiquettes en les affichant sur plusieurs lignes.

Existe-t-il une autres solution que d'insérer un caractère générique (* par exemple) dans mon champ et d'activer l'option "Retour à la ligne sur le caractère" ? Car je vais me retrouver avec des * dans le nom des champs et j'utilise ces données attributaires dans d'autres applications qui ne vont pas interpréter le caractère * de la même façon.

Je vous remercie d'avance.

Pierre


Une expression régulière par exemple.  Celle ci coupe tous les 14 caractères, mais sans couper un mot pour que ça reste lisible:

Code:

regexp_replace( monchamp, '(.{14}[^\\s.]*)\\s', '\\1\n')

ne me demandez pas de l'expliquer, je crois que je n'arriverais jamais à écrire une expression régulière moi même... :-(
Régis

Hors ligne

 

#3 Thu 10 April 2014 16:55

Hydrolithe
Participant assidu
Lieu: Lyon
Date d'inscription: 21 Apr 2010
Messages: 223

Re: QGIS 2.2: Etiquette multi-lignes sur un seul champ

Merci Haubourg pour cette réponse qui fonctionne bien.

Je pensais qu'il y avait quelque chose de plus simple comme ce qui existe sous ArcGIS par exemple mais je m'en contenterai en l'adaptant selon mes besoins.
Ca me fera une bonne excuse pour découvrir les expressions régulières.

Pierre

Hors ligne

 

#4 Thu 10 April 2014 17:39

haubourg
Participant assidu
Lieu: Grenoble
Date d'inscription: 7 Sep 2005
Messages: 257
Site web

Re: QGIS 2.2: Etiquette multi-lignes sur un seul champ

oui, ce serait bien d'inclure une option dans l'interface sans avoir à taper une expression régulière.

Hors ligne

 

#5 Fri 11 April 2014 11:33

MathieuB
Membre du bureau
Lieu: Montpellier
Date d'inscription: 18 Jan 2006
Messages: 1229
Site web

Re: QGIS 2.2: Etiquette multi-lignes sur un seul champ

Bonjour,

Hydrolithe a écrit:

Ça me fera une bonne excuse pour découvrir les expressions régulières.


Des bonnes excuses pour s'intéresser aux expressions régulières il y en a beaucoup ;-)

On s'éloigne du sujet du forum mais voici pour les curieux :

dans "mon champ" je cherche la chaine de caractères correspondant au motif suivant :
.         -> n'importe quel caractère
{14}   -> répété précisément 14 fois
[^\\s.] -> suivi de tout sauf ^ un espace \s
*         -> répété n * fois
\\s       -> suivi d'un espace \s

et je la remplace par

'\\1      -> la première chaine capturée (correspondant au motif ci-dessus décrit entre les parenthèses)
\n'       -> Par un saut de ligne \n


Mathieu BOSSAERT
Association GeoRezo

Hors ligne

 

#6 Mon 14 April 2014 04:20

Leyan
Participant assidu
Date d'inscription: 14 Oct 2013
Messages: 160

Re: QGIS 2.2: Etiquette multi-lignes sur un seul champ

Si tu as accès à la version de développement, il y a la fonction wordwrap qui a été ajoutée récemment et qui permet de faire exactement cela: voir https://github.com/qgis/QGIS/pull/1181 pour un exemple d'utilisation.

Hors ligne

 

#7 Mon 14 April 2014 09:52

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3931

Re: QGIS 2.2: Etiquette multi-lignes sur un seul champ

Bonjour,
Testé et approuvé, Leyan!
C'est nettement beaucoup plus simple que de devoir taper l'expression regexp_replace (que j'ai testée sans succès d'ailleurs sad)

Hors ligne

 

#8 Mon 14 April 2014 16:05

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

Re: QGIS 2.2: Etiquette multi-lignes sur un seul champ

SANTANNA a écrit:

Bonjour,
Testé et approuvé, Leyan!
C'est nettement beaucoup plus simple que de devoir taper l'expression regexp_replace (que j'ai testée sans succès d'ailleurs sad)


Je viens de tester, ça marche très bien pour moi cette expression régulière. Peut être une petite erreur de frappe ?
En tout cas, en attendant wordwrap, pour ma part, ça me convient parfaitement (j'avais cherché une solution à ce problème il y a un moment).

EDIt : Pour référence (anglais) : https://docs.python.org/2/library/re.html

Dernière modification par Robin (Mon 14 April 2014 16:15)

Hors ligne

 

#9 Mon 14 April 2014 16:26

Hydrolithe
Participant assidu
Lieu: Lyon
Date d'inscription: 21 Apr 2010
Messages: 223

Re: QGIS 2.2: Etiquette multi-lignes sur un seul champ

Merci beaucoup pour toutes ces précisions.

Hors ligne

 

#10 Fri 27 January 2017 13:56

loupin
Participant actif
Date d'inscription: 23 Apr 2010
Messages: 66

Re: QGIS 2.2: Etiquette multi-lignes sur un seul champ

Bonjour,

l'expression  regexp_replace(  "mon champ" ,'(.{5}[^\\s.]*)\\s','\\1\n'), fonctionne bien dans ma couche par contre quand je passe en mode composeur d'impression (en mode génération d'atlas) ça ne marche plus....

Est-il possible dans le composeur, quand on génère un atlas qui récupère a un endroit la valeur d'un champ, affecter cette expression pour que le retour à la ligne s'effectue??

Merci

Hors ligne

 

#11 Sat 28 January 2017 20:07

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3931

Re: QGIS 2.2: Etiquette multi-lignes sur un seul champ

Bonjour,
remplace monchamp par attribute($atlasfeature, 'monchamp') pour voir... Je n'ai pas QGIS sous la main pour tester la formule, cela dit...

Hors ligne

 

Pied de page des forums

Powered by FluxBB