5 votos

¿Cómo dividir un círculo en partes iguales en QGIS?

Estoy buscando dividir un polígono circular generado por un buffer alrededor de un punto en partes iguales. El objetivo es poder calcular estadísticas sobre el ráster que estará debajo del círculo para cada parte del círculo.

Esta publicación explica cómo hacerlo para un polígono cuadrado y esta otra cómo hacerlo con arcpy, pero ¿alguien sabe cómo puedo lograr algo similar con un círculo Y con QGIS?

0 votos

Supongo que la forma más "simple" sería traducir el script de tu segundo enlace a PyQGIS. Sin embargo, esto requiere un buen conocimiento de PyQGIS.

5voto

GreyCat Puntos 146

Es muy fácil de hacer con Shapely. El secreto es el predicado de unión que divide las líneas en segmentos en cada intersección.

introducir descripción de la imagen aquí

El Polígono se convierte en un LinearRing o LineString y se hace la unión.

from shapely.geometry import LineString, Polygon
# unión de la línea y el LinearRing del Polígono
result = line.union(LineString(list(polygon.exterior.coords)))

El resultado es un MultiLineString

Ahora

Ahora podemos usar la función polygonize

from shapely.ops import polygonize
for geom in polygonize(result):
    .....

Resultado

introducir descripción de la imagen aquí

En PyQGIS, el predicado combine es el equivalente de unión, ver Python: Unir polígonos seleccionados en una capa)

ring = poly.asPolygon()[0]
linearRing = ring.asPolyline()
result = line.combine(linearRing) 

El resultado es el mismo MultiLineString pero PyQGIS no tiene una función polygonize. Existe un algoritmo en la Caja de Herramientas de Procesamiento (qgis:polygonize) pero falla con MultiLineStrings en mi caso. Así que sigo usando shapely.

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