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 Mon 20 May 2024 15:54

HockYan
Participant occasionnel
Date d'inscription: 21 Apr 2023
Messages: 17

QGIS: Mise en page - Photos HTML

Bonjour à tous,

Je vous sollicite sur un problème que j'ai depuis plusieurs jours maintenant.

Je travaille sur un projet QGIS où j'utilise le mode Atlas pour parcourir des tronçons de cours d'eau (couche linéaire "Cours d'eau"). J'ai une autre couche "Observation" (couche ponctuelle) qui contient des observations liées à ces tronçons. Chaque observation a un identifiant commun avec les tronçons de cours d'eau (Champ "ID_Troncon"). Les observations contiennent un champ avec le chemin d'accès à une photo (champ "OBS_PHOTO1"). Les chemins d'accès aux photos sont relatifs au dossier où se trouve le projet QGIS. Par exemple : 'DCIM/nomdelaphoto.jpg'

Objectif :
Je souhaite afficher les photos correspondant aux observations pour chaque tronçon de cours d'eau directement dans la mise en page Atlas. Chaque tronçon peut avoir un nombre variable d'observations et donc de photos associées.

Je pense que la meilleure approche est d'ajouter un objet HTML dans ma mise en page. Pour cela, j'ai mis le code suivant sur l'objet HTML :

Code:

<img src="file:///[%@project_folder%]/[%aggregate('Observation', 'concatenate', "OBS_PHOTO1", "ID_Troncon"=attribute(@atlas_feature, 'ID_Troncon'))%]" width = "200"/>

Cela aggrège les valeurs du champ "OBS_PHOTO1"pour les entités de la couche 'Observation' qui ont le même identifiant de tronçon ("ID_Troncon") que l'entité actuellement affichée dans l'Atlas. Cependant, j'ai juste un carré bleu avec un point d'interrogation qui apparait.

Comment puis-je configurer correctement mon objet HTML afin d'afficher les photos des observations ponctuelles directement dans la mise en page de l'Atlas en fonction du tronçon de cours d'eau actuellement affiché ? Y a-t-il une meilleure approche ou des étapes spécifiques que je devrais suivre pour résoudre ce problème ?

Merci par avance de vos réponses, Yan

Hors ligne

 

#2 Mon 20 May 2024 16:32

LPlante
Participant occasionnel
Date d'inscription: 17 Nov 2021
Messages: 44

Re: QGIS: Mise en page - Photos HTML

Bonjour
Est ce que les variables [%@project_folder%] et [%aggregate...%] se trouvant à l'intérieur des "" de "file .... " width  ne seraient pas considérés comme du text brut par hasard?
Le code couleur du code devrait donner la réponse.
La balise HTML d'image fonctionne bien mais ne retrouve pas le chemin marqué en dur et non la variable souhaitée (d'où le point d’interrogation)

Le concat va assembler les balises HTML en texte brut et les variables qgis.

 

Code:

concat('<img src="file:///',[%@project_folder%],'/',[%aggregate('Observation', 'concatenate', "OBS_PHOTO1", "ID_Troncon"=attribute(@atlas_feature, 'ID_Troncon'))%],'" width = "200"/>'

Dernière modification par LPlante (Mon 20 May 2024 16:37)

Hors ligne

 

#3 Fri 24 May 2024 11:04

HockYan
Participant occasionnel
Date d'inscription: 21 Apr 2023
Messages: 17

Re: QGIS: Mise en page - Photos HTML

Bonjour,

Les deux variables ne sont pas des textes brut. J'ai réalisé un test de ce code, en modifiant la variable [%aggregate%] par [%"OBS_PHOTO1"%], afin d'afficher les photos à l'aide de l'infobulle directement sur ma couche 'observation' et cela fonctionne.

En rajoutant la fonction 'concat(', j'ai toujours le carré bleu avec le point d'interrogation mais avec le mot concat(' juste devant (cf photo jointe).

Je dois oublier quelque chose dans mon code mais je ne sais quoi.

Yan


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

Hors ligne

 

#4 Fri 24 May 2024 12:17

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

Re: QGIS: Mise en page - Photos HTML

Bonjour,
Il vous faut inverser la logique, à savoir, au lieu de concaténer les résultats de l'agrégat (et donc d'une liste des noms de photosdans votre référence HTML) , il vous faut agréger/concaténer les références/chemins renvoyant à chaque photo. Bon peut-être (!) pas très clair mais le code le sera peut-être plus (PS: j'ai pas testé avec la variable project_folder)

Code:

[%aggregate(
  'Observation',
  'concatenate',
  concat(
    '<img src="file:///',
    @project_folder,
    "OBS_PHOTO1",
    '" width = "500"/>'
  ),
  "ID_Troncon"=attribute(@atlas_feature, 'ID_Troncon'),
  '\n'
)%]

Hors ligne

 

#5 Fri 24 May 2024 15:23

HockYan
Participant occasionnel
Date d'inscription: 21 Apr 2023
Messages: 17

Re: QGIS: Mise en page - Photos HTML

Bonjour,

Merci pour votre réponse SANTANA. En modifiant mon code avec le votre, j'ai un nombre de carré qui s'affichait en fonction de mon atlas courant. Cependant, j'avais toujours le problème des photos qui ne s'affichait pas (Carré bleu avec le point d'interrogation). Pour y remédier, j'ai rajouté '/' dans la fonction concat. Ce qui donne le code suivant :

Code:

[%aggregate('Observation',  
'concatenate',
  concat(
    '<img src="file:///',
    @project_folder,'/',
    "OBS_PHOTO1",
    '" width = "200"/>'
  ),
  "ID_Troncon"=attribute(@atlas_feature, 'ID_Troncon'),
  '\n'
)%]

Avec ce code j'ai les photos qui apparaissent !

Merci beaucoup pour votre aide !
Yan

Dernière modification par HockYan (Fri 24 May 2024 17:02)

Hors ligne

 

#6 Tue 20 August 2024 10:01

HockYan
Participant occasionnel
Date d'inscription: 21 Apr 2023
Messages: 17

Re: QGIS: Mise en page - Photos HTML

Bonjour,

Je me permet de relancer le sujet.

J'essaye maintenant de mettre un titre à chacune de mes photos à l'aide d'un ID déjà présent dans mon champ 'ID_OBS_V2' de ma couche point 'OBS_G1'.

Pour cela je fais le code suivant :

Code:

[%aggregate(
  'OBS_G1_22ca1d6b_8ec0_4e67_8fa9_014da6655236',  
  'concatenate',
  concat(
    '<div style="margin-bottom: 20px;">',
    '<p style="text-align: center;">', "ID_OBS_V2", '</p>',
    '<img src="file:///',
    @project_folder,'/',
    "PHOTO1",
    '" width="300" style="display:block; margin:auto;"/>',
    '</div>'
  ),
  "ID_Troncon"=attribute(@atlas_feature, 'ID_Troncon'),
  '\n'
)
%]

Le code fonctionne bien. Il me met bien les titres de mon ID pour chaque photo. Cependant, mes photos se mettent l'une en dessous de l'autre et dépasse ma page (cf. pdf : 2ème page). J'aimerais bien garder la mise en page de base (cf. pdf : 1ère page) mais avec les titres. Est-ce que cela est possible ?

Yan


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

Hors ligne

 

Pied de page des forums

Powered by FluxBB