#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