Pages: 1
- Sujet précédent - QGIS: Formulaire d'attribut utilisant les valeurs de N champs - Sujet suivant
#1 Tue 17 January 2023 12:49
- Maxime.C/117
- Juste Inscrit !
- Date d'inscription: 18 Nov 2018
- Messages: 5
QGIS: Formulaire d'attribut utilisant les valeurs de N champs
Bonjour à tous,
Je travaille actuellement sur la réalisation d'un formulaire d'attributs pouvant être utilisés avec Qfield, avec Qgis 3.14.16
La majorité des champs sont déjà automatisés (certains grâce à des formules/astuces trouver sur ce forum, merci aux autres utilisateurs pour ça ).
Cependant, un dernier champ me pose problème...
Pour poser le contexte :
Le Qfield doit faire office de carnet de terrain pour des personnes faisant du scanner dans des bâtiments, le Qfield inclut alors les plans du bâtiment en question (des DXF convertis en plusieurs SHP non éditables) et un shape point pour préciser la position du scan et les remarques éventuelles (simple).
En plus des scans, une tête panoramique est également utilisée, cette dernière prend à chaque fois 405 photos et les numéros de début et de fin d'acquisition photos doivent être relevés.
Afin de faciliter l'utilisation aux équipes, j'avais écrit une première formule permettant de remplir les champs Photo1 (Alias "Numéro Début Photo") et Photo2 (Alias "Numéro Fin Photo") relativement simple dans le formulaire d'attribut (cf pièces jointes de la table attributaire).
Le champ "Photo1" a pour formule : IF ("Photo1" is NULL,maximum("Photo2")+1, "Photo1")
et le champs "Photo2" : IF ("Photo2" is NULL,("Photo1")+405, "Photo2")
Ces formules fonctionnent très bien, mais suite au 1er retour d'utilisation des équipes, le soucis est qu'ils ont parfois besoin de reprendre le numéro de photos à 1 (lors d'un changement ou d'un vidage de leur carte SD).
J'avais laisser le champs éditable au cas où, justement, il y avait un soucis lors de l'acquisition et qu'ils aient besoin de modifier manuellement le champs.
Cependant, lorsqu'ils souhaitent reprendre à 1, la formule va chercher le maximum de la colonne Photo2 a chaque fois et ils doivent donc faire toute la suite de la manipulation manuellement...
Du coup, j'avais dans l'idée de modifié la formule du champs "Photo1" en faisant intervenir mon champ "id" (Automatisé avec la formule IF("id" is NULL,maximum("id")+1,"id")).
J'ai essayé plusieurs formules y compris des requêtes utilisant CASE... WHEN... THEN... ELSE comme par exemple :
CASE
WHEN "Photo1" IS NULL THEN (aggregate('SHP_Test_Formule','max',"Photo2",'id' < "id")) - 1
ELSE "Photo1"
END
Qgis accepte la formule, mais celle-ci renvoie toujours un résultat "Null" ...
Je souhaiterais donc savoir si ma formule était sur la bonne voie (mais peut-être avec une erreur de syntaxe ou autre) ou s'il existait une formule complètement différente qui me permettrait d'incrémenter mon champ "Photo1" en prenant la valeur "Photo2"+1 de l'entité précédente lors de la création d'une nouvelle entité.
En vous remerciant par avance pour vos réponses et en vous souhaitant mes meilleurs vœux pour ce début d'année.
Cordialement,
Hors ligne
#2 Tue 24 January 2023 15:33
- Maxime.C/117
- Juste Inscrit !
- Date d'inscription: 18 Nov 2018
- Messages: 5
Re: QGIS: Formulaire d'attribut utilisant les valeurs de N champs
Bonjour à tous,
Je reviens vers vous par rapport aux problèmes de mon précédent message.
J'ai pu obtenir une nouvelle information auprès d'un collègue, qui a enfin pu m'expliquer pourquoi ils avaient impérativement besoin de retourner à la valeur 1 pour leurs photos.
Sans parler forcément de changement de carte SD, il s'agit surtout du fonctionnement de la mémoire de l'appareil.
A partir du moment où l'appareil atteint 9 999 photos, ce dernier créer un nouveau dossier sur la carte SD et reprends à 1 tout en continuant son acquisition et l'incrémentation des photos.
Grâce à cette valeur seuil, j'ai pu établir de nouvelles formules dans mon formulaire d'attribut QGIS.
Les formules ne permettent pas de prendre en compte les valeurs de photos de l'entité précédente (en utilisant un id-1 ou quelque chose comme cela) lors de la création d'une nouvelle entité, mais le résultat attendu est là !
Afin de pouvoir utilisé des maximums différents lors du retour à 1, j'ai créer un nouveau champ photos s'incrémentant seulement à partir du retour à 1 et les formules font chacune intervenir les 3 champs photos.
Pour les curieux qui pourrait avoir ce besoin je les poste ici :
Pour le champ Photo 1 :
IF(maximum("LastPhotos") > 0 , maximum("LastPhotos") + 1,
IF(maximum("Photo1") > 9700 AND minimum("Photo2") < 405, maximum("Photo2")+ 405 - 9999 + 1,
IF("Photo1" is NULL and minimum("Photo2") > 405, maximum("Photo2") + 1,
"Photo1")))
#############################################
Pour le champ Photo2 :
IF(minimum("Photo2") < 405,("Photo1")+405,
IF(maximum("Photo2") > 9700 and maximum("Photo1") > 9700, maximum("LastPhotos"),
IF(maximum("Photo2") > 9700, maximum("Photo2") + 405 - 9999,
IF("Photo2" is NULL,("Photo1")+405,
"Photo2"))))
#############################################
Pour le 3eme champ "LastPhotos" (le nom sera changé plus tard):
IF(maximum("Photo1")>9700, ("Photo2"),
IF(minimum("Photo2") < 405 ,("Photo1") + 405,
"LastPhotos"))
Vous pouvez observer le résultat dans l'export XLSX en pièce jointe.
Ce n'est sans doute pas le plus optimisé, ni parfait. Cependant, cela permet de créer environ une cinquantaine de point avec un shape avant d'avoir à nouveau un problème de numéro de photos passant au dessus de 10 000. Problème que je résoudrais sans doute en créant un quatrième champ photos si le besoin se fait sentir.
En espérant que cela pourra inspirer quelques personnes
Cordialement,
Dernière modification par Maxime.C/117 (Tue 24 January 2023 15:34)
Hors ligne
Pages: 1
- Sujet précédent - QGIS: Formulaire d'attribut utilisant les valeurs de N champs - Sujet suivant