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

Printemps des cartes 2024

#1 Fri 04 June 2021 12:35

Alicemartin
Participant occasionnel
Date d'inscription: 30 Jun 2013
Messages: 48

Utiliser les fonctionnalités de GRASS dans FME ?

Bonjour,

Quelqu'un a-t-il déjà utilisé les fonctionnalités de Grass dans FME ? Apparemment c'est possible d'utiliser une API (voir https://community.safe.com/s/question/0 … me-project), mais malheureusement je ne comprends pas les étapes qu'il faut suivre pour y arriver (je suis géomaticienne et j'atteins mes limites en informatique...). Quelqu'un l'aurait-il déjà fait et pourrait me guider, au moins sur les premières étapes à suivre ?

Belle journée à tous.

AM

Hors ligne

 

#2 Fri 04 June 2021 19:17

Alicemartin
Participant occasionnel
Date d'inscription: 30 Jun 2013
Messages: 48

Re: Utiliser les fonctionnalités de GRASS dans FME ?

Re-bonjour,

Je tiens une piste qui donnera ce qu'elle donnera : j'essaie de faire un script python qui utilise Grass et, une fois qu'il fonctionnera, j'essayerai de le faire fonctionner avec le transformer PythonCaller.

Je vous détaille les étapes que j'ai suivi jusqu'ici et qui serviront peut être à d'autre :
1/ j'ai installé Python 3.9.5 64bit pour windows à l'aide du fichier Windows installer (64-bit) téléchargeable sur https://www.python.org/downloads/release/python-395/
2/ j'ai lancé python depuis le bouton windows comme un logiciel classique
3/ dans la fenêtre qui s'ouvre, j'ai lancé le script ci-dessous, adapté d'un script trouvé sur https://grass.osgeo.org/grass74/manuals … ript.setup (les éléments entre crochets sont à adapter)

Code:

import os
import sys
import subprocess

gisdb = os.path.join(os.path.expanduser("~"), "[chemin d'accès d'une base Grass, à paramétrer avant]")


location = "[nom d'un secteur, à paramétrer avant sur Grass"
mapset = "[nom d'un jeu de données, à paramétrer avant sur Grass]"


grass7bin = r'[lien vers le fichier grass78.bat de Grass, pour moi C:\Program Files\QGIS 3.10\bin\grass78.bat]'

startcmd = [grass7bin, '--config', 'path']
try:
    p = subprocess.Popen(startcmd, shell=False,
                         stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    out, err = p.communicate()
except OSError as error:
    sys.exit("ERROR: Cannot find GRASS GIS start script"
             " {cmd}: {error}".format(cmd=startcmd[0], error=error))
if p.returncode != 0:
    sys.exit("ERROR: Issues running GRASS GIS start script"
             " {cmd}: {error}"
             .format(cmd=' '.join(startcmd), error=err))
gisbase = out.strip(os.linesep)

Malheureusement, je bute déjà sur un message d'erreur suite à une erreur de syntaxe sur la commande

Code:

if p.returncode != 0:

Quelqu'un aurait-il une idée de la bonne syntaxe à appliquer pour que ce début de code fonctionne ?

Hors ligne

 

#3 Mon 07 June 2021 07:53

antoine guillot
Participant actif
Date d'inscription: 5 Sep 2008
Messages: 62

Re: Utiliser les fonctionnalités de GRASS dans FME ?

Bonjour,

Vous pouvez plus directement appeler votre script .bat GRASS dans SystemCaller. Pour le reste le python peut aussi être utile et formateur mais plus si vous utilisez l'API de GRASS, pas juste un subprocess.
Enfin souvent cela nécessitera de créer un output temporaire dans FME qui sert de source pour GRASS et de lire le résultat généré par votre script. Pour ces points : TempPathnameCreator, FeatureWriter et FeatureReader sont pratiques.

Bon courage,
Antoine.

Hors ligne

 

Pied de page des forums

Powered by FluxBB