Similitude de l'aspect du terrain
J'ai un ensemble de données de points avec l'aspect du terrain à l'emplacement des points, mesuré en degrés. Je veux calculer la similitude d'aspect entre les points, par exemple 70 ° est similaire à 90 °. C'est simple, mais le problème se pose pour les aspects proches de la direction nord. Un aspect de 350 ° doit être similaire à 10 °. Comment puis-je détecter la similitude de ces deux aspects?
Je recherche une transformation des valeurs qui tienne compte du fait que 358 ° et 2 ° sont presque les mêmes, même si c'est très éloigné dans ma métrique 0-360.
Réponses
Calculez la différence, puis prenez 360 - la différence absolue si la différence absolue est supérieure à 180.
Voici une façon de faire cela dans une fonction R:
d180 = function(a,b){
d = a-b
d = ifelse(abs(d)<180 , d , 360-abs(d))
d
}
et quelques exemples:
> d180(0,0)
[1] 0
> d180(0,1)
[1] -1
> d180(0,180)
[1] 180
> d180(0,181)
[1] 179
> d180(358,2)
[1] 4
> d180(2,358)
[1] 4
Que la distance soit positive ou négative est un peu étrange, renvoyez le abs(d)si vous ne vous en souciez pas ...
Un peu d'une perspective différente, vous pouvez simplement linéariser l'aspect. Voici un pseudo-code extrait de l'outil d'aspect linéaire de notre boîte à outils ArcGIS Geomorphometry & Gradient Metrics. Remarque; nous utilisons (mod (..) * 100)et (36000(360*100) / 100)autorisons deux décimales car il Fmodn'est plus disponible dans ArcGIS.
a = aspect(elev) # degrees
t1 = focal(sin(a/57.296), window=3,"sum")
t2 = focal(cos(a/57.296), window=3,"sum")
linear.aspect = mod(((450-(atan2(t1, t2) * 57.296)) * 100), 36000) / 100
Une autre astuce intéressante consiste à regarder la transformation pente-aspect de Stage (1978) qui fournit une interaction. En supposant une pente en degrés (le papier de scène suppose un pourcentage) et un aspect en degrés, vous pouvez le calculer ainsi:
s = (slope(elev) / 0.572957795786) * 0.01
a = aspect(elev) * (pi / 180)
scosa = s * cos(a)
scosa = s * sin(a)
Exemple de valeurs transformées pour une pente de 50% sur 10 aspects.
Aspect cosine sine
N 0.500 0.000
N30E 0.433 0.250
N45E 0.345 0.345
N60E 0.250 0.433
E 0.000 0.500
ESE -0.354 0.354
S -0.500 0.000
SSW -0.354 -0.354
W 0.000 -0.500
Ou, linéariser avec une origine recentrée. Ceci est fait dans la modélisation de la végétation pour fournir une métrique qui est optimisée pour la productivité du site (par exemple. Roberts et Cooper 1989 transformation TRASP) En supposant des degrés,1 - cos( (pi / 180) (a - 30)) / 2
a = aspect(elev)
trasp = (1 - cos( (3.142 / 180) * (a - 30)) ) / 2
Ces transformations sont disponibles dans ArcGIS dans la boîte à outils Geomorphometry & Gradient Metrics et dans le package R spatialEco (sur CRAN).
Signe de rétention (pseudo):
a = modulus((targetangle-sourceangle),6.283185307179586)
if (a>3.141592653589793)
return a-6.283185307179586
else
return a
(Degrés parlants :) Si le module (-45, 360) ne renvoie pas 315 dans votre langue, alors utilisez le module ((- 45 + 360), 360). Votre module fn doit prendre en charge les valeurs décimales.