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 14 April 2017 15:38

pedro9magic
Participant actif
Date d'inscription: 19 Jul 2015
Messages: 76

QGIS 2.18.1: personnaliser l'étiquette

Bonjour,

Je travaille sur Qgis et j'aimerais personnaliser l'étiquette que j'obtiens d'une couche. Attention quand je dis "personnaliser", ce n'est pas mettre un texte personnel mais personnaliser l'affichage (gras, italique, taille).

Soyons concret : Qgis me sert a avoir les parcelles de ma commune. L'étiquette actuelle dont le champ est "right(IDU,6)" me permet d'avoir la section et le numéro de ma parcelle. J'aimerais avoir un des deux champs en gras, est ce possible ? Par ailleurs, que veut dire ce "right(IDU,6)" ?

Deuxièmement, vu que la couche est très générique, mes parcelles s'appellent 0000042 au lieu de 42 par exemple. Est il possible de supprimer les zéro ? je crois que c'est possible mais je n'ai pas retrouvé comment on pouvait faire sans le faire manuellement (j'ai plus de 1000 lignes dans ma table attributaire)

En vous remerciant par avance, Bien cordialement

Hors ligne

 

#2 Fri 14 April 2017 17:32

michel56
Participant assidu
Lieu: Lorient
Date d'inscription: 14 Jul 2012
Messages: 474

Re: QGIS 2.18.1: personnaliser l'étiquette

Bonjour,

Pour les zéro tu convertis la chaîne de caractères en numéric avec to_int( ) et les zéro vont disparaitre.

Pour right(IDU,6) c'est écrit dans la doc:

Code:

fonction right
Renvoie une sous-chaîne de caractères contenant les n caractères les plus à droite.
Syntaxe
right(string, length)
Arguments

string
une chaîne de caractères
length
entier. Le nombre de caractères à renvoyer depuis la droite de la chaîne.

Exemples
right('Salut tout le monde',5) → 'Salut'

Dernière modification par michel56 (Wed 19 April 2017 11:32)


Opérateur cartographique & DAO & PHP.

Hors ligne

 

#3 Fri 14 April 2017 18:19

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

Re: QGIS 2.18.1: personnaliser l'étiquette

Bonsoir, pour le moment ce n est pas encore possible de styliser une partie de l'étiquette.
Cette fonctionnalité est presque prête mais n'a pas encore été intégrée faute de moyen. Elle devrait voir le jour quand la version 3 arrivera.
https://github.com/qgis/QGIS/pull/2856
Cordialement,

Hors ligne

 

#4 Fri 14 April 2017 19:01

C. Quent
Juste Inscrit !
Date d'inscription: 31 Mar 2017
Messages: 9

Re: QGIS 2.18.1: personnaliser l'étiquette

Bonjour,

right(IDU,6) signifie que ce sont les 6 caractères les plus à droite de la chaîne IDU qui sont renvoyés. Pour ce qui est de IDU, cela doit être le nom de colonne contenant la section et le numéro de parcelle.

