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 Sat 20 July 2024 07:07

conejo
Participant assidu
Lieu: Lunel
Date d'inscription: 2 Dec 2005
Messages: 1670

QGIS: Attribuer une valeur automatiquement

Bonjour,
Je dispose d'un Shape avec un champ "pylône" qui donne le numéro de pylône. Un numéro de pylône est le plus souvent présent deux fois dans ce champ. Je voudrais que dans un nouveau champ on mette la valeur 1 lorsque le numéro de pylône apparaît pour la première fois dans la liste et la valeur 0 lorsque ce numéro de pylône est répété. Cela demanderait de trier ce champ d'abord je pense. Comment faire?
Merci.

Hors ligne

 

#2 Sat 20 July 2024 16:42

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3940

Re: QGIS: Attribuer une valeur automatiquement

Bonjour,
Je pense que ce devrait être un champ virtuel (pour faire au plus simple) et une fonction d'agregats, genre count devrait faire l'affaire.

Hors ligne

 

#3 Sat 20 July 2024 17:04

arnaudp
Participant occasionnel
Date d'inscription: 20 Sep 2020
Messages: 33

Re: QGIS: Attribuer une valeur automatiquement

Bonjour Conejo,

Nous mettre à jour le champ avec un script python :

On ajoute les à une liste les identifiants rencontrés pour les compter. Et nous éditons un champ durant le traitement.

Code:

pyloneID = [] # On défini un liste qui va contenir les identifants des pylones et nous permettre des les compter.

layer = iface.activeLayer() # On récupère la couche active.
if layer.isEditable() : # On s'assure qu'elle soit en mode Édition
    # on créer un champ 'firstOccur' qui va contenir le 0 ou le 1 en fonction  
    layer.dataProvider().addAttributes([QgsField('firstOccur',QVariant.Int)])
    layer.updateFields()
    # Toutes les valeurs du champs sont NULL

    features = layer.getFeatures()
    for feature in features:
        print('Identifiant du pylône : '+str(feature['Pylone']))
        pyloneID.append(feature['Pylone']) # On ajoute l'identifiant à notre liste temporaire
        print('Nombre d\'occurrence dans la liste : '+str(pyloneID.count(feature['Pylone']))) # On contre le nombre de fois que l'identifiant courrant apparait dans la liste

        if pyloneID.count(feature['Pylone']) = 1 : 
            feature['firstOccur'] = 1 # Si on rencontre l'identifiant pour la première fois on défini le champ à 1
        else:
            feature['firstOccur'] = 0 # Sinon nous le mettons à 0
        layer.updateFeature(feature) # Nous mettons à jour l'entité

else :
    print('La couche n\'est pas éditable. On abandonne.')
print('bye-bye')

https://imgur.com/a/SBwqzdD

J'espère que ça résous le problème.

Arnaud

Hors ligne

 

#4 Tue 23 July 2024 13:51

conejo
Participant assidu
Lieu: Lunel
Date d'inscription: 2 Dec 2005
Messages: 1670

Re: QGIS: Attribuer une valeur automatiquement

Bonjour,

Merci de vos réponses.
J'ai utilisé FME, avec lequel je me suis débrouillé.
Merci quand même.

Hors ligne

 

Pied de page des forums

Powered by FluxBB