Pages: 1
- Sujet précédent - QGIS: differencier le fond de carte selon un attribut dans un rapport - Sujet suivant
#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
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
Pages: 1
- Sujet précédent - QGIS: differencier le fond de carte selon un attribut dans un rapport - Sujet suivant