Kann jemand einen Algorithmus vorschlagen, um eine Heatmap zur Visualisierung der Punktdiversität zu generieren? Eine Beispielanwendung wäre die Kartierung von Gebieten mit hoher Artenvielfalt. Bei einigen Arten wurde jede einzelne Pflanze kartiert, was zu einer hohen Punktzahl führte, die jedoch für die Vielfalt des Gebiets nur eine sehr geringe Bedeutung hatte. Andere Bereiche haben wirklich eine hohe Vielfalt.
Berücksichtigen Sie die folgenden Eingabedaten:
x y cat
0.8 8.1 B
1.1 8.9 A
1.6 7.7 C
2.2 8.2 D
7.5 0.9 A
7.5 1.2 A
8.1 1.5 A
8.7 0.3 A
1.9 2.1 B
4.5 7.0 C
3.8 4.0 D
6.6 4.8 A
6.2 2.4 B
2.2 9.1 B
1.7 4.7 C
7.5 7.3 D
9.2 1.2 A
und resultierende Karte:
Im oberen linken Quadranten gibt es ein sehr vielfältiges Feld, während im unteren rechten Quadranten ein Gebiet mit hoher Punktkonzentration, aber geringer Diversität vorhanden ist. Zwei Möglichkeiten, die Vielfalt zu visualisieren, könnten darin bestehen, eine herkömmliche Heatmap zu verwenden oder die Anzahl der in jedem Polygon dargestellten Kategorien zu zählen. Wie die folgenden Bilder zeigen, sind diese Ansätze nur eingeschränkt anwendbar, da die Heatmap rechts unten die größte Intensität aufweist, während der Binning - Ansatz bei nur einer Kategorie genau gleich aussehen würde (dies könnte durch Vergrößern der Polygoneimer, aber dann wird das Ergebnis unnötig körnig).
Ein Ansatz, den ich mir vorgestellt habe, besteht darin, einen herkömmlichen Heatmap-Algorithmus mit der Anzahl der Punkte verschiedener Kategorien innerhalb eines definierten Radius zu primen und diese Anzahl dann als Gewicht für den Punkt beim Generieren der Heatmap zu verwenden. Ich denke jedoch, dass dies zu unerwünschten Artefakten führen kann, wie zum Beispiel einer gegenseitigen Verstärkung, die zu sehr scharfen Ergebnissen führt. Eng kartierte Punkte desselben Typs würden sich auch weiterhin als hohe Konzentrationen zeigen, nur nicht in gleichem Maße.
Ein anderer Ansatz (wahrscheinlich besser, aber rechenintensiver) wäre:
- Berechnen Sie die Gesamtzahl der Kategorien im Datensatz
- Für jedes Pixel im Ausgabebild:
- Für jede Kategorie:
- Berechnen Sie die Entfernung zum nächsten repräsentativen Punkt (r) [wahrscheinlich begrenzt durch einen Radius, ab dem der Einfluss vernachlässigbar ist]
- Addiere eine Gewichtung proportional zu 1 / r 2
- Für jede Kategorie:
Gibt es bereits Algorithmen, die ich nicht kenne, oder andere Möglichkeiten, um Vielfalt zu visualisieren?
Bearbeiten
Gemäß dem Vorschlag von Tomislav Muic habe ich die Heatmaps für jede Kategorie berechnet und sie mit der folgenden Formel (QGIS-Raster-Rechner) normalisiert:
((heatmap_A@1 >= 1) + (heatmap_A@1 < 1) * heatmap_A@1) +
((heatmap_B@1 >= 1) + (heatmap_B@1 < 1) * heatmap_B@1) +
((heatmap_C@1 >= 1) + (heatmap_C@1 < 1) * heatmap_C@1) +
((heatmap_D@1 >= 1) + (heatmap_D@1 < 1) * heatmap_D@1)
mit folgendem Ergebnis (Kommentare unter seiner Antwort):
Antworten:
Erstellen Sie eine Heatmap für jede Kategorie.
Summieren Sie dann die Heatmaps und normalisieren Sie sie anhand der Anzahl der Kategorien.
Dies könnte es wert sein, erkundet zu werden.
quelle