Wie berechne ich, wie viele Polygone ich in ein Polygon einfügen kann?

9

Ich benutze normalerweise QGIS. Ich erkläre mein Problem anhand eines Beispiels: Es gibt einen Wald (unregelmäßige Geometrie1) und einen Baum (Geomerie2). Ich möchte wissen, wie viele Bäume der Wald maximal enthalten kann. Außerdem möchte ich eine Shapefile-Ausgabe der besten Disposition dieser Bäume im Wald.Geben Sie hier die Bildbeschreibung ein

ksatzu
quelle
3
Schönes Problem ....
WKT
Ich weiß nicht, wie ich überhaupt anfangen würde. Klingt nach einem Maters-Grad-Problem / Algorithmus.
HeikkiVesanto
2
Wenn Sie Zugriff auf eine kostenlose Testversion von ArcGIS erhalten (oder R kostenlos herunterladen können), verfügt die Geospatial Modeling Environment- Software über ein gencirclesinpolys (Generate Circles In Polygons)nützliches Tool.
Joseph
2
Sie suchen nach einem Tool zur Lösung von Verpackungsproblemen, aber mir ist kein Tool für QGIS bekannt
underdark
1
@ Joseph Ich habe das Tool Geospatial Modeling Environment verwendet, es funktioniert. Leider erzeugt das Werkzeug eine regelmäßige Anordnung von Kreisen (oder Sechsecken) innerhalb der Grenzen von Polygonen. Dies impliziert, dass die Ausgabeform (notwendigerweise) nicht die beste Anordnung der Merkmale zeigt, ich meine die maximal mögliche Anzahl davon.
Ksatzu

Antworten:

5

Probieren Sie diese App online aus svgnest.com/

Schritte: 1. svg erstellt eine Datei (wie in Abbildung 1); 2. Gehen Sie zum Link und laden Sie svg hoch. 3. Wählen Sie mit der Maus das Containerpolygon aus. 4. starten

Nach einigen Iterationen können Sie die SVG-Datei sperren und herunterladen (siehe Abbildung 2).

NB: Polygon und Kreise müssen sich in derselben Datei svg befinden

Abbildung 1

Figur 2

pigreco
quelle
4

Interessantes Problem!

Ähnliches habe ich mit unregelmäßigen Polygonen gemacht (in diesem Fall wurden Gebäude so gepackt, dass sie sich nicht überlappen).

Geben Sie hier die Bildbeschreibung ein

Verwendet Postgresql und Postgis und Python. Grober Algorithmus war

  • Finde einen zufälligen Punkt im Begrenzungsrahmen des Polygons (ST_Envelope)
  • Wenn Sie außerhalb des Polygons zeigen, gehen Sie einen Schritt zurück
  • Erstellen Sie eine Geometrie für den Baum, der diesen zufälligen Punkt zentriert
  • Wenn dies einen vorhandenen platzierten Baum (ST_Overlaps) überlappt, kehren Sie zum Start zurück
  • Baum an Punkt hinzufügen
  • Geh zurück zum Anfang

Ich kann nicht garantieren, dass dies das globale Optimum ergibt. Dafür benötigen Sie einen "Kreispack" -Algorithmus (wie andere bereits erwähnt haben).

Es wird für immer weitergehen, daher müssen Sie Code eingeben, um zu entscheiden, wann Sie das Programm beenden möchten, z

  • Wenn die kombinierte Fläche der platzierten Bäume ein bestimmter Prozentsatz der Fläche des Polygons ist
  • wenn mehr als N Iterationen erforderlich sind, um einen nicht überlappenden Baum zu finden.

Laut Circle Packing auf Wikipedia wird die beste Packungsdichte mit einem sechseckigen Gitter erreicht. Es könnte möglich sein, ein solches Raster mit MMQGIS zu erstellen, dessen Abstand von der Größe Ihrer Bäume abhängt, von denen ich annehme, dass sie identisch sind. Dann platzieren Sie einen Baum auf jedem Scheitelpunkt. Dann haben Sie jedoch das Problem zu wissen, wo das Raster platziert werden muss, um die Anzahl der Bäume zu maximieren.

Steven Kay
quelle