Tengo entendido que los algs de procesamiento van a ser implementados en la versión maestra de qgis. ¿Cuál es la mejor manera de seguir el estado de los algoritmos que se han implementado y el plan para el resto?
Respuestas
¿Demasiados anuncios?Supongo que llamar a varios métodos desde las clases es todavía un desarrollo en curso. Como solución puede utilizar lo siguiente para devolver una descripción de ayuda ( de lo que sólo puedo suponer que son para los algoritmos actualmente implementados ). Esta descripción de ayuda se establece en un diccionario que contiene el nombre del algoritmo y su explicación:
processing.algs.help.shortHelp
Pero es un poco difícil de leer:
Pero podemos formatearla un poco usando:
print("{" + "\n".join("{}: {}".format(k, v) for k, v in processing.algs.help.shortHelp.items()) + "}")
Lo que es más claro:
Y si sólo quieres los nombres de los algoritmos, puedes usar
for key, value in processing.algs.help.shortHelp.items():
print(key)
He descubierto cómo ejecutar los algoritmos de procesamiento en qgis 2.99 requiere (?) un dict con los parámetros, como este ( qgis
se cambia a native
):
parameters = = {'INPUT': 'C:/dev/inputfile.shp','TARGET_CRS': 'EPSG:4326','OUTPUT': 'C:/dev/outputfile.shp'}
processing.run('native:reprojectlayer', parameters)
Por complementar la respuesta de Joseph para su comentario en este puesto , equivalente a alglist se puede lograr con el siguiente código:
L = (dir(processing.algs.qgis))
for item in L:
if (any(x.isupper() for x in item)):
print ('qgis:' + item.lower())
M = (dir(processing.algs.gdal))
for item in M:
if (any(x.isupper() for x in item)):
print ('gdal:' + item.lower())
N = (dir(processing.algs.saga))
for item in N:
if (any(x.isupper() for x in item)):
print ('saga:' + item.lower())
cuyo resultado condensado es:
qgis:addtablefield
qgis:aggregate
qgis:aspect
qgis:barplot
qgis:basicstatistics
qgis:boxplot
qgis:buffer
qgis:checkvalidity
qgis:concavehull
qgis:createattributeindex
qgis:createconstantraster
qgis:datasources2vrt
qgis:defineprojection
qgis:delaunay
qgis:deletecolumn
.
.
.
gdal:assignprojection
gdal:buffer
gdal:cliprasterbyextent
gdal:cliprasterbymask
gdal:clipvectorbyextent
gdal:clipvectorbymask
gdal:colorrelief
gdal:dissolve
gdal:executesql
gdal:gdalalgorithm
gdal:gdalalgorithmdialog
gdal:gdalalgorithmprovider
gdal:gdalutils
gdal:gridaverage
.
.
.
saga:sagaalgorithm
saga:sagaalgorithmbase
saga:sagaalgorithmprovider
saga:saganamedecorator
saga:sagautils
saga:splitrgbbands
Para reproducir processing.alglist()
de QGIS 2.18 en QGIS 3, se puede escribir también:
def alglist():
s = ''
for i in QgsApplication.processingRegistry().algorithms():
l = i.displayName().ljust(50, "-")
r = i.id()
s += '{}--->{}\n'.format(l, r)
print(s)
alglist()
lo que resulta en:
Tessellate------------------------------------------->3d:tessellate
Aspect----------------------------------------------->gdal:aspect
Assign projection------------------------------------>gdal:assignprojection
Buffer vectors--------------------------------------->gdal:buffervectors
.
.
.
Wind exposition index-------------------------------->saga:windexpositionindex
Zonal multiple regression analysis (points and predictor grids)--->saga:zonalmultipleregressionanalysispointsandpredictorgrids
Zonal raster statistics------------------------------>saga:zonalrasterstatistics
```