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 Thu 22 February 2018 12:12

sporito
Participant actif
Date d'inscription: 4 Mar 2008
Messages: 126

QGIS: Script Python - Nom Fichier dans Champ

Bonjour,
je cherche à automatiser l’écriture du nom de la couche dans un champ, je sais le faire sous Arcgis, je voudrais pouvoir le faire sous QGIS.
Autrement dit, ce script (version Arcgis) en version QGIS:

import arcpy
mxd = arcpy.mapping.MapDocument ('current')                 #le mxd ouvert
df = arcpy.mapping.ListDataFrames(mxd, "Couches")[0]   # le nom du bloc de donnée
for layer in arcpy.mapping.ListLayers(mxd):                     # liste les tables
    cur = arcpy.UpdateCursor (layer)
    for row in cur:
        row.name = layer.name
        cur.updateRow (row)                                                # mise a jour du nom de la table dans un champ


Merci,
Aurélien.

Hors ligne

 

#2 Thu 22 February 2018 16:44

JD
Moderateur
Date d'inscription: 8 Aug 2013
Messages: 726

Re: QGIS: Script Python - Nom Fichier dans Champ

Bonjour,

peux-tu nous en dire plus ?

Le champs dont tu parles c'est le champs d'une couche en particulier ? Ou c'est un champs commun à l'ensemble des couches de ton projet ?

Cordialement,

Hors ligne

 

#3 Wed 28 February 2018 17:44

sporito
Participant actif
Date d'inscription: 4 Mar 2008
Messages: 126

Re: QGIS: Script Python - Nom Fichier dans Champ

chaque couche a ce même champ

Hors ligne

 

#4 Fri 02 March 2018 17:12

Sylther
Participant assidu
Lieu: Mpl
Date d'inscription: 17 May 2016
Messages: 186
Site web

Re: QGIS: Script Python - Nom Fichier dans Champ

Bonjour,

Voici une possibilité :

Code:

# -*- coding: utf-8 -*

# A changer : le nom du champ
nomChamp='leNomDuChamp'


# Itération sur la liste des couches ouvertes
for nom, couche in QgsMapLayerRegistry.instance().mapLayers().iteritems():

    # récupération de l'index du champ dans la table attributaire
    IDChamp = couche.fieldNameIndex(nomChamp)    

    # Mise en édition de la couche
    couche.startEditing()

    # itération sur les enregistrements de la couche
    for ligne in couche.getFeatures():

        # Création de la nouvelle valeur à inscrire dans la table
        attribut = { IDChamp : couche.name() }
        # Écriture dans la couche
        couche.dataProvider().changeAttributeValues({ ligne.id() : attribut })

    # Enregistrements des modifications
    couche.commitChanges()

J'ai volontairement mis des noms de variables explicites et commenté allègrement, mais n'hésite pas si tu as besoin de plus d'informations.

Bonne journée,
S.

Dernière modification par Sylther (Fri 02 March 2018 17:16)

Hors ligne

 

#5 Tue 06 March 2018 09:02

sporito
Participant actif
Date d'inscription: 4 Mar 2008
Messages: 126

Re: QGIS: Script Python - Nom Fichier dans Champ

Super merci bcp Sylther !

Hors ligne

 

Pied de page des forums

Powered by FluxBB