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

GEODATA DAYS 2024

#1 Mon 18 November 2013 13:08

GlaDal
Participant assidu
Date d'inscription: 30 Aug 2013
Messages: 1024

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)]


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

Hors ligne

 

#2 Mon 18 November 2013 14:21

GlaDal
Participant assidu
Date d'inscription: 30 Aug 2013
Messages: 1024

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

 

#4 Mon 18 November 2013 14:36

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

Re: QGIS 2.0 : Emplacement étiquette

Pour complément,

%2 (modulo 2) retourne le reste de la division entière par 2.

Mathieu


Mathieu BOSSAERT
Association GeoRezo

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: 3884

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: 1024

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

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

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

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

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: 3884

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

 

Pied de page des forums

Powered by FluxBB