Bienvenue! Inscrivez-vous et rejoignez notre communauté :)
  • Login:

Bienvenue sur Forum SIG - Systèmes d'Information Géographique et Géomatique.

Bienvenue sur le forumSIG. S'il s'agit de votre première visite, assurez vous de faire une recherche préalable dans les FAQ SIG. Vous devez vous inscrire avant de pouvoir poster.

Affichage des résultats 1 à 4 sur 4

Discussion: Calcul de champs

  1. #1
    Admin' Portail
    Date d'inscription
    mars 2005
    Localisation
    Messanges
    Emploi
    Géomaticien
    Organisme
    MSH Dijon
    Âge
    34
    Messages
    4 266

    Par défaut Non Résolu : Calcul de champs

    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

  2. #2
    Modérateur et rédacteur
    Date d'inscription
    octobre 2005
    Localisation
    Louvain-la-neuve
    Emploi
    Géologue
    Organisme
    Université Catholique de Louvain - Région Wallonne
    Messages
    1 851

    Par défaut

    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:
    Cliquez sur l'image pour la voir en taille réelle 

Nom : 		table1.jpg 
Affichages :	3 
Taille :		149,0 Ko 
ID : 			5286

    Nouvelle colonne
    Cliquez sur l'image pour la voir en taille réelle 

Nom : 		table2.jpg 
Affichages :	3 
Taille :		97,3 Ko 
ID : 			5287

    SQLBuilder
    Cliquez sur l'image pour la voir en taille réelle 

Nom : 		sqlbuilder.jpg 
Affichages :	3 
Taille :		101,0 Ko 
ID : 			5288


    • 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

    Code:
    # 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)
    Résultat
    Cliquez sur l'image pour la voir en taille réelle 

Nom : 		somme.jpg 
Affichages :	3 
Taille :		117,6 Ko 
ID : 			5285


    Si l'on travaille dès le départ avec des tables en SQLite, tout devient beaucoup plus simple puisque SQLite accepte la majorité des commandes SQL
    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

  3. #3
    Admin' Portail
    Date d'inscription
    mars 2005
    Localisation
    Messanges
    Emploi
    Géomaticien
    Organisme
    MSH Dijon
    Âge
    34
    Messages
    4 266

    Par défaut

    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

  4. #4
    Modérateur et rédacteur
    Date d'inscription
    octobre 2005
    Localisation
    Louvain-la-neuve
    Emploi
    Géologue
    Organisme
    Université Catholique de Louvain - Région Wallonne
    Messages
    1 851

    Par défaut

    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

 

 

Discussions similaires

  1. [ArcGIS 10.x] Calcul de champs sur table jointe
    Par romain dans le forum Assistance Technique
    Réponses: 2
    Dernier message: 28/11/2012, 21h08
  2. [ArcView 10] Calcul sur les valeurs d'un champs
    Par Throd56 dans le forum Assistance Technique
    Réponses: 2
    Dernier message: 18/05/2012, 10h46
  3. [ArcGIS 10.x] Python: calcul de champs
    Par bernards111 dans le forum Programmation
    Réponses: 0
    Dernier message: 17/02/2011, 11h05
  4. [MapInfo 9.x] Calcul sur champs
    Par emilk dans le forum Assistance Technique
    Réponses: 3
    Dernier message: 21/10/2009, 10h16
  5. [ArcGIS 8.x] Calcul automatique des champs
    Par Ouf dans le forum Programmation
    Réponses: 10
    Dernier message: 17/05/2006, 09h31

Les tags pour cette discussion

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •