Message posté par : ntouati
----------------------------------------
Bonjour à toutes et à tous,
Je travaille actuellement sur une conversion d'un plugin Qgis réalisé pour la version
2.18, vers une version pour la version LTR QQGIS 3.10.
Après avoir utiliser les scripts de conversion "2to3" et quelques modifications,
mon plugin s'affiche correctement.
Le problème que je rencontre se situe dans le fonctionnement du script pour les
géotraitements demandés et notamment dans la partie suivante où je ne trouve pas de
subsitut au "processing.getObject" de la précédente version de PyQGIS.
Dans la version 2.18, le code est le suivant :
-----------------
Code :
emprise=processing.runalg("qgis:extractbylocation", stations, vlayer,
['within'],0, None) #extract stations within vlayer
stations = emprise['OUTPUT']
addStations = iface.addVectorLayer(stations, "STATIONS", 'ogr')
objEmp = processing.getObject(emprise['OUTPUT'])
-----------------
Après plusieurs recherches sur les forums et le cookbook, il semble que l'on peut
utiliser à la place "QgsProcessingUtils.mapLayerFromString" ce qui donnerait le
code suivant :
-----------------
Code :
emprise=processing.run("native:extractbylocation",
{'INPUT':stations,'PREDICATE':[0],'INTERSECT':vlayer,'OUTPUT':'memory:'})
stations = emprise['OUTPUT']
addStations = QgsProject.instance().addMapLayer(emprise)
context = QgsProcessingContext()
objEmp= QgsProcessingUtils.mapLayerFromString(emprise, context)
-----------------
Mais le code me renvoie cette erreur que je n'arrive pas à corriger :
-----------------
Code :
TypeError: QgsProcessingUtils.mapLayerFromString(): argument 1 has unexpected type
'QgsVectorLayer'
-----------------
Il semble qu'il ne considère pas objEmp comme un objet de type couche...
Rien n'est clair sur le remplacement du getObject dans la version 3. Dans la version
2.18, nous l'avions utilisé car elle permettait, comme le dit la doc Qgis
https://docs.qgis.org/2.8/fr/docs/user_manual/processing/console.html de renvoyer un objet
QGIS (une couche ou une table) à partir d'un objet transmis.
Avez-vou déjà rencontrer ce type de problème ou avez-vous une idée ? Je sèche un peu...
En vous remerciant par avance pour votre aide,
N.
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=333911#p333911
Pour y répondre : qgis_fr(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net