sábado, 12 de enero de 2019

Ejecutar la Processing tool UI en PyGIS 2 y 3

En esta pregunta de gis.stackexchange.com se responde la manera de ejecutar la Processing tool UI en PyGIS 2 y en esta otra en PyQGIS 3. Para ejemplificar cómo funciona, ya que el segundo caso adolece del código completo, se va a probar con el procedimiento del post anterior.

En el primer caso se tiene el código siguiente:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# Import both Processing and CommanderWindow 
#   classes from the Processing framework. 
from processing.core.Processing import Processing
from processing.gui.CommanderWindow import CommanderWindow

# Then get the algorithm you're interested in (for instance, Join Attributes):
alg = Processing.getAlgorithm("saga:polygonselfintersection")

# Instantiate the commander window and open the algorithm's interface 
cw = CommanderWindow(iface.mainWindow(), iface.mapCanvas())
if alg is not None:
    cw.runAlgorithm(alg)

cuya ejecución en la Python Console resulta tal como se esperaba:


En PyQGIS 3 el procedimiento se ha simplificado bastante; tal como se evidencia en el código a continuación:

1
2
3
4
import processing

initial_params={}
results = processing.execAlgorithmDialog("saga:polygonselfintersection", initial_params)

La ejecución del código anterior en la Python Console también produce el resultado esperado; evidenciado en la imagen siguiente:

No hay comentarios: