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 Mon 15 June 2020 13:56

DivideErr0r
Juste Inscrit !
Date d'inscription: 15 Jun 2020
Messages: 2

QGIS: fournir des scripts python d expressions avec le projet

Bonjour à tous.

J'ai un fichier qgis dont certaines étiquettes ont besoin d'être moulinées par un script python d'expression. (en effet le champ "expression" ne fournit qu'un interpréteur très simplifié de python, et ne me permet pas de faire exactement ce que je veux, je dois passer par un script externe)

Dans le calculateur d'expression, j'utilise l'onglet "éditeur de fonction", et je tape le code qui se retrouve enregistré dans un fichier *.py que l'on peut retrouver dans le répertoire suivant :

C:UsersndevaureAppDataRoamingQGISQGIS3profilesdefaultpythonexpressions
ou
%APPDATA%QGISQGIS3profilesdefaultpythonexpressions

ceci marche très bien.

Pour que cela fonctionne sur un autre poste, il faut alors copier le script *.py dans le bon répertoire.

Je voulais savoir s'il y avait une technique pour intégrer directement le ou les scripts sans avoir à préparer manuellement l'application qgis avec la copie de ces scripts d'expression dans les répertoires.

Comment faire pour que le client puisse avoir les bonnes étiquettes, sans qu'il ait à copier ces scripts au préalable.

Merci par avance si vous avez des pistes d'exploration.

Hors ligne

 

#2 Mon 15 June 2020 16:05

JD
Moderateur
Date d'inscription: 8 Aug 2013
Messages: 725

Re: QGIS: fournir des scripts python d expressions avec le projet

Bonjour,

si vous définissez vos propres fonctions pour qu'elles soient disponibles dans la calculette d'expression par le biais d'un fichier python, il semble délicat de s'en affranchir.

Soit vous créez un plugin pour faciliter l'installation de ses fonctions (vous pouvez voir le plugin reffunctions)
soit vous créez une macro associée au projet qui chargera les fonctions par le biais de la fonction register_function

Au vu du sujet de votre message, vous semblez vous orienter vers le 2e choix mais est-ce que vous avez vraiment besoin de créer vos propres questions ?

Cordialement,

Hors ligne

 

#3 Wed 17 June 2020 11:03

DivideErr0r
Juste Inscrit !
Date d'inscription: 15 Jun 2020
Messages: 2

Re: QGIS: fournir des scripts python d expressions avec le projet

JD, merci beaucoup !!

Merci pour la suggestion d'utiliser register_function
Cette solution marche très bien, voici comment j'ai fait :

dans Projet/Propriétés/Macros j'ai ajouté :

Code:

@qgsfunction(
    args='auto', group='Your group', usesGeometry=False, referencedColumns=[], helpText='Define the help string here')

def get_prises_pbo(feature, parent):
(....code de la fonction....)

puis :

Code:

def openProject():
        
     from qgis.core import QgsExpression
     QgsExpression.registerFunction(get_prises_pbo)

Maintenant, je peux utiliser la fonction  get_prises_pbo dans la valeur de l'etiquette de la geometrie

Merci encore pour votre aide !

Hors ligne

 

Pied de page des forums

Powered by FluxBB