Ich versuche einen Algorithmus zu finden, der die kleinstmöglichen Polygone bestimmen kann, um eine Reihe von Punkten abzudecken.
Ich weiß, wie man die konvexe Hülle um alle Punkte herum bringt, aber sagen wir, dass sich die Punkte auf verschiedenen Inseln befinden. Ist es möglich festzustellen, dass zwischen verschiedenen Gruppen eine Lücke besteht, und für jede Gruppe separate Polygone zu erhalten?
Antworten:
Es hört sich so an, als ob Sie zuerst einen Clustering-Algorithmus benötigen (z. B. K-bedeutet Clustering), gefolgt von einem Rumpf (konvexer Rumpf, aber ein konkaver Rumpf hat möglicherweise eine kleinere Fläche, ist jedoch schwieriger zu implementieren).
quelle
Das "Clustr" -Tool, das wir (d) bei Flickr verwenden, um die aus Fotos mit Geotags abgeleiteten Shapefiles zu generieren, kann von Nutzen sein:
https://github.com/straup/Clustr
(Stackexchange verhindert, dass ich mehr als 2 Links in diesen Beitrag einfügen kann. Wenn Sie nach "der Form von Alpha" suchen, finden Sie den Blog-Beitrag code.flickr, den wir bei der Ankündigung der Shapefiles erstellt haben.)
Es wurde entwickelt, um die Kontur aus einer sich ständig ändernden Punktetasche (auch Fotos genannt) zu erzeugen. Die eigentlichen mathematischen Bits sind hier:
http://www.cgal.org/Manual/3.2/doc_html/cgal_manual/Alpha_shapes_3/Chapter_main.html
Clustr hat einige bekannte Fehler, funktioniert aber meistens ...
quelle
Aus Datenbanksicht klingt es so, als ob Sie die Punkte auf den Ilands gruppieren und für jede Gruppe eine konvexe Hülle erstellen möchten.
in postgis würde es ungefähr so aussehen:
/ Nicklas
quelle
arcpy.AggregatePoints_cartography (pntGeometryList, outAppendFeatureClass, buffer_radius)
Wenn pntGeometryList Ihre Liste von Punkten ist, outAppendFeatureClass die Feature-Klasse, die die Aggregation erstellt, und buffer_radius, die die Verknüpfungen zwischen jedem nach außen gerichteten Punkt bestimmt.
quelle
Zuerst dachte ich, dass Dans Vorschlag für k-means Sinn macht, aber nachdem ich mir die Ergebnisse der Mausdatensätze auf der Wikipedia-Seite für k-means angesehen habe , sieht es so aus, als ob das Clustering von Expectation-Maximization näher an dem liegt, was Sie wollen.
quelle