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

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

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


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

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

 

#5 Fri 30 August 2019 10:25

bibimul95
Participant occasionnel
Date d'inscription: 28 Jun 2018
Messages: 33

Re: QGIS: Incrementer automatiquement un attrib selon un autre attib

Du coup j'obtiens une autre erreur sur l'image en fichier joint


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

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é

lejedi76 a écrit:

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

 

Pied de page des forums

Powered by FluxBB