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 Fri 02 August 2024 16:15

laurent00
Participant assidu
Date d'inscription: 6 Aug 2007
Messages: 402

QGIS: differencier le fond de carte selon un attribut dans un rapport

bonjour
dans un rapport ou un atlas d'ailleurs, je souhaite que le fond de carte qui s'affiche change selon un attribut de ma couche,
j'ai pour cela créer un champ avec au choix Google ou Bing, et donc dans mon atlas/rapport je souhaiterai que le fond de carte varie selon ce champ
ou et comment appeler ce fond de carte ?
LJ

Dernière modification par laurent00 (Fri 02 August 2024 16:16)

Hors ligne

 

#2 Fri 02 August 2024 16:57

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

Re: QGIS: differencier le fond de carte selon un attribut dans un rapport

Bonjour,
Vous pouvez créer deux thèmes de carte utilisant l'un ou l'autre des fonds Google/Bing et dans les paramètres "Couches" de l'objet carte, utiliser une expression qui selon la valeur du champ ira sélectionner le bon thème de carte.

Hors ligne

 

#3 Fri 02 August 2024 17:10

laurent00
Participant assidu
Date d'inscription: 6 Aug 2007
Messages: 402

Re: QGIS: differencier le fond de carte selon un attribut dans un rapport

oui merci c'est ce que je viens de faire, je fais varier ensuite l'opacité de la couche selon  la valeur du champ
mais j'ai aussi des atlas qui appellent sur une même page différent id et si j'utilise le champ directement il me l'applique à toutes les cartes d'une page
par exemple
cette formule me renvoi le satellite du "fid" et non du "fid"+5 que j'aimerais

Code:

CASE 
    WHEN "fid" + 5 >  count( "fid" )
        Then 0
    WHEN "satellite" = 'Bing'
        Then 0
    ELSE 100
END

Hors ligne

 

#4 Fri 02 August 2024 17:27

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

Re: QGIS: differencier le fond de carte selon un attribut dans un rapport

mais j'ai aussi des atlas qui appellent sur une même page différent id


Désolé mais je vois pas comment vous avez des atlas dans une même mise en page

cette formule me renvoi le satellite du "fid" et non du "fid"+5 que j'aimerais


Je me trompe peut-être mais la formule serait pour la transparence, non? pas le satellite!
Bref, j'avoue ne pas du tout comprendre votre message, ni bien visualiser la structure de votre projet.

Hors ligne

 

#5 Fri 02 August 2024 18:01

laurent00
Participant assidu
Date d'inscription: 6 Aug 2007
Messages: 402

Re: QGIS: differencier le fond de carte selon un attribut dans un rapport

voici un exemple de catalogue que je réalise
https://ressources.ingall-niger.org/doc … _typeA.pdf
une page contient en fait 24 lignes de ma table, pour cela je fais varier les coordonnées de chacune des petites cartes avec cette formule pour les 4 coorodnnées d'emprise

Code:

with_variable( 'w',
   bounds_width( map_get(item_variables('map1'),'map_extent')),
   x(geometry(get_feature_by_id( @atlas_layername,  @atlas_featureid + 5 )))-@w/2)

Hors ligne

 

#6 Mon 05 August 2024 09:55

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

Re: QGIS: differencier le fond de carte selon un attribut dans un rapport

Bonjour,
Si je comprends bien, toutes les entités de la couche ne sont pas atlas_feature, juste celles dont l'id serait modulo 24. Et dans la page, le "@atlas_featureid+5" va varier jusqu'à +23.
Si j'ai bon, est-ce que vous pourriez réexpliquer du coup la difficulté que vous rencontrez avec la transparence?

Hors ligne

 

#7 Mon 05 August 2024 10:19

laurent00
Participant assidu
Date d'inscription: 6 Aug 2007
Messages: 402

Re: QGIS: differencier le fond de carte selon un attribut dans un rapport

merci
dans cette formule qui gère ma transparence, le premier When cherche le fid+5 alors que le second When ramène la donnée satellite du fid
alors que je veux récupérer la donnée satellite du fid+5

Code:

CASE 
    WHEN "fid" + 5 >  count( "fid" )
        Then 0
    WHEN "satellite" = 'Bing'
        Then 0
    ELSE 100
END

LJ

Hors ligne

 

#8 Mon 05 August 2024 10:51

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

Re: QGIS: differencier le fond de carte selon un attribut dans un rapport

Bonjour Laurent,

J'ai consulté le site internet où vous mettez à disposition les bases de données d'inventaire des différents sites détectés. Je trouve 'risqué' de mettre à disposition de tout un chacun ces informations géoréférencées.

Travail par ailleurs intéressant.

