Re-bonjour à tous ! (et oui, deuxième question de la journée, y'a des jours comme ça...Promis, c'est la dernière)
Je travaille actuellement sur un script python au sein duquel je souhaiterais exectuer des requêtes SQL sur des couches produites durant le script.
Ca semble assez semble en théorie mais je me heurte à un problème : je ne sais pas quel nom donner à la couche dans la requête.
Explication par l'exemple. Voici un petit extrait de code que j'utilise pour faire des tests :
La partie qui coince correspond donc aux deux dernières lignes. En effet, lorsque je l'execute ainsi, j'obtiens un "virtual: Referenced table tacheArea in query not found!"
Je me doute bien que c'est la façon dont je fais référence à ma table qui pose problème, mais j'ai eu beau tester un grand nombre de solutions, je retombe systématiquement sur la même erreur.
Comment pourrais-je executer une requête SQL sur une table qui correspond à la sortie d'un traitement précédent ?
En vous remerciant par avance !
Je travaille actuellement sur un script python au sein duquel je souhaiterais exectuer des requêtes SQL sur des couches produites durant le script.
Ca semble assez semble en théorie mais je me heurte à un problème : je ne sais pas quel nom donner à la couche dans la requête.
Explication par l'exemple. Voici un petit extrait de code que j'utilise pour faire des tests :
##bati=vector
##sortie=output vector
buff1 = processing.runalg("qgis:fixeddistancebuffer", bati, 100,5,1, None)
multi1= processing.runalg("qgis:multiparttosingleparts", buff1['OUTPUT'], None)
buff2 = processing.runalg("qgis:fixeddistancebuffer", multi1['OUTPUT'], -50,5,1, None)
multi2= processing.runalg("qgis:multiparttosingleparts", buff2['OUTPUT'],None)
tacheArea = processing.runalg("qgis:fieldcalculator", multi2['OUTPUT' ],'area', 1, 10, 0, 1, "$area",None)
request = "SELECT TYPE from tacheArea['OUTPUT_LAYER']"
req = processing.runalg("qgis:executesql", None, request, None, None, 0, None, sortie)
La partie qui coince correspond donc aux deux dernières lignes. En effet, lorsque je l'execute ainsi, j'obtiens un "virtual: Referenced table tacheArea in query not found!"
Je me doute bien que c'est la façon dont je fais référence à ma table qui pose problème, mais j'ai eu beau tester un grand nombre de solutions, je retombe systématiquement sur la même erreur.
Comment pourrais-je executer une requête SQL sur une table qui correspond à la sortie d'un traitement précédent ?
En vous remerciant par avance !