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

State Of The Map 2024

#1 Thu 09 April 2020 17:53

Renaud_NM
Participant actif
Date d'inscription: 13 Sep 2019
Messages: 84

QGIS: Utilisation de l'extension reffunctions dans QField

Bonjour,

Je viens de réaliser une formulaire en utilisant l'extension refFunctions et l'option "geomwithin".
j'ai exporté ce projet avec QField Sync sur une tablette.
je constate que "geomwithin" ne fonctionne pas.

Merci par avance pour votre aide, Cdlt

Hors ligne

 

#2 Sat 02 May 2020 19:26

Pivès001
Participant actif
Date d'inscription: 23 Jan 2008
Messages: 138

Re: QGIS: Utilisation de l'extension reffunctions dans QField

Bonjour,

refFunctions ne fonctionnera pas avec QField, c'est une extension pour l'application desktop uniquement (ses fonctions ne sont pas portées sur l'application).

J'ai eu le même soucis et pour contourner le problème j'ai utilisé une fonction native de QGIS permettant de mettre des couches en relation : aggregate. La syntaxe est la suivante :

Code:

aggregate( 
    layer:='Ma couche de polygones', 
    aggregate:='max', 
    expression:="mon champ", 
    filter:=intersects( $geometry, geometry( @parent ) ) 
)

layer correspond au nom de la couche dans le projet QGIS et expression au nom du champ d'intérêt. Il est aussi possible d'utiliser son alias, si il en a un. Attention à bien respecter les simples et double-quotes, c'est sensible à la case.

J'utilise ici un agrégat de type max car je souhaite récupérer un attribut en integer. On pourrait très bien utiliser un agrégat sur des contenus de type texte avec un concaténateur mais dans ce cas il faudrait convertir l'expression en texte

Code:

expression:=to_string("mon champ")

Cela marchera très bien dans QGIS desktop mais pas dans QField car QFieldSync renomme les champs lors de l'export. Il faut donc adapter l'expression spécialement pour QField et ajouter (offline) au nom de la couche :

Code:

aggregate(     
    layer:=coalesce(layer_property('Ma couche de polygones','name'),layer_property('Ma couche de polygones (offline)','name')),
    aggregate:='max', 
    expression:="mon champ", 
    filter:=intersects( $geometry, geometry( @parent ) ) 
)

A suivre : https://github.com/opengisch/QField/issues/828

Un peu de lecture utile :

https://qfield.org/docs/en/project-mana … s.html#id1
https://www.qgis.org/en/site/forusers/v … -functions
https://docs.qgis.org/3.10/en/docs/user … -functions

Dernière modification par Pivès001 (Sun 03 May 2020 08:43)

Hors ligne

 

Pied de page des forums

Powered by FluxBB