Pages: 1
- Sujet précédent - QGIS: Incrementer automatiquement un attrib selon un autre attib - Sujet suivant
#1 Mon 26 August 2019 09:34
- bibimul95
- Participant occasionnel
- Date d'inscription: 28 Jun 2018
- Messages: 33
QGIS: Incrementer automatiquement un attrib selon un autre attib
Bonjour,
je ne sais pas si le titre du sujet est très clair mais avec l'image ci-joint ça sera peut-être plus compréhensible.
J'aimerais que en fonction de la longueur (colonne length), mes colonnes beg_ch et end_ch soit modifié. Ca veut dire que comme indiqué sur l'image, en 2e ligne la colonne beg-ch prendra la valeur de end_ch du dessus et la valeur end_ch prendra la valeur end_ch du dessus + la valeur length.
Et comme j'ai différentes ligne il faut que ce ne soit fait que en fonction de la colonne Axe.
Je sais pas si c'est clair j'espère que qqun pourra m'aider.
Merci d'avance
Hors ligne
#2 Wed 28 August 2019 12:21
- JD
- Moderateur
- Date d'inscription: 8 Aug 2013
- Messages: 726
Re: QGIS: Incrementer automatiquement un attrib selon un autre attib
Bonjour,
il y a plusieurs solutions qui me viennent à l'esprit :
- soit en passant pas du sql (via dbmanager) mais nécessite de connaitre la syntaxe sql
- soit en passant passant par la calculatrice de champs avec QGIS 3
Voici un début de réponse avec la calculatrice de champs.
Il faut s'assurer d'avoir une clé primaire de type entier nommée par exemple id. Vous pouvez la créer et y affecter la forme $id par exemple.
Pour mettre à jour la colonne beg_ch, entrer la formule suivante :
Code:
coalesce(aggregate('nom_de_votre_couche', 'sum', length, id < attribute(@parent, 'id') and "Axe"= attribute(@parent, 'Axe')), 0)
Pour mettre à jour la colonne end_ch, entrer la formule suivante :
Code:
aggregate('nom_de_votre_couche', 'sum', length, id <= attribute(@parent, 'id') and "Axe"= attribute(@parent, 'Axe'))
J'explique la partie compliquée :
attribute(@parent, 'id') renvoie l'id en cours pour la couche parent (et la couche parent et la couche sommée sont les même)
Cordialement,
Hors ligne
#3 Fri 30 August 2019 10:12
- bibimul95
- Participant occasionnel
- Date d'inscription: 28 Jun 2018
- Messages: 33
Re: QGIS: Incrementer automatiquement un attrib selon un autre attib
Bonjour,
j'ai un soucis lorsque je mets votre formule dans la calculatrice de champ.
Je la mets en image ci-joint.
Je sais pas si vous pouvez m'aider pour ça?
Merci d'avance
Hors ligne
#4 Fri 30 August 2019 10:20
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3945
Re: QGIS: Incrementer automatiquement un attrib selon un autre attib
Bonjour,
Indiquez le nom de la couche avec des guillemets simples, et pas double.
Hors ligne
#6 Fri 30 August 2019 11:10
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3945
Re: QGIS: Incrementer automatiquement un attrib selon un autre attib
Et QGIS a raison, je pense. Pour reprendre le code suggéré
aggregate('nom_de_votre_couche', 'sum', length,
id <= attribute(@parent, 'id') and "Axe"= attribute(@parent, 'Axe'))
Hors ligne
#7 Fri 30 August 2019 11:14
- bibimul95
- Participant occasionnel
- Date d'inscription: 28 Jun 2018
- Messages: 33
Re: QGIS: Incrementer automatiquement un attrib selon un autre attib
Oui mais j'ai copié le code tel quel est ça fonctionne pas.
ça me met le même message m,ais à la place de 'end_ch' j'ai 'nom_de_votre_couche'.
Du coup je sais pas ce que je fais de faux
On est d'accord que je doit mettre ce code dans la calculatrice de champ pour mettre à jour une couche existante ?
Bon j'ai essayé même en créant une nouvelle couche et j'obtiens la même erreur
Hors ligne
#8 Fri 30 August 2019 11:31
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3945
Re: QGIS: Incrementer automatiquement un attrib selon un autre attib
Il faut remplacer nom_de_votre_couche par le vrai nom de votre couche dans votre projet
Hors ligne
#9 Fri 30 August 2019 11:33
- bibimul95
- Participant occasionnel
- Date d'inscription: 28 Jun 2018
- Messages: 33
Re: QGIS: Incrementer automatiquement un attrib selon un autre attib
Oui bin du coup j'obtiens l'erreur que j'ai transmis avant :
Erreur d'évaluation: Impossible de trouver une couche avec le nom ou l'ID 'end_ch'
Hors ligne
#10 Fri 30 August 2019 12:09
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3945
Re: QGIS: Incrementer automatiquement un attrib selon un autre attib
Si je prends votre premier message du fil, votre couche s'appelait Split by length et contenait un champ nommé end_ch. Là vous dites que vous avez une couche ET un de ses champs qui s'appelleraient end_ch?
Hors ligne
#11 Fri 30 August 2019 14:18
- bibimul95
- Participant occasionnel
- Date d'inscription: 28 Jun 2018
- Messages: 33
Re: QGIS: Incrementer automatiquement un attrib selon un autre attib
Ah pardon c'est moi qui ai fait une erreur.
J'ai confondu la couche et le champ
Maintennat ça fonctionne merci beaucoup
Hors ligne
#12 Mon 14 October 2019 07:51
- bibimul95
- Participant occasionnel
- Date d'inscription: 28 Jun 2018
- Messages: 33
Re: QGIS: Incrementer automatiquement un attrib selon un autre attib
Bonjour,
j'ai une nouvelle question plus ou moins en rapport avec ce sujet^^
Dans mes données je copie et je colle dans la même couche les entités de cette couche.
Ensuite je rajoute un nouveau champ qui s'appelle "sens" et j'aimerais que pour les entités d'origine je mette le numéro 5 dedans et dans les entités copiées le numéro 6.
J'imagine que ça doit être assez simple parce que il suffirait de dire que pour chaque entité il faut mettre le numéro 5 et si on trouve 2 fois le même id alors mettre 6.
Mais je ne sais juste pas comment mettre ça dans la calculatrice de champ.
Si c'est pas assez clair je peux envoyer des images pour expliquer mieux
Merci d'avance
Hors ligne
Pages: 1
- Sujet précédent - QGIS: Incrementer automatiquement un attrib selon un autre attib - Sujet suivant