Bien à vous.

Hors ligne

 

#9 Mon 05 August 2024 11:13

laurent00
Participant assidu
Date d'inscription: 6 Aug 2007
Messages: 402

Re: QGIS: differencier le fond de carte selon un attribut dans un rapport

GlaDal a écrit:

Je trouve 'risqué' de mettre à disposition de tout un chacun ces informations géoréférencées. .


oui c'est bien sur un questionnement qu'il faut avoir;
Heureusement aucun trésor à l'intérieur de ces 'tas de pierre', seulement des ossements et quelques céramiques sans valeur pécuniaire,
les pilleurs sont dans tous les cas déjà passés et pas seulement actuellement, les Touareg de cette région connaissent très bien ces monuments.
je connais aussi nombre de chercheurs académiques qui utilisent Google Earth pour ce type de travaux et mettent ainsi leur données surement plus sensibles que les miennes à au bon vouloir de Google et de son modèle économique ...
de plus en plus dans cette région ces tas de pierre servent effectivement de tas de pierre cad que certains les ramassent pour faire des routes et autres construction, nous essayons aussi de travailler avec les populations pour les sensibiliser sur ce patrimoine archéologique

LJ

Dernière modification par laurent00 (Mon 05 August 2024 11:14)

Hors ligne

 

#10 Mon 05 August 2024 11:16

laurent00
Participant assidu
Date d'inscription: 6 Aug 2007
Messages: 402

Re: QGIS: differencier le fond de carte selon un attribut dans un rapport

erreur

Dernière modification par laurent00 (Mon 05 August 2024 11:58)

Hors ligne

 

#11 Mon 05 August 2024 12:46

laurent00
Participant assidu
Date d'inscription: 6 Aug 2007
Messages: 402

Re: QGIS: differencier le fond de carte selon un attribut dans un rapport

le + 1 de cette formule empêche l'expression d'être valide !?

Code:

if( attribute(  $currentfeature +1  , 'satellite' ) = 'Bing',    0, 100)

Erreur d'évaluation: Impossible de convertir '' en double

Dernière modification par laurent00 (Mon 05 August 2024 12:47)

Hors ligne

 

#12 Mon 05 August 2024 23:17

laurent00
Participant assidu
Date d'inscription: 6 Aug 2007
Messages: 402

Re: QGIS: differencier le fond de carte selon un attribut dans un rapport

a priori cette formule fonctionne, elle fait varier le thème de la carte

Code:

if(attributes( (get_feature_by_id( @atlas_layername,  @atlas_featureid + 5 )) )['satellite'] = 'Bing', 'Bing', 'Google')

Hors ligne

 

#13 Tue 06 August 2024 21:34

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

Re: QGIS: differencier le fond de carte selon un attribut dans un rapport

Bonjour,
Juste pour expliquer 2 ou 3 trucs si besoin.

dans cette formule qui gère ma transparence, le premier When cherche le fid+5 alors que le second When ramène la donnée satellite du fid


J'avoue ne pas comprendre la finalité de l'expression mais de manière générale, lorsque vous faites appel à "monchamp" avec un atlas actif, "monchamp" renvoie la valeur de l'entité de l'atlas. Pour faire appel à une autre entité, il faut passer par des fonctions comme get_feature* et attribute*. ce que vous avez fait finalement dans vos derniers messages.

le + 1 de cette formule empêche l'expression d'être valide !?


Oui. $currentfeature renvoie une entité, pas une valeur numérique qu'on pourrait incrémenter.

if(attributes( (get_feature_by_id( @atlas_layername,  @atlas_featureid + 5 )) )['satellite'] = 'Bing', 'Bing', 'Google')


Si le champ satellite est renseigné pour toutes les entités avec 'Bing' ou 'Google', vous pouvez vous passer de la conditionnalité et ceci devrait l'affaire:

Code:

attributes( get_feature_by_id( @atlas_layername,  @atlas_featureid + 5 ) )['satellite']

Et dans la même veine, est-ce que ceci fonctionne?

Code:

attribute( get_feature_by_id( @atlas_layername,  @atlas_featureid + 5 ), 'satellite')

EDIT: correction fonction

Dernière modification par SANTANNA (Tue 06 August 2024 22:03)

Hors ligne

 

#14 Tue 06 August 2024 22:01

laurent00
Participant assidu
Date d'inscription: 6 Aug 2007
Messages: 402

Re: QGIS: differencier le fond de carte selon un attribut dans un rapport

merci des précisions
les deux formules fonctionnent moyennant une ) à la fin de la seconde plutôt que le crochet

Hors ligne

 

Pied de page des forums

Powered by FluxBB