2 votos

Cómo dibujar polilíneas y polígonos en trazados con PyQGIS

He estado buscando algún ejemplo sobre cómo dibujar polilíneas y polígonos en el compositor de mapas usando PyQGIS, pero no he podido encontrar nada. Podría alguien mostrarme algún código para aprender?

3voto

BWW Puntos 302

Cuando te encuentres atascado, debes mirar Documentación sobre la API de QGIS , Documentación sobre PyQGIS y el directorio de pruebas Python del repositorio QGIS, por ejemplo https://github.com/qgis/QGIS/tree/master/tests/src/python

Para los dos primeros enlaces de sus casos de uso, debe buscar clases que contengan QgsLayout cadena (haciendo una búsqueda textual)

Te preguntarás cómo he adivinado que debo mirar QgsLayoutItemPolygon o QgsLayoutItemPolyline ? He dibujado manualmente la línea y el polígono y los he seleccionado individualmente en el diseño. Luego, he ejecutado las 4 primeras líneas de la siguiente receta en la consola Python de QGIS para saber de qué clase se trataba. Las otras partes son principalmente la versión independiente del directorio de pruebas para su propósito.

project = QgsProject.instance()
manager = project.layoutManager()
layout = manager.layoutByName('demo') # Use your layout name instead of demo
layout.selectedLayoutItems()

# Recipe from layout Polygon
# Mainly borrowed from https://github.com/qgis/QGIS/blob/master/tests/src/python/test_qgslayoutpolygon.py
polygon1 = QPolygonF()
polygon1.append(QPointF(0.0, 0.0))
polygon1.append(QPointF(100.0, 0.0))
polygon1.append(QPointF(200.0, 100.0))
polygon1.append(QPointF(100.0, 200.0))

layoutItemPolygon = QgsLayoutItemPolygon(polygon1, layout)
layout.addLayoutItem(layoutItemPolygon)

# Recipe from layout Polyline
# Mainly borrowed from https://github.com/qgis/QGIS/blob/master/tests/src/python/test_qgslayoutpolyline.py
polygon2 = QPolygonF()
polygon2.append(QPointF(50.0, 150.0))
polygon2.append(QPointF(150.0, 80.0))
polygon2.append(QPointF(250.0, 100.0))
polygon2.append(QPointF(10.0, 200.0))

layoutItemPolyline = QgsLayoutItemPolyline(polygon2, layout)
layout.addLayoutItem(layoutItemPolyline)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X