Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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

Printemps des cartes 2024

#1 Mon 07 April 2014 15:44

dttpe
Juste Inscrit !
Date d'inscription: 9 Jan 2014
Messages: 6

QGIS : Script python : fieldcalculator $length

Bonjour,

j'ai un problème, je n'arrive pas à appliquer la fonction $length dans mon script python (il est exécuté directement dans la console python).

Code:

processing.runalg("qgis:fieldcalculator","C:/test/DIF.shp", "L", 1, 10, 3, True,= $length,"C:/test/DIF2.shp")
File "<input>", line 1
processing.runalg("qgis:fieldcalculator","C:/test/DIF.shp", "L", 1, 10, 3, True,= $length,"C:/test/DIF2.shp")
^
SyntaxError: invalid syntax

je sais que si je rajoute des "" à $length sa marchera mais sans appliquer la fonction !

Code:

processing.runalg("qgis:fieldcalculator","C:/test/DIF.shp", "L", 1, 10, 3, True,"= $length","C:/test/DIF2.shp")
{'OUTPUT_LAYER': 'C:/test/DIF2.shp'}

comment faire ?

mon objectif est de pouvoir ajouter un champ "Longueur" sur prés de 420 shapes l'idée serait de ne pas avoir à les traiter 1 par 1 !

Est-il possible d'automatiser cette procédure ?

Help !

Dernière modification par dttpe (Thu 10 April 2014 14:57)

Hors ligne

 

#2 Thu 10 April 2014 14:59

dttpe
Juste Inscrit !
Date d'inscription: 9 Jan 2014
Messages: 6

Re: QGIS : Script python : fieldcalculator $length

Salut,

Toujours pas de solution ?

Cette fonction est-elle réalisable ou nécessite t-elle un plugin ?

Dernière modification par dttpe (Fri 11 April 2014 13:19)

Hors ligne

 

#3 Mon 14 April 2014 09:22

PerrineR
Participant occasionnel
Date d'inscription: 7 Nov 2013
Messages: 12

Re: QGIS : Script python : fieldcalculator $length

Bonjour,

je vois le post un peu après la bataille, mais peut-être es-tu encore sur le problème.

Je suppose que tu travailles sur Qgis 2. Je n'ai pas spécialement exploré l'outil fieldcalculator, mais je te propose une autre solution. Le script est à appeler dans la console avec la commande execfile().

Code:

import processing
from PyQt4 import QtCore

vligne=QgsVectorLayer("chemin/DIF.shp","le nom que tu veux dans la visionneuse","ogr")

if not vligne.isValid():
    print "échec du chargement de la couche DIF"

# Création du champ

caps=vligne.dataProvider().capabilities()

test=vligne.fieldNameIndex("long")

if test==-1:    
    if caps & QgsVectorDataProvider.AddAttributes:
        res = vligne.dataProvider().addAttributes([QgsField("long",QtCore.QVariant.Double)])

vligne.updateFields()


idx=vligne.fieldNameIndex("long")



#Remplissage du champ "long"

vligne.startEditing()

for f in vligne.getFeatures():
    f[idx]=f.geometry().length()
    vligne.updateFeature(f)

vligne.commitChanges()

# Affichage de la couche
QgsMapLayerRegistry.instance().addMapLayer(vligne)

Des codeurs plus expérimentés pourront discuter le script à loisir...

En espérant que cela t'aidera,

Perrine

Hors ligne

 

#4 Mon 14 April 2014 10:21

dttpe
Juste Inscrit !
Date d'inscription: 9 Jan 2014
Messages: 6

Re: QGIS : Script python : fieldcalculator $length

Merci pour l'info, je vais tester maintenant.

je reviens vite pour le résultat.

merci

Hors ligne

 

#5 Mon 14 April 2014 10:47

dttpe
Juste Inscrit !
Date d'inscription: 9 Jan 2014
Messages: 6

Re: QGIS : Script python : fieldcalculator $length

Perrine,

Merci bcp après 2 trois problèmes d'encodage (j'ai rajouter  #-*- coding:Utf-8 -*-  en tête de script) et sa marche super bien.

encore merci ! ça m'enlève une belle épine du pied.

RESOLU

Dernière modification par dttpe (Mon 14 April 2014 10:49)

Hors ligne

 

#6 Mon 14 April 2014 10:55

PerrineR
Participant occasionnel
Date d'inscription: 7 Nov 2013
Messages: 12

Re: QGIS : Script python : fieldcalculator $length

En effet, j'avais oublié de copier coller l'en-tête.

Tu ne devrais pas avoir de problème pour faire fonctionner le script en boucle sur tes 420 shapes...

De rien et bonne journée,

Perrine

Hors ligne

 

#7 Mon 14 April 2014 21:53

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9855
Site web

Re: QGIS : Script python : fieldcalculator $length

Bonsoir,

Autre solution, voir l'article : http://anitagraser.com/2013/04/20/advan … alculator/

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

Pied de page des forums

Powered by FluxBB