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é ?

#1 Tue 23 January 2024 14:31

Coffee
Membre
Date d'inscription: 27 Dec 2023
Messages: 3

Questions GRASS débutant

Salut :-)

Je débute en géomatique et je découvre en particulier les SIG.
Je suis un manuel "Systèmes d'information géographique. Avec les logiciels libres GRASS et QGIS" des éditions Dunod.
Je progresse pas à pas sur les deux logiciels mais j'ai parfois un peu de mal à m'y retrouver. Le manuel est très bien mais j'ai l'impression qu'il y a parfois des erreurs. Je bloque donc quelques temps puis finit par trouvé une solution en m'adaptant ou passe à l'exercice suivant en essayant de m'approprier ce que je peux de la notion.
En ce moment j'ai un problème sur un exercice qui concerne GRASS. On y découvre différents environnements de programmation : l'interpréteur bash, R du CRAN et la console python. Je me familiarise aux procédés, cela se passe bien pour l'interpréteur bash, pour R du CRAN je suis bloqué à cause d'un package non installé mais je passe, et pour la console python je suis confronté au problème suivant.

Le manuel propose d'écrire un script permettant d'importer puis de transférer une couche vecteur en raster. Le script est le suivant :

Code:

# coding: utf-8
if __name__ == '__main__':
    exec(open("./envir.py").read())
    cmd("v.in.ogr input=" + dirSrc + "/landuse/LU1998.shp --overwrite)
    cmd("g.region vector=LU1998 res=10")
   cmd("v.to.rast input=LU1998 output=LU1998 use=attr attribute_column=ID2 label column=LU2 --overwrite")

Je crée le script, l'ouvre dans l'éditeur simple de la console python, et l'éxécute. J'obtiens une première erreur "[Errno 8] Erreur de format pour exec():", j'y ai été confronté juste avant et l'ai résolue en rajoutant une première ligne "#!/usr/bin/env python3". Je le fais. Ensuite j'obtiens l'erreur suivante à l'éxécution :

Code:

line 5
    cmd("v.in.ogr input=" + dirSrc + "/landuse/LU1998.shp
--overwrite)
                                     ^
SyntaxError: unterminated string literal (detected at line
5)

Je pense comprendre ce que c'est, sans doute des erreurs dans le manuel, au niveau des guillemets. Je pense en voir une autre, un espace manquant devant "cmd" à la dernière ligne. Je les corrige et le sript serait donc le suivant :

Code:

#!/usr/bin/env python3
# coding: utf-8
if __name__ == '__main__':
    exec(open("./envir.py").read())
    cmd("v.in.ogr input=" + dirSrc + "/landuse/LU1998.shp"" --overwrite")
    cmd("g.region vector=LU1998 res=10")
    cmd("v.to.rast input=LU1998 output=LU1998 use=attr attribute_column=ID2 label column=LU2 --overwrite")

J'obtiens alors l'erreur suivante :

Code:

line 5, in <module>
    cmd("v.in.ogr input=" + dirSrc + "/landuse/LU1998.shp
--overwrite")
NameError: name 'cmd' is not defined

"cmd" n'est donc pas reconnu. J'ai cherché sur internet et apparemment les commandes sont introduites différemment, par "grass.run_command" par exemple. Mais quand j'essaye, j'ai la même erreur.

Pourriez-vous m'aider s'il vous plaît?

Merci :-)

Dernière modification par Coffee (Tue 23 January 2024 14:39)

Hors ligne

 

Pied de page des forums

Powered by FluxBB