sábado, 21 de enero de 2017

Cómo dibujar pentágonos (o cualquier polígono) con PyQGIS

Dibujar pentágonos (o cualquier otro polígono) es un procedimiento sencillo, independientemente de la proyección, empleando el método 'linspace' del módulo 'numpy'. El código siguiente ejemplifica el proceso. Permite dibujar un pentagono alrededor del punto (-3.055975, 47.601177), ubicado al centro-oeste de Francia, con un diámetro de 3 º.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import numpy as np

diameter = 3 #degrees
polygonSides = 5

points = [ QgsPoint(-3.055975, 47.601177) ]

for i, point in enumerate(points):

    geom = QgsGeometry.fromPolygon([[ QgsPoint(point[0] + np.sin(angle)*diameter, point[1] + np.cos(angle)*diameter)
                        for angle in np.linspace(0, 2*np.pi, polygonSides, endpoint = False) ]])

    print geom.exportToWkt()

Para dibujar otros polígonos basta cambiar el número de lados (obviamente valores mayores que 2) y si se desean valores en metros es suficiente con cambiar el punto y el diámetro acordes con la proyección. El código admite la producción simultánea de varios polígonos si los puntos se adicionan como QgsPoint en la lista correspondiente (points).

Después de ejecutado el código en la Python Console de QGIS, el polígono en formato WKT impreso a través de la consola se visualizó en la Map View mediante el plugin QuickWKT; tal como se encuentra en la imagen siguiente:



No hay comentarios: