#1 Thu 01 July 2021 10:58
- mus_AB
- Juste Inscrit !
- Date d'inscription: 20 Mar 2020
- Messages: 1
QGIS: Erreur script python avec qgis processing
Bonjour,
Je travaille actuellement sr une tache ou je suis appelé à automatiser un processus sur qgis. J'essaie d'exploit la boite à outils de qgis notamment la biblithèque 'processing'
- Indépendamment les scripts fonctionnent parfaitement mais dès j'introduit la boucle ' while' j'ai une erreur.
Ci-joint le script et l'erreur retournée.
Merci d'avance pour votre aide.
Voici mon code :
# -*- coding: utf-8 -*-
"""
@author: Mustapha ABROUS
musabrous@ gmail.com
"""
"""
1- boucle d'indentifier les tronçons dans un dossier(fichier shp gpkg)
2- création des input et output
3- soustration d'un tronçon du tracé
4- creation d'un buffer pour le tronçon
5- création d'un buffer pour le fichier résultant de la soustraction
6- vérification d'intersection entre le buffer du tronçon et le bufffer du fichier issu de la soustraction
7- ajustement de la largeur du buffer afin d'éviter l'intersection
"""
#importing library
import os
import processing
from osgeo import ogr
#setting folders
TronconInputdirectory = 'C:/local_file/RHIN_LIBRE_PROJ/py_BAS/02-resultat/tronçons/'
ProfilOutputdirectory = 'C:/local_file/RHIN_LIBRE_PROJ/py_BAS/02-resultat/profil/'
#demfile= 'C:/local_file/RHIN_LIBRE_PROJ/MNT/Affluents_Sauer_RhinNord_MNT_1m_L93_LiDAR_2018.gpkg'
trace='C:/local_file/RHIN_LIBRE_PROJ/py_BAS/01-donnée/trace/trace.gpkg'
traceWithoutTroncondirectory='C:/local_file/RHIN_LIBRE_PROJ/py_BAS/02-resultat/traceWithoutTronçon/'
BufferWithoutTronconOutputdirectory= 'C:/local_file/RHIN_LIBRE_PROJ/py_BAS/02-resultat/buffer/'
bufferTronconOutputdirectory='C:/local_file/RHIN_LIBRE_PROJ/py_BAS/02-resultat/bufferTroncon/'
## looking for gpkg et shp file
for filename in os.listdir(TronconInputdirectory):
if filename.endswith(".gpkg") or filename.endswith(".shp"):
# print(filename)
troncon = (os.path.join(TronconInputdirectory, filename))
#set ouput name
name = filename
# print("name= ",name)
traceWithoutTroncon= traceWithoutTroncondirectory+'traceWithout'+(name)
BufferTraceWithoutTroncon = BufferWithoutTronconOutputdirectory+'Buffer_without'+(name)
bufferTroncon= bufferTronconOutputdirectory +'bufffer_'+ (name)
intersection = False #init intersection
largeur = 1 # setting fist largeur value
while intersection is False :
########## buffering tronçon
processing.run("native:buffer",
{'INPUT':troncon,
'DISTANCE': largeur,
'SEGMENTS':5,
'END_CAP_STYLE':0,
'JOIN_STYLE':0,
'MITER_LIMIT':1,
'DISSOLVE':False,
'OUTPUT':bufferTroncon})
##########removing tronçon from tracé
processing.run("native:difference",
{'INPUT':trace,
'OVERLAY':troncon,
'OUTPUT':traceWithoutTroncon})
##########buffering traceWithoutTroncon
processing.run("native:buffer",
{'INPUT':traceWithoutTroncon,
'DISTANCE': largeur,
'SEGMENTS':5,
'END_CAP_STYLE':0,
'JOIN_STYLE':0,
'MITER_LIMIT':1,
'DISSOLVE':False,
'OUTPUT':BufferTraceWithoutTroncon})
driver = ogr.GetDriverByName("gpkg") #new
srcShp1 = driver.Open(BufferTraceWithoutTroncon)#new
srcLay1 = srcShp1.GetLayer()
# print(srcLay1)
for feat1 in srcLay1:
## print(feat1)
geom1 = feat1.GetGeometryRef()
# print(geom1)
driver = ogr.GetDriverByName("gpkg") #new
srcShp2 = driver.Open(bufferTroncon)#new
srcLay2 = srcShp2.GetLayer()
# print(srcLay2)
for feat2 in srcLay2:
# print(feat2)
geom2 = feat2.GetGeometryRef()
# print(geom2)
intersection = geom2.Intersects(geom1)
if intersection is False:
print("No")
largeur= largeur+1
else:
print("no")
Voici l'erreur que j'obtient :
Traceback (most recent call last):
File "C:PROGRA~1QGIS3~1.8appsPython37libcode.py", line 90, in runcode
exec(code, self.locals)
File "", line 1, in
File "", line 41, in
File "C:/PROGRA~1/QGIS3~1.8/apps/qgis/./python/pluginsprocessingtoolsgeneral.py", line 106, in run
return Processing.runAlgorithm(algOrName, parameters, onFinish, feedback, context)
File "C:/PROGRA~1/QGIS3~1.8/apps/qgis/./python/pluginsprocessingcoreProcessing.py", line 181, in runAlgorithm
raise QgsProcessingException(msg)
Merci encore pour votre aide !
Hors ligne