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 Thu 07 March 2019 09:38

gccg
Juste Inscrit !
Date d'inscription: 5 Mar 2019
Messages: 4

QGIS: Actualiser géotraitement avec Python

Bonjour,

Je tente d'automatiser l'actualisation d'un géotraitement à l'aide d'un script Python sur Qgis. J'ai une couche de point "TestPosition" (en csv) sur laquelle je souhaite exécuter le géotraitement Tampon à chaque fois que cette dernière est modifiée. Je souhaite donc actualiser une seule et même couche (tampon) et non la supprimer et en ajouter une nouvelle (ce que j'ai réussi à faire avec le script ci-dessous). Merci de l'aide que vous pourrez m'apporter !

Voici mon script (sur Qgis 3) :

import time
from PyQt5 import QtGui
from qgis.core import *
from qgis.utils import iface
import qgis.utils
import processing

tampon='tampon'

def MonAction()    :
    l=QgsProject.instance().mapLayersByName(tampon)[0]
    QgsProject.instance().removeMapLayer(l.id())
    res=processing.run("native:buffer", {'INPUT':'file:///D:/utilisateurs/gccg/Desktop/TestPosition.csv?type=csv&delimiter=;&decimalPoint=,&xField=Longitude&yField=Latitude&crs=EPSG:4619&spatialIndex=no&subsetIndex=no&watchFile=no','DISTANCE':1/1.484,'SEGMENTS':5,'END_CAP_
STYLE':0,'JOIN_STYLE':0,'MITER_LIMIT':2,'DISSOLVE':False,'OUTPUT':'memory:'})
    QgsProject.instance().addMapLayer(res['OUTPUT'])
    l=QgsProject.instance().mapLayersByName('output')[0]
    l.setName(tampon)
   

la=QgsProject.instance().mapLayersByName('TestPosition')[0]

la.repaintRequested.connect(MonAction)

Hors ligne

 

Pied de page des forums

Powered by FluxBB