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 Mon 25 April 2016 11:57

Romain3dmap
Participant occasionnel
Date d'inscription: 8 Apr 2016
Messages: 41

QGIS: 1ère lettre en majuscule et le reste en minuscule sur étiquette

Bonjour,

J'essai de faire apparaître le nom des villes avec la première lettre en majuscule, j'ai trouvé sur un forum cette solution :

Aller dans l'édito en rentrant la formule suivante :

concat(upper( left("monchamp",1) ), lower( right("monchamp", length("monchamp")-1)))

Dans l'éditeur la casse est bien prise en compte puisque l'exemple du dessous me le confirme.

Mais lorsque j'applique les modifications dans la propriétés de la couche rien ne se passe .

1- Ai je oublié une manipulation ?

2- Est il possible de mettre une majuscule pour chaque début de mot et pas qu'au début du nom ?

Merci à vous

Hors ligne

 

#2 Mon 25 April 2016 12:30

Leehan
Participant actif
Lieu: tours
Date d'inscription: 10 Jun 2009
Messages: 52

Re: QGIS: 1ère lettre en majuscule et le reste en minuscule sur étiquette

bonjour,

Tu as la possibilité d'utiliser la fonction title() qui d'après la doc

Convertit l'ensemble des mots d'une chaîne de caractères en casse de titre (tous les mots sont en minuscule sauf la première lettre du mot qui est en majuscule).


ex :
title('salut MOnde') → 'Salut Monde'

Hors ligne

 

#3 Mon 25 April 2016 12:36

Romain3dmap
Participant occasionnel
Date d'inscription: 8 Apr 2016
Messages: 41

Re: QGIS: 1ère lettre en majuscule et le reste en minuscule sur étiquette

Serais tu ou je peux trouver la doc ?

Etant novice en la matière je risque d'en avoir besoin.

Merci pour ton tuyau

Hors ligne

 

#4 Mon 25 April 2016 12:41

gustavecoste
Participant actif
Lieu: Montpellier
Date d'inscription: 24 Apr 2013
Messages: 118

Re: QGIS: 1ère lettre en majuscule et le reste en minuscule sur étiquette

Tu trouvera la documentation de QGIS ici.
Bonne lecture!


Gustave Coste

Hors ligne

 

#5 Mon 25 April 2016 12:43

Leehan
Participant actif
Lieu: tours
Date d'inscription: 10 Jun 2009
Messages: 52

Re: QGIS: 1ère lettre en majuscule et le reste en minuscule sur étiquette

Dans le calculateur d'expressions qui te permet de paramétrer ton étiquetage, il y a 3 fenêtres. Celle du milieu liste les fonctions. Quand tu cliques sur une fonction, tu as les détails dans le fenêtre de droite.
sinon qgis.org, tu trouveras les manuels utilisateurs. Et pour aller plus loi sur Github, tu as les explications plus détaillées des développeurs concernant les extensions.

Hors ligne

 

#6 Mon 25 April 2016 15:35

Marc-André
Participant assidu
Lieu: Montréal
Date d'inscription: 30 Sep 2005
Messages: 688

Re: QGIS: 1ère lettre en majuscule et le reste en minuscule sur étiquette

Bonjour,

Essayez ceci.
De mon côté, ça fonctionne.

Code:

concat( upper( left( "monchamp" ,1)),  (lower ( substr("monchamp""monchamp" ,2,100))))

Hors ligne

 

#7 Mon 25 April 2016 17:25

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

Re: QGIS: 1ère lettre en majuscule et le reste en minuscule sur étiquette

Bonjour,

1- Ai je oublié une manipulation ?


A priori, je dirais non si tu es bien dans la bonne fenêtre et si dans les propriétés texte de l'étiquette, tu n'as pas bidouillé l'option "Type de casse".

2- Est il possible de mettre une majuscule pour chaque début de mot et pas qu'au début du nom ?


