Annonce
Pour sa 21ème année, l’association GeoRezo a toujours besoin de vous !
10€ = 1 mois de frais bancaires ; 15€ = 12 mois de nom de domaine ; 30€ = 1 semaine de location des serveurs …
Retrouver nos membres bienfaiteurs
#1 Mon 18 November 2013 13:08
- GlaDal
- Participant assidu
- Date d'inscription: 30 Aug 2013
- Messages: 1104
QGIS 2.0 : Emplacement étiquette
Bonjour à tous !
Je reviens vers vous car je cherche à exploiter au maximum les possibilités d'étiquetage de la version 2 de Qgis.
J'aurai certainement plusieurs questions tout au long de la semaine, merci d'avance à tous ceux qui vont m'aider ! :-)
Voici mes premières questions (j'ai mis en pièce-jointe un exemple qui illustrera mes propos) :
- Est-il possible de sélectionner dans ma table attributaire les numéros impairs (puis pairs) ? Quelle est l'expression adéquate ?
- J'aimerais utiliser la valeur d'un champ pour définir le décalage en X et en Y de mes étiquettes mais je ne comprends pas quelle est le type d'entrée attendue. Dans la description, il est indiquée "double coord [X,Y] as <= 0.0 =>" . Faut-il que je concatène mes coordonnées Y et X (auxquelles j'aurai appliquées un retranchement de 2m) ? (ca n'a pas l'air de fonctionner !)
Voici pour mes premières questions !
Merci d'avance !
GlaDal
[EDIT modération : remplacement du bmp par un jpg (plus léger et lisible sans téléchargement)]
Hors ligne
#2 Mon 18 November 2013 14:21
- GlaDal
- Participant assidu
- Date d'inscription: 30 Aug 2013
- Messages: 1104
Re: QGIS 2.0 : Emplacement étiquette
Autre question fondamentale !
Que me conseillez vous :
- Créer une couche d'étiquetage indépendante de ma couche à étiqueter OU rajouter des champs dans la table attributaire ma couche à étiqueter puis paramétrer l’étiquetage en fonction de ces champs ?
En sachant que j'ai plusieurs couches à étiqueter, que j'ai plusieurs illustrations à réaliser et ceci à différentes échelles !
Merci !
Dernière modification par GlaDal (Mon 18 November 2013 14:22)
Hors ligne
#3 Mon 18 November 2013 14:28
- tqhien
- Participant actif
- Lieu: Clamart
- Date d'inscription: 22 Apr 2011
- Messages: 78
Re: QGIS 2.0 : Emplacement étiquette
Bonjour,
- pour la parité : var % 2 = 0 (pour les pairs) et var % 2 = 1 (pour les impairs)
- pour le décalage : activer les expressions et mettre dans l'éditeur d'expression varX || ',' || varY ou générer une chaine de caractères donnant 'X,Y', par exemple '0.0,0.0' (qui ne décale rien ici)
ou tostring(X*X) || ',0.0' qui décale selon le carré de X
Hien.
Hors ligne
#5 Mon 18 November 2013 14:38
- tqhien
- Participant actif
- Lieu: Clamart
- Date d'inscription: 22 Apr 2011
- Messages: 78
Re: QGIS 2.0 : Emplacement étiquette
Pour le complément, un plugin existe : layer to labeled layer qui rajoute des champs à la couche, permettant de définir plusieurs propriétés de l'étiquette. Mais cela ne fonctionne pas sur un couche Postgis.
Sinon, effectivement, préparer en amont la couche en rajoutant le nombre de champs nécessaires (X et Y pour chaque échelle/illustration) et paramétrer chaque copie de la couche avec les paramètres adéquats (meilleur lien entre les données d'origine et les étiquettes en cas de modification de la table).
Cordialement.
Hien.
Hors ligne
#6 Mon 18 November 2013 14:51
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3947
Re: QGIS 2.0 : Emplacement étiquette
Bonjour,
Pour le pair et l'impair, ce devrait être l'opérateur modulo (%). Par contre pour son utilisation, je ne saurai t'en dire plus étant donné qu'une requête du genre
Code:
CASE WHEN "monchamp" % 2 then "monchamp" ELSE 'tata' END
me renvoie mes étiquettes impairs et 'tata' pour les valeurs paires alors que c'est l'inverse que j'aurais espéré.
Pour ce qui est du décalage, il me semble que des chaînes, entiers ou décimaux (ligne : type de champ) sont acceptés dans chacun des champs X et Y. Mais j'ai pas vraiment regardé le fonctionnement.
Hors ligne
#7 Mon 18 November 2013 15:05
- GlaDal
- Participant assidu
- Date d'inscription: 30 Aug 2013
- Messages: 1104
Re: QGIS 2.0 : Emplacement étiquette
J'aime... les expressions ! C'est tellement efficace mais il me reste beaucoup à apprendre !
Merci tqqhien, l'expression que tu m'as proposée fonctionne à merveille, il ne me reste plus qu'à regarder sur Internet pour comprendre exactement ce que % fait ! Pour ce qui est de la création de couche d'étiquette, MMQGIS le fait également.
Tu parles de copie de couche, j'imagine que tu as une copie de couche par échelle, exact ?
SANTANNA, je regarde de suite pour utiliser la fonction CASE WHEN... en plus du modulo
MathieuB, merci mais je ne pense pas en avoir besoin !
Question subsidiaire : Quelle formation, ou document existent-ils pour apprendre à utiliser correctement la calculatrice de champs ?
Merci à tous !
Dernière modification par GlaDal (Mon 18 November 2013 15:06)
Hors ligne
#8 Mon 18 November 2013 15:12
Re: QGIS 2.0 : Emplacement étiquette
Ceci fonctionne chez moi :
Code:
CASE WHEN "monchamp" % 2 = 0 then 'pair' ELSE 'impair' END
@Santanna & tqhien
Il faut bien tester la valeur de modulo 2 et non son existence :
"monchamp" % 2 équivaut à "monchamp" % 2 IS TRUE donc quand "monchamp" % 2 retourne 0, l'expression est évaluée comme "faux"et c'est donc tata qui est renvoyé.
Mathieu BOSSAERT
Association GeoRezo
Hors ligne
#9 Mon 18 November 2013 15:22
- tqhien
- Participant actif
- Lieu: Clamart
- Date d'inscription: 22 Apr 2011
- Messages: 78
Re: QGIS 2.0 : Emplacement étiquette
Pour la calculatrice de champs, c'est équivalent à du python, donc il suffit de regarder un tutoriel dans ce langage pour construire ses expressions.
Comme l'a dit MathieuB, l'opérateur % donne le reste de la division (entière) de A par B : 9 % 4 = 1 car 9 = 4 * 2 + 1
@SANTANNA : il suffit de décaler la parité : un CASE WHEN ("monchamp" + 1) % 2 THEN "monchamp" else 'tata' END suffit
Pour l'affichage des pairs/impairs, plusieurs méthodes sont possibles :
- dupliquer la couche et les filtrer : une fois pour les pairs selon la formule donnée plus haut, et une autre fois avec la deuxième formule
- par l'affichage : selon les règles : créer une règle "(var+1) % 2" pour les pairs (sans la partie = ). Les entitées paires renvoient une valeur 1 (Vrai) à ce filtre, les autres renvoient 0 (faux) et personnaliser le rendu pour cette règle et pour la classe par défaut
Cordialement.
Hien.
Dernière modification par tqhien (Mon 18 November 2013 15:24)
Hors ligne
#10 Mon 18 November 2013 15:50
Re: QGIS 2.0 : Emplacement étiquette
il suffit de décaler la parité : un CASE WHEN ("monchamp" + 1) % 2 THEN "monchamp" else 'tata' END suffit
Je vais paraitre entêté mais même si la syntaxe proposée fonctionne avec QGis qui semble considérer que l'entier 0 équivaut au booléen 'false', la manière la plus logique et généralisable de vérifier que "monchamp" % 2 = 0 est bien
Code:
("monchamp") % 2 = 0
Le test logique se fait bien sur la valeur du modulo et non sur son existence.
Mathieu BOSSAERT
Association GeoRezo
Hors ligne
#11 Mon 18 November 2013 15:52
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3947
Re: QGIS 2.0 : Emplacement étiquette
J'avais bien essayé avec l'égalité dans la condition mais j'avais la notification " l'expression est invalide" donc je me suis rabattu sur cette écriture. J'avais dû zapper une apostrophe ou un truc du genre. ça marche en effet chez moi.
@SANTANNA : il suffit de décaler la parité : un CASE WHEN ("monchamp" + 1) % 2 THEN "monchamp" else 'tata' END suffit
C'est surtout ce qui me semblait être une incohérence que j'essayais de relever. Mais effectivement avec le rappel de Matthieu sur le test de la valeur et non l'existence du modulo, je comprends mieux mon erreur.
@tqhien : Pour ce qui est de l'affichage personnalisé, qu'entends-tu par selon les règles. Est-ce de l'utilisation des fenêtres définies par des valeurs telle qu'évoquée dans cette discussion post 2 dont tu parles ou est-ce encore autre chose?
Hors ligne
#12 Tue 19 November 2013 10:03
- tqhien
- Participant actif
- Lieu: Clamart
- Date d'inscription: 22 Apr 2011
- Messages: 78
Re: QGIS 2.0 : Emplacement étiquette
Pour l'affichage personnalisé, c'est dans le rendu su style de la couche : on a le choix entre rendu unique, catégorisé, gradué, ou ensemble de règles. Mon post concernait ce dernier choix, qui permet des règles complexes pour le rendu d'une couche.
Hors ligne