Bonjour à tous
Est il possible sous GRASS de faire un calcul de champs, par exemple une soustraction entre 2 champs ?
Je parle bien de grass, je sais faire ça sous qgis sans problème, c'est seulement pour savoir si c'est possible.
Merci
Bonjour à tous
Est il possible sous GRASS de faire un calcul de champs, par exemple une soustraction entre 2 champs ?
Je parle bien de grass, je sais faire ça sous qgis sans problème, c'est seulement pour savoir si c'est possible.
Merci
"comme j' dis toujours C'est pas parce que c'est sérieux que ça doit être lugubre..." Phyto
--------------
Vous avez le droit de poster sur différents forums mais prévenez nous qu'on ne perde pas de temps à faire les mêmes réponses !
--------------
Merci de respecter les règles du forum
Un avis, une remarque sur la nouvelle version du PortailSIG, cliquez ici
Vous souhaitez devenir rédacteur du PortailSIG, contactez moi

Tu peux le faire en SQL mais le driver dbf est limité. Il ne supporte pas grand chose, c'est pourquoi dans la version 7, tout est avec SQLite (voir http://grass.fbk.eu/gdp/html_grass64/grass-dbf.html). Néamoins
- cela se passe de manière graphique avec, notamment le SQL Builder mais mais du fait des limites du driver dbf des commandes comme v.db.update, par exemple, ne sont pas supportées.
Sélection dans les tables:
Nouvelle colonne
SQLBuilder
- Alors on peut utiliser la ligne de commandes avec la console de GRASS GIS (plus souple), avec des db.select, db.columns, db.execute etc., mais avec les mêmes limites. Il faut vraiment chipoter et ce n'est pas évident (voir http://grass.fbk.eu/gdp/html_grass64/sql.html)
- Heureusement depuis l'adoption de Python, tout est devenu beaucoup plus souple, et il est possible de faire exactement ce que l'on veut comme calcul, mais toujours en ligne de commande dans la console Python.
exemple somme de 2 éléments
RésultatCode:# lecture des valeurs de la première colonne ZN = grass.read_command("v.db.select", flags="c", map="geochimcal", col="ZN") ZN=(ZN.split("\n")) ZN= ZN[0:(len(ZN)-1)] ZN ['40', '55', '65', '158', '44', '282', '62', '83', '84', '97', '61', '58', '40', '54', '75', '129', '77', '87', '74', '47', '58', '73', '64', '46', '63'] # lecture des valeurs de la deuxième colonne PB=grass.read_command("v.db.select", flags="c", map="geochimcal", col="PB") PB=(PB.split("\n")) PB= PB[0:(len(PB)-1)] PB ['17', '9', '16', '40', '16', '166', '18', '22', '37', '69', '62', '19', '17', '23', '33', '72', '19', '19', '39', '21', '30', '8', '37', '21', '20'] #création de la table résultante: grass.read_command("v.db.addcol",map="geochimcal",col="SOMME int") # calcul de la somme et remplissage de la table SOMME = range(len(PB)) for i in range(len(PB)): SOMME[i]=int(ZN[i])+int(PB[i]) SOMME [57, 64, 81, 198, 60, 448, 80, 105, 121, 166, 123, 77, 57, 77, 108, 201, 96, 106, 113, 68, 88, 81, 101, 67, 83] for i in range(len(ZN)): input="UPDATE geochimcal SET SOMME=" + str(SOMME[i]) + " WHERE cat = " + str(i+1) grass.write_command("db.execute", stdin = input)
Dernière modification par gene ; 29/10/2012 à 17h27.
Vous avez le droit de poster sur différents forums mais prévenez nous qu'on ne perde pas de temps à faire les mêmes réponses !
"Caminante, no hay camino, el camino se hace al andar" A. Machado
Merci Martin
C'est effectivement un peu compliqué, je n'ai d'ailleurs pas réussi avec le SQL Builder.
Mais j'ai ma réponse, c'est parfait. Je vais ptet m'installer une version 7 pour tester ..
"comme j' dis toujours C'est pas parce que c'est sérieux que ça doit être lugubre..." Phyto
--------------
Vous avez le droit de poster sur différents forums mais prévenez nous qu'on ne perde pas de temps à faire les mêmes réponses !
--------------
Merci de respecter les règles du forum
Un avis, une remarque sur la nouvelle version du PortailSIG, cliquez ici
Vous souhaitez devenir rédacteur du PortailSIG, contactez moi

tu peux d'ores et déjà sur les versions 6.4.x choisir d'employer SQLite au lieu de dbf.
http://casoilresource.lawr.ucdavis.edu/drupal/node/733
Vous avez le droit de poster sur différents forums mais prévenez nous qu'on ne perde pas de temps à faire les mêmes réponses !
"Caminante, no hay camino, el camino se hace al andar" A. Machado
Liens sociaux