#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.
Hors ligne
#6 Wed 19 April 2017 16:55
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
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
#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
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
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
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
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.
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
regarde ce post:
https://georezo.net/forum/viewtopic.php?pid=285332
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.
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
Hors ligne