Pour supprimer les zéros, vous pouvez créer une nouvelle colonne et dans celle-ci utiliser la calculatrice de champ afin de ne garder que 42 ( donc right ("nom de votre colonne", 2)

Quentin

Hors ligne

 

#5 Tue 18 April 2017 12:26

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

Re: QGIS 2.18.1: personnaliser l'étiquette

Bonjour,

Pour supprimer les zéros, vous pouvez créer une nouvelle colonne et dans celle-ci utiliser la calculatrice de champ afin de ne garder que 42 ( donc right ("nom de votre colonne", 2)


@C. Quent, la difficulté avec votre système est qu'il faut connaître le nombre de chiffres à conserver dans le IDU; le 42 peut très bien être 3 ou 156 sur une autre parcelle. Donc la formule ne sera pas juste.
La solution de michel56 avec to_int est beaucoup plus juste, plus adaptée à mon avis et présente en plus l'avantage de ne pas stocker de champ calculé dans le fichier.

En ligne

 

#6 Wed 19 April 2017 16:55

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

Re: QGIS 2.18.1: personnaliser l'étiquette

Bonjour et bienvenue sur GeoRezo,

si vous souhaitez garder un champ texte ou ne pas créer un nouveau champ, vous pouvez utiliser la fonction l'expression regexp_replace(chaîne_en_entrée, expression_rationnelle, remplacement) :

Code:

regexp_replace( '00000420','^0+','')

-> renvoie '420'

On demande à la fonction de remplacer dans la chaîne de caractère 00000420 tous les 0 (0+)qui sont en début de chaîne (^) par une chaîne vide ('')


Mathieu BOSSAERT
Association GeoRezo

Hors ligne

 

#7 Fri 21 April 2017 09:17

pedro9magic
Participant actif
Date d'inscription: 19 Jul 2015
Messages: 76

Re: QGIS 2.18.1: personnaliser l'étiquette

merci pour toutes vos réponses. Je n'avais pas eu le temps de repasser depuis.

J'ai réussi à supprimer les 0 mais manque de chance, le champ IDU donne le code postal + section + feuille + numéro donc ca n'a pas réglé mon étiquette. Puis je créer un nouveau champ qui reprendrait donc à la suite le champ secteur et le champ numéro (ou j'ai donc supprimé les 0). C'est possible j'imagine ?

Dernière modification par pedro9magic (Fri 21 April 2017 09:28)

Hors ligne

 

#8 Fri 21 April 2017 09:54

jmarsac
Participant assidu
Lieu: NICE
Date d'inscription: 26 Oct 2005
Messages: 572
Site web

Re: QGIS 2.18.1: personnaliser l'étiquette

bonjour,

Code:

regexp_replace('0040000C0920','(\d*)([A-Z]+)(0*)(\d+)','($2)($4)')

La fonction ne garde que le deuxième (lettre(s) section) et le quatrième champ (numéro de parcelle sans les zéros).

Dernière modification par jmarsac (Fri 21 April 2017 09:56)


Jean-Marie
Azimut

Hors ligne

 

#9 Fri 21 April 2017 10:18

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

Re: QGIS 2.18.1: personnaliser l'étiquette

regexp power !


Mathieu BOSSAERT
Association GeoRezo

Hors ligne

 

#10 Fri 21 April 2017 10:32

pedro9magic
Participant actif
Date d'inscription: 19 Jul 2015
Messages: 76

Re: QGIS 2.18.1: personnaliser l'étiquette

jmarsac a écrit:

bonjour,

Code:

regexp_replace('0040000C0920','(\d*)([A-Z]+)(0*)(\d+)','($2)($4)')

La fonction ne garde que le deuxième (lettre(s) section) et le quatrième champ (numéro de parcelle sans les zéros).


merci mais malheureusement selon la longueur de certains champs (j'ai des sections avec deux caractères, d'autre 1 par exemple), ca ne fonctionne pas

MathieuB a écrit:

regexp power !


je ne suis pas un grand spécialiste, je mets ca comment ?

J'ai essayé le champ 1 and champ 2, le + entre les deux, rien ne fonctionne

Dernière modification par pedro9magic (Fri 21 April 2017 10:35)

Hors ligne

 

#11 Fri 21 April 2017 10:48

jmarsac
Participant assidu
Lieu: NICE
Date d'inscription: 26 Oct 2005
Messages: 572
Site web

Re: QGIS 2.18.1: personnaliser l'étiquette

Pouvez-vous nous indiquer les IDU pour lesquels cela ne fonctionne pas ?
"regexp power" était seulement un commentaire de Mathieu sur la puissance des expressions rationnelles !

Dernière modification par jmarsac (Fri 21 April 2017 10:57)


Jean-Marie
Azimut

Hors ligne

 

#12 Fri 21 April 2017 11:01

pedro9magic
Participant actif
Date d'inscription: 19 Jul 2015
Messages: 76

Re: QGIS 2.18.1: personnaliser l'étiquette

Finalement, en cherchant sur le forum, j'ai modifié l'étiquette par un "champ 1" ||  "champ 2" et ca m'évite d'avoir à recréer un champ.

Par contre, petite question encore : sur le champ des numéros, quand je les classe, le classement est étrange, j'ai tout 1 10 1000 10000 et après j'ai 2 200 2000. Il n'y a pas un moyen d'avoir un classement plus cohérent avec 1 2 3 ... 10 11... ? ca vient du format du champ non ?

Merci en tout cas pour l'aide apportée

Hors ligne

 

#13 Fri 21 April 2017 11:09

jmarsac
Participant assidu
Lieu: NICE
Date d'inscription: 26 Oct 2005
Messages: 572
Site web

Re: QGIS 2.18.1: personnaliser l'étiquette

pedro9magic a écrit:

Finalement, en cherchant sur le forum, j'ai modifié l'étiquette par un "champ 1" ||  "champ 2" et ca m'évite d'avoir à recréer un champ.


Il n'est pas nécessaire de recréer un champ

Par contre, petite question encore : sur le champ des numéros, quand je les classe, le classement est étrange, j'ai tout 1 10 1000 10000 et après j'ai 2 200 2000. Il n'y a pas un moyen d'avoir un classement plus cohérent avec 1 2 3 ... 10 11... ? ca vient du format du champ non ?

Merci en tout cas pour l'aide apportée


Oui. Il faut que ce champ soit de type entier (ou rajouter des 0 de cadrage !)


Jean-Marie
Azimut

Hors ligne

 

#14 Fri 21 April 2017 11:11

michel56
Participant assidu
Lieu: Lorient
Date d'inscription: 14 Jul 2012
Messages: 474

Re: QGIS 2.18.1: personnaliser l'étiquette

Bonjour,


Tu as surement mis comme type de champ: "Texte" au lieu de "Entier"


Opérateur cartographique & DAO & PHP.

Hors ligne

 

#15 Fri 21 April 2017 11:44

pedro9magic
Participant actif
Date d'inscription: 19 Jul 2015
Messages: 76

Re: QGIS 2.18.1: personnaliser l'étiquette

Je viens d'essayer de recréer le champ avec 'entier' et j'ai le meme souci.

Hors ligne

 

#16 Fri 21 April 2017 12:01

michel56
Participant assidu
Lieu: Lorient
Date d'inscription: 14 Jul 2012
Messages: 474

Re: QGIS 2.18.1: personnaliser l'étiquette


Opérateur cartographique & DAO & PHP.

Hors ligne

 

#17 Fri 21 April 2017 13:53

pedro9magic
Participant actif
Date d'inscription: 19 Jul 2015
Messages: 76

Re: QGIS 2.18.1: personnaliser l'étiquette

to_int("colonne") ca me met que c'est invalide

Quand je vais dans table management, ca me met pourtant que ma colonne est en integer 10

edit : J'ai créé la colonne par table management et ca marche

Merci a tous pour votre aide

Dernière modification par pedro9magic (Fri 21 April 2017 13:59)

Hors ligne

 

#18 Thu 03 December 2020 10:24

Samuel Pereira Dias
Participant actif
Date d'inscription: 11 May 2015
Messages: 53

Re: QGIS 2.18.1: personnaliser l'étiquette

Bonjour à tous,

J'ai construit une chaine d'expression me permettant d'adapter l'heure en temps universel (car issu des données GPS) en temps local.

Code:

concat(
day( now( )),'-',
month( now( )),'-',
year( now( )),' ',
hour(now( ) )+1,':',
minute(now( )),':',
second( now( )))

Le '+1' etant censé corrigé donc en temps local.. Et là, vous vous direz mais il se prends trop le choux celui-là. Je suis (sais) sûr qu'il existe une commande bien plus directe. Je serai preneur de la bonne fonction corrigeant cela en définissant son fuseau horaire (?)

Mais là n'est pas encore ma question initiale faisant le lien avec ce poste.

Contrairement aux conseils fournis ici pour enlever les 0, moi j'aimerais bien les rajouter pour éviter cela :

Code:

3-12-2020 10:19:5

Mais plutôt obtenir cela:

03-12-2020 10:19:05


J'espère ne pas mettre trompé de post. Je le modifie ci-besoin. smile

Merci !
Samuel

Dernière modification par Samuel Pereira Dias (Thu 03 December 2020 10:58)

Hors ligne

 

#19 Thu 03 December 2020 11:12

Samuel Pereira Dias
Participant actif
Date d'inscription: 11 May 2015
Messages: 53

Re: QGIS 2.18.1: personnaliser l'étiquette

Bonjour à tous,

J'ai construit une chaine d'expression me permettant d'adapter l'heure en temps universel (car issu des données GPS) en temps local.

Code:

concat(
day( now( )),'-',
month( now( )),'-',
year( now( )),' ',
hour(now( ) )+1,':',
minute(now( )),':',
second( now( )))

Le '+1' etant censé corrigé donc en temps local.. Et là, vous vous direz mais il se prends trop le choux celui-là. Je suis (sais) sûr qu'il existe une commande bien plus directe. Je serai preneur de la bonne fonction corrigeant cela en définissant son fuseau horaire (?)

Mais là n'est pas encore ma question initiale faisant le lien avec ce poste.

Contrairement aux conseils fournis ici pour enlever les 0, moi j'aimerais bien les rajouter pour éviter cela :

Code:

3-12-2020 10:19:5

Mais plutôt obtenir cela:

03-12-2020 10:19:05


Merci !
Samuel

Dernière modification par Samuel Pereira Dias (Thu 03 December 2020 11:12)

Hors ligne

 

#20 Thu 03 December 2020 11:13

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

Re: QGIS 2.18.1: personnaliser l'étiquette

Bonjour,
Je ne sais pas s'il y a une fonction qui prend en compte les fuseaux horaires. Mais est-ce que ceci répond à toutes vos questions et vous évite de vous prendre le chou?

Code:

format_date(now() + to_interval('1 hour'),'dd-MM-yyyy hh:mm:ss')

Edit: On pourrait passer un to_string à toute la fonction pour s'assurer d'avoir une chaîne de caractères à stocker, le datetime n'étant pas pris en charge par tous les formats.
Edit2: Évidemment, je vous invite à lire l'aide de format_date pour voir toutes les possibilités qu'elle vous offre

En ligne

 

Pied de page des forums

Powered by FluxBB