Wie benutzt man GRASS's v.kernel?

12

Ich bin begeistert, wie man GRASS's v.kernel benutzt.

Ich habe eine Vektorschicht von ungefähr 2,5 Millionen Punkten. Ich möchte eine Heatmap mit v.kernel erstellen, um die Konzentrationen anzuzeigen, da ich variable Instanzen mit Überlappungspunkten habe, manchmal mit großen Überlappungen.

Ich habe diese Vektorebene bereits in GRASS erhalten und sie wird einwandfrei angezeigt.

Ich habe versucht, den Befehl v.kernel von GRASS zu verwenden, basierend auf dem, was ich hier und in anderen Foren gesehen habe, und ich kann ihn nicht dazu bringen, etwas anderes als ein Raster auszugeben, das nur ein rosa Quadrat ist.

Hier ist der Befehl, den ich benutze:

v.kernel --verbose input=master_grass7 output=master_grass7a_heatmap stddeviation=.0001

Ich habe die Standardabweichung auf alle möglichen Werte von 1000000 bis .000001 eingestellt und sie hatte keine Auswirkung.

Ich habe die v.kernel-Dokumentation wiederholt gelesen und verstehe nicht wirklich, worauf es ankommt . Zumindest handelt es sich bei den Anweisungen um esoterische Konzepte, nichts Praktisches. Ich habe auch den Quellcode überprüft und verstehe ihn auch nicht wirklich. Ja, ich kann C lesen. Das Problem ist, dass es von vielen Dingen abhängt, die an anderer Stelle in GRASS GIS definiert sind.

Ich habe auch viel bei Google gesucht und kann keinen umfassenden Leitfaden finden. Alles, was ich bekomme, sind verstreute Kopien der v.kernel-Dokumentations- / Manpage oder von Leuten, die anscheinend dafür gesorgt haben, dass sie ohne viel Aufhebens funktionieren.

Ich habe auch das Konzept der Kernel Density Estimation (KDE) überprüft, und selbst dann verstehe ich nicht, wie der Befehl v.kernel verwendet wird. Dieser Befehl scheint eine spezielle Interpretation von KDE zu sein. Die Schalter scheinen nicht den allgemeinen KDE-Konzepten zu entsprechen.

Zurück zur Hauptfrage: Wie kann jemand, der nicht mit der GRASS-Produktentwicklung vertraut ist, den Befehl v.kernel verwenden? Gibt es eine einfache Übersetzung?

Aren Cambre
quelle

Antworten:

9

Der v.kernelAlgorithmus berechnet die Dichte von Vektorpunkten für jede Zelle einer Rasterkarte. Wenn Sie bisher nur Vektorobjekte verwendet haben, besteht die Möglichkeit, dass Sie Ihre region(die nicht nur die Ausmaße, sondern auch die Rasterauflösung definiert) nicht angemessen eingerichtet haben: Sie haben wahrscheinlich regionnur eine Zeile und eine Spalte festgelegt, die bedeutet, dass der v.kernelAlgorithmus die Kerneldichte nur als einen einzigen Wert über die gesamte Karte berechnet. Eine Regionseinstellung wie diese ist in Ordnung, wenn Sie keine Rasterkarten verwenden, da sich die Vektorkarten nicht um die Auflösungseinstellungen kümmern. Überprüfen Sie Ihre Regionseinstellungen mit g.region -p. Wenn rowsund colsauf 1 eingestellt ist, erhöhen Sie die Auflösung mit

g.region rows=<number of rows> cols=<number of columns>

oder

g.region res=<length>

wo <length>ist die Länge einer Auflösungszelle in Karteneinheiten.

Jake
quelle