C'est ce que fait la fonction title évoquée précédemment ou encore la dernière option de l'option casse (qui ne marche bien que si tes données ne sont pas à l'origine en majuscule).

Ai rectifié mon message d'origine car peu juste: je n'avais pas fait attention à la casse de base des données.

Dernière modification par SANTANNA (Tue 26 April 2016 06:40)

Hors ligne

 

#8 Tue 09 August 2016 09:47

Yaëlle F
Participant actif
Date d'inscription: 27 Sep 2012
Messages: 87

Re: QGIS: 1ère lettre en majuscule et le reste en minuscule sur étiquette

Bonjour,

Je me permets de rebondir sur le sujet, car j'ai le même problème.
J'ai une couche avec les communes dont le nom est entièrement en majuscule. Je voudrais les étiqueter avec la première lettre des mots en majuscule. Toutes les fonctions proposées et disponibles fonctionnent (bien que mon champ soit en majuscule). Cependant, le résultat ne correspond pas totalement à mes attentes, les mots composés sont considérés comme un seul mot. Or, je voudrais que tous les premiers mots soient en majuscules, ou dans l'idéal pouvoir définir les règles.
Par exemple pour : SAINT-YAN devient Saint-yan avec les fonctions, moi je voudrais obtenir Saint-Yan
Cela est-il possible ? En quel langage ?
Par ailleurs, est-il possible de pousser le vice pour obtenir à la place de AIX-EN-PROVENCE, Aix-en-Provence par exemple ?

En vous remerciant par avance,

Yaëlle

Hors ligne

 

#9 Tue 09 August 2016 15:34

smermet
Juste Inscrit !
Date d'inscription: 10 Feb 2011
Messages: 1

Re: QGIS: 1ère lettre en majuscule et le reste en minuscule sur étiquette

Bonjour Yaëlle,
Pas de réponse dans l'immédiat sous QGIS, mais ce fil de discussion répond à ta question avec un script en vbscript : http://georezo.net/forum/viewtopic.php?id=84678
Samuel

Hors ligne

 

#10 Tue 16 August 2016 15:00

JD
Moderateur
Date d'inscription: 8 Aug 2013
Messages: 726

Re: QGIS: 1ère lettre en majuscule et le reste en minuscule sur étiquette

Bonjour,
je te propose d'ajouter le fichier startup.py dans le dossier .qgis2/python ( qui se trouve soit dans tes documents C:\Users\XX\.qgis2\python ou alors C:\Program Files (x86)\QGIS\profil\python pour la version ministère)

Voici le code à ajouter au fichier startup.py :

Code:

from qgis.core import *
from qgis.gui import *
import re

def replace(match):
    if match.group(0): return match.group(0).lower()

@qgsfunction(args='auto', group='test')
def return_in_title (label, feature, parent):
    """
        Renvoie la chaine de caractère suivant la charte toponymie de l'IGN (page 13)
        &rarr; <a href="http://www.ign.fr/sites/all/files/charte_toponymie_ign.pdf">http://www.ign.fr/sites/all/files/charte_toponymie_ign.pdf</a>
        <h4>Syntaxe</h4>
        <p>return_in_title(<i>name</i>)</p>
        <h4>Arguments</h4>
        <p><i>  name</i> &rarr; le nom de la ville &agrave; nettoyer.<br> 
        <h4>Exemple</h4>
        <p><!-- Exemple.-->
             return_in_title('AIX-EN-PROVENCE') &rarr; 'Aix-en-Provence'</p>
       
    """ 
    try:
        newLabel = label.title()
    except AttributeError:
        parent.setEvalErrorString( u'String expected : {} must be a string'.format( label ) )
        return False
    newLabel = re.sub(u'(-|\s)(Au|Aux|De|Du|Devant|Derrière|En|La|Le|Les|Lès|Près|Sur|Sous)(-|\s)', replace, newLabel)
    newLabel = re.sub(u'(-|\s)(Au|Aux|De|Du|Devant|Derrière|En|La|Le|Les|Lès|Près|Sur|Sous)(-|\s)', replace, newLabel)
    #appliquer 2 fois pour gérer les cas où deux mots dans la liste se succèdent
    newLabel = re.sub(u"(-|\s)[LD]\'", replace, newLabel)
    return newLabel

Il ajoute une fonction return_in_title(nom) dans le groupe test
la fonction renvoie pour return_in_title('AIX-EN-PROVENCE') --> 'Aix-en-Provence'

Je me suis inspiré de la charte toponymie de l'IGN disponible : http://www.ign.fr/sites/all/files/chart … ie_ign.pdf
Cordialement,

Dernière modification par lejedi76 (Tue 16 August 2016 15:11)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#11 Wed 17 August 2016 09:03

Floflo49fb
Participant assidu
Lieu: Montpellier
Date d'inscription: 29 Aug 2009
Messages: 250
Site web

Re: QGIS: 1ère lettre en majuscule et le reste en minuscule sur étiquette

Bonjour,
De mon côté, je me suis créé une petite expression QGIS qui fait le job dans la majorité des cas.

@lejedi76 : Très intéressant ton doc sur la toponymie de l'IGN.

MAJ : Je viens de créer une expression V2 en me basant sur les éléments du doc fournit par lejedi76

Bonne journée,

Dernière modification par Floflo49fb (Wed 17 August 2016 19:31)


Florian Boret
Dream it, Make it, Share it

Hors ligne

 

Pied de page des forums

Powered by FluxBB