Ich habe einen Vektordatensatz ländlicher Breitbanddatenpunkte (wie schnell usw.) und möchte untersuchen, ob es Punktcluster mit ähnlichen Merkmalen gibt, und Polygone zeichnen, die diese umfassen.
Ich kann zum Beispiel 45.000 Punkte in einem einzelnen PostGIS-Datensatz haben, der über eine Landschaft verteilt ist. Ich möchte Cluster identifizieren, die innerhalb von x km voneinander liegen und deren Geschwindigkeit unter y kbps liegt, und für jeden qualifizierenden Cluster konvexe Hüllen erzeugen.
Gibt es eine einfache Möglichkeit, dies zum Beispiel in QGIS zu tun?
qgis
qgis-processing
clustering
Adrian
quelle
quelle
Antworten:
Ich habe Teile aus mehreren Vorschlägen kombiniert und einige meiner eigenen hinzugefügt und eine Lösung gefunden, die für mich gut funktioniert - und das alles aus QGis heraus!
Ich habe zuerst ein PostGis SELECT ausgeführt, um die Punkte zu finden, die die richtigen gemeinsamen Attribute haben und innerhalb von x km voneinander liegen:
(Ziemlich direkt aus Mannings sehr gutem PostGis in Action- Buch, nur mit einem Self-Join)
Ich habe dann das Carson Farmer's ManageR Plugin geladen und die Ebene importiert. Von hier aus folgte ich dem Clustering - Prozess vorgeschlagen PAM hier , und das Ergebnis in eine Formdatei exportiert, auf dem Convex Hulls in Sekunden berechnet wurden fTools (Carson tut umgehen!).
quelle
Obwohl dies keine QGIS-Lösung ist, würde ich mich persönlich für eine explorative Analyse mit SaTScan entscheiden . Es ist schnell, gut dokumentiert und weit verbreitet, sodass Sie beim Starten keine Probleme haben sollten. Für 45.000 Punkte ist möglicherweise etwas RAM erforderlich.
Ich bin nicht sicher, ob es direkt von Postgres lesen kann, aber einfach aus DBF- und Textdateien importiert werden kann.
Die Ausgabe der Analyse kann dann problemlos in Postgres oder QGIS zurückgelesen werden. Sie können nach kreisförmigen Clustern oder Ellipsen suchen (möglicherweise hilfreich, wenn Ihre Daten eine bestimmte Art von Siedlungen enthalten, z. B. langgestreckte Städte / Dörfer in Tälern usw.). Sie können dann Polygone oder Ellipsen generieren oder nur die Positionen anzeigen, die Mitglieder von Clustern sind.
Für eine schnelle Vorschau der Ergebnisse in Google Earth können Sie auch das SaTScan to Google Earth-Konvertierungstool von NAACCR verwenden .
Wichtig: Wenn Sie Monte-Carlo-Simulationen ausführen (mindestens 99), können Sie auch etwas über die statistische Signifikanz Ihrer Cluster aussagen. Die Interpretation und Begründung dieser Cluster wird ein weiteres Thema sein, wie es zumindest in den letzten zwei Jahrzehnten in den Raumwissenschaften diskutiert wurde (glaube ich;).
Sie könnten versuchen, eine rein räumliche Analyse durchzuführen, um nach Clustern mit hohen, niedrigen oder hohen und niedrigen Werten zu suchen. Wenn Sie einige zeitliche Attribute in Ihren Daten haben (tägliche, wöchentliche Aggregationen), dann halte ich es für wirklich interessant, einige Raum-Zeit-Modelle auszuführen.
quelle
SciPy hat ein Clustering-Paket (für Python), Sie können es in der Python-Konsole verwenden, ein einfaches Plugin dafür schreiben oder PL / Python in postgis verwenden.
http://docs.scipy.org/doc/scipy/reference/cluster.html
Nach der Analyse verwenden Sie einfach f-tools, um die konvexen Rümpfe zu erstellen.
quelle
Es gibt ein ähnliches Beispiel von dem, was Sie wollen , mit R und GRASS zu tun hier . Alternativ können Sie die vorgeschlagenen Clustering-Tools von scipy verwenden und dann die Berechnungen der konvexen Hülle mit dieser Methode durchführen .
quelle
Sie können das Ftools-Plugin ausprobieren.
Vector
>Geoprocessing Tools
>Convex Hulls
.Es gibt eine Option
Create convex hulls based on input field
, bei der der Eingabefeldparameter aus den Attributen Ihrer Eingabepunkte stammen soll.quelle