¿Cómo calcular cuántos polígonos puedo poner dentro de un polígono?

9

Usualmente uso qgis. Explico mi problema con un ejemplo: hay un bosque (geometría irregular1) y un árbol (geomery2). Quiero saber la cantidad máxima de árboles que puede contener el bosque. Además, quiero un archivo shape de la mejor disposición de estos árboles dentro del bosque.ingrese la descripción de la imagen aquí

ksatzu
fuente
3
Buen problema ....
WKT
No sé cómo podría comenzar. Suena como un problema / algoritmo de grado de Maestría.
HeikkiVesanto
2
Si puede obtener acceso a una versión de prueba gratuita de ArcGIS (o descargar R, que es gratis), el software Geospatial Modeling Environment tiene una gencirclesinpolys (Generate Circles In Polygons)herramienta que podría ser útil.
José
2
Está buscando una herramienta para resolver los problemas de embalaje, pero no conozco ninguno para QGIS
underdark
1
@Joseph Usé la herramienta Entorno de modelado geoespacial, funciona. Desafortunadamente, la herramienta genera una disposición regular de círculos (o hexágonos) dentro de los límites de los polígonos, esto implica que la forma de salida no muestra (necesariamente) la mejor disposición de las características, es decir, el número máximo posible de ella.
ksatzu

Respuestas:

5

Prueba esta aplicación en línea svgnest.com/

pasos: 1. svg crea un archivo (como en la Figura 1); 2. Vaya al enlace y cargue svg; 3. Seleccione con el mouse el polígono contenedor; 4. inicio

después de varias iteraciones, puede bloquear y descargar el archivo svg (consulte la Figura 2)

NB: el polígono y los círculos deben estar en el mismo archivo svg

Figura 1

Figura 2

pigreco
fuente
4

Problema interesante!

He hecho algo similar con los polígonos irregulares (en este caso, los edificios se empacaron para no superponerse)

ingrese la descripción de la imagen aquí

Postgresql y postgis usados, y python. El algoritmo aproximado fue

  • Encuentre un punto aleatorio en el cuadro delimitador del polígono (sobre_ ST)
  • Si apunta fuera del polígono, retroceda un paso
  • Haz una geometría para el árbol centrado en este punto aleatorio
  • Si eso se superpone a cualquier árbol colocado existente (ST_Overlaps), regrese para comenzar
  • Agregar árbol en el punto
  • Volver a empezar

No puedo garantizar que esto dará el óptimo global, necesitaría un algoritmo de 'empaquetamiento circular' para eso (como otros han mencionado).

Continuará para siempre, por lo que deberá poner algo de código para decidir cuándo dejar de fumar, p. Ej.

  • cuando el área combinada de los árboles colocados es un cierto porcentaje del área del polígono
  • cuando se necesitan más de N iteraciones para encontrar un árbol no superpuesto.

Según Circle Packing en Wikipedia, la mejor densidad de empaque se logra con una cuadrícula hexagonal. Es posible crear una cuadrícula de este tipo utilizando MMQGIS, cuyo espacio se basa en el tamaño de sus árboles, que supongo que son idénticos. Luego coloca un árbol en cada vértice. Pero entonces, tiene el problema de saber dónde colocar la cuadrícula para maximizar la cantidad de árboles.

Steven Kay
fuente