#1 Mon 27 July 2015 10:58
- levenez
- Participant occasionnel
- Date d'inscription: 20 Jul 2015
- Messages: 10
QGIS : Requête SpatiaLite
Bonjour,
J'aimerais effectuer une requête SQL permettant d'ajouter des valeurs dans un champ B pour certains objets présent dans un champ A. Pour faire plus clair, j'ai une colonne "Nature", avec différents objets (routes, autoroutes, chemin...). J'ai créée une colonne Largeur, ou, pour les autoroutes par exemple, je dois rentrer la largeur, qui est prédéfini: 33m, pour les routes, 10m... avez vous une idée? Sachant que je ne peux pas tout faire à la main, je travaille sur les réseaux de transports de 2 départements, donc il y a beaucoup de données...
Merci d'avance
Hors ligne
#2 Mon 27 July 2015 11:24
- toma82
- Participant occasionnel
- Lieu: Grenoble
- Date d'inscription: 4 Jan 2007
- Messages: 35
Re: QGIS : Requête SpatiaLite
Bonjour,
Pourquoi ne pas passer par la calculatrice de champs dans QGIS ?
Sinon en requête SQL je pense que cela donnerait ça
Code:
UPDATE myTable SET largeur = 33 WHERE myTable.nature ='autoroute';
Le cookbook est assez complet je trouve pour commencer avec SpatiaLite
https://www.gaia-gis.it/spatialite-3.0. … index.html
Bonne journée !
Hors ligne
#3 Mon 27 July 2015 11:38
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3884
Re: QGIS : Requête SpatiaLite
Bonjour,
Pour compléter la réponde de toma82, avec la calculatrice de champs, et pour autant que le champ nature soit bien structuré comme tel, ça donnerait quelque chose comme
Code:
case when "nature" = 'autoroute' then 33 when "nature" = 'route' then 10 when ... end
Hors ligne
#4 Mon 27 July 2015 11:51
- levenez
- Participant occasionnel
- Date d'inscription: 20 Jul 2015
- Messages: 10
Re: QGIS : Requête SpatiaLite
Bonjour,
Merci pour ta réponse, il semble qu'il ne reconnaisse pas ma colonne...
Je n'ai pas utilisé la calculatrice car je ne sais pas quoi lui rentrer^^
Bonne journée
Hors ligne
#5 Mon 27 July 2015 11:59
- toma82
- Participant occasionnel
- Lieu: Grenoble
- Date d'inscription: 4 Jan 2007
- Messages: 35
Re: QGIS : Requête SpatiaLite
Pour compléter la réponse de Santanna, tu peux aussi débuter par une sélection attributaire dans QGIS :
Code:
"nature" = 'autoroute'
Puis effectuer un calcul de champs via la calculatrice, en cochant "mettre à jour les entités sélectionnées" et "mise à jour d'un champ existant" (ton champ largeur) et indiquer la largeur dans le tableau d'expression.
Hors ligne
#6 Mon 27 July 2015 12:02
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3884
Re: QGIS : Requête SpatiaLite
Euh.. Faudrait peut-être préciser un peu plus ce que tu as fait et qui ne marche pas et te fait penser qu'il ne reconnait pas ta colonne.
Pour ce qui est de la calculatrice de champ, le lien que j'indiquais explique à peu près comment ça marche (notamment la partie Expression). La formule que j'ai mise et que tu devras adapter selon tes données consiste à dire au moteur que :
- pour toutes mes entités dont la colonne nature est égale à autoroute, renseigne 33 (implicitement dans la colonne largeur qui aura été préalablement sélectionnée dans la fenêtre),
- si la valeur nature est route, mets-y plutôt 10
- et ainsi de suite
Hors ligne
#7 Mon 27 July 2015 20:30
- levenez
- Participant occasionnel
- Date d'inscription: 20 Jul 2015
- Messages: 10
Re: QGIS : Requête SpatiaLite
Bonsoir,
Alors, après moult tentatives, les 2 techniques fonctionnent! Merci beaucoup!
Le fait que SpatiaLite ne reconnaisse pas ma colonne était normal, je l'avais ajouté après, et il ça n'était pas passé...
Merci à vous
Bonne soirée
Hors ligne