Quelqu'un peut-il suggérer un algorithme pour générer une carte thermique pour visualiser la diversité des points? Un exemple d'application serait de cartographier des zones de grande diversité d'espèces. Pour certaines espèces, chaque plante a été cartographiée, ce qui entraîne un nombre de points élevé, mais avec très peu de signification en termes de diversité de la zone. D'autres régions ont véritablement une grande diversité.
Tenez compte des données d'entrée suivantes:
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
et la carte résultante:
Dans le quadrant supérieur gauche, il y a un patch très diversifié, tandis que dans le quadrant inférieur droit, il y a une zone avec une concentration ponctuelle élevée, mais une faible diversité. Deux façons de visualiser la diversité pourraient être d'utiliser une carte thermique traditionnelle ou de compter le nombre de catégories représentées dans chaque polygone. Comme le montrent les images suivantes, ces approches ont une utilisation limitée, car la carte thermique montre la plus grande intensité en bas à droite, tandis que l'approche de regroupement serait exactement la même s'il n'y avait qu'une seule catégorie (cela pourrait être résolu en augmentant la taille de la polygone bins, mais le résultat devient alors inutilement granuleux).
Une approche à laquelle j'ai pensé pour ce faire serait d'amorcer un algorithme de carte thermique traditionnel par le nombre de points de différentes catégories dans un rayon défini, puis d'utiliser ce compte comme poids pour le point lors de la génération de la carte thermique. Cependant, je pense que cela pourrait être sujet à des artefacts indésirables, comme un renforcement mutuel conduisant à des résultats très nets. De plus, des points étroitement cartographiés du même type continueraient à apparaître comme des concentrations élevées, mais pas dans la même mesure.
Une autre approche (probablement meilleure mais plus coûteuse en termes de calcul) serait:
- Calculez le nombre total de catégories dans l'ensemble de données
- Pour chaque pixel de l'image de sortie:
- Pour chaque catégorie:
- calculer la distance jusqu'au point représentatif le plus proche (r) [limitant probablement d'un rayon au-delà duquel l'influence est négligeable]
- ajouter une pondération proportionnelle à 1 / r 2
- Pour chaque catégorie:
Y a-t-il déjà des algorithmes que je ne connais pas pour faire cela, ou d'autres façons de visualiser la diversité?
Éditer
Suite à la suggestion de Tomislav Muic, j'ai calculé les heatmaps pour chaque catégorie et les ai normalisés en utilisant la formule suivante (calculatrice raster QGIS):
((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)
avec le résultat suivant (commentaires sous sa réponse):
Réponses:
Essayez de créer une carte thermique pour chaque catégorie distincte.
Additionnez ensuite les cartes thermiques et normalisez-les en utilisant un certain nombre de catégories.
Cela pourrait valoir la peine d'être exploré.
la source