En un post anterior ya se probó este método con la versión previa de QGIS y en QGIS 2.99 uno similar (qgis:creategridpolygon) que no sobrevivió a la versión actual 3.0.0. Los parámetros a ser introducidos en este caso, averiguados con processing.algorithmHelp('qgis:creategrid'), son los siguientes:
---------------- Input parameters ---------------- TYPE: <QgsProcessingParameterEnum> Grid type 0 - Point 1 - Line 2 - Rectangle (polygon) 3 - Diamond (polygon) 4 - Hexagon (polygon) EXTENT: <QgsProcessingParameterExtent> Grid extent HSPACING: <QgsProcessingParameterNumber> Horizontal spacing VSPACING: <QgsProcessingParameterNumber> Vertical spacing HOVERLAY: <QgsProcessingParameterNumber> Horizontal overlay VOVERLAY: <QgsProcessingParameterNumber> Vertical overlay CRS: <QgsProcessingParameterCrs> Grid CRS OUTPUT: <QgsProcessingParameterFeatureSink> Grid ---------------- Outputs ---------------- OUTPUT: <QgsProcessingOutputVectorLayer> Grid
Esto conlleva a adoptar el código a continuación para la ejecución del algoritmo; donde la forma de diccionario para pasar los parámetros permite prescindir del orden y de aquellos que no son mandatorios.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | import processing uri = '/home/zeito/pyqgis_data/utah_demUTM12.tif' layer = QgsRasterLayer(uri, 'raster') extent = layer.extent() xmin, ymin, xmax, ymax = extent.toRectF().getCoords() extent = str(xmin)+ ',' + str(xmax)+ ',' +str(ymin)+ ',' +str(ymax) output = '/home/zeito/pyqgis_data/grid.shp' processing.run('qgis:creategrid', {'TYPE':2, 'EXTENT':extent, 'HSPACING':5000, 'VSPACING':5000, 'HOVERLAY':0, 'VOVERLAY':0, 'CRS':layer.crs().authid(), 'OUTPUT':output}) grid = QgsVectorLayer(output, 'grid', 'ogr') QgsProject.instance().addMapLayer(grid) |
Después de ejecutado el código anterior en la Python Console para los 'TYPE' 0 y 2, se obtuvo el resultado que se presenta a continuación:
La grid de puntos es una oferta novedosa en la versión actual de QGIS 3.
No hay comentarios:
Publicar un comentario