En matemáticas, la pendiente o gradiente de un plano es un número que describe tanto la dirección como la inclinación de este. Por otro lado, el aspecto se refiere a la orientación de la pendiente del plano en relación con los puntos cardinales. En breve, aspecto es la dirección de la brújula que enfrenta una pendiente. En este cuaderno vamos aprender a crear un DEM y a calcular la pendiente y la orientacion de un plano:

rm(list=ls())
library(raster)

Vamos a crear un juguete DEM. Tenga en cuenta que es necesario pasar las coordenadas del cuadro delimitador (mínimo y máximo a lo largo de los dos ejes, x e y):

ndem <- raster(ncol=4, nrow=4, xmn=100, xmx=120, ymn=100, ymx=120)

Ahora, vamos a mirar el numero de celdas que tiene nuestro DEM, para esto hacemos usop de la funcion “ncell()”:

ncell(ndem)
[1] 16

Luego, miramos la resolución espacial (es decir, el tamaño de celda) de DEM, para esto usamos “res()”:

res(ndem)
[1] 5 5

Ahora, vamos asignar los valores de cada celda que compone nuestro DEM, para esto debemos tener encuenta el orden, ya que el primer valor corresponde a la casilla superior izquierda y se extiende hacia la derecha, cuando se acaban las celdas de esta fila vuelve y empieza en la izquierda:

valores <- c(60, 35, 5, 28, 33, 49, 50, 18, 7, 88, 2, 22, 75, 13, 29, 32)
(values(ndem) <- valores)
 [1] 60 35  5 28 33 49 50 18  7 88  2 22 75 13 29 32

Tracemos el DEM con los valores de elevación que suministramos anteriormente:

plot(ndem, main ="Calcule slope & aspect for this DEM")
text(ndem)

Asignemos un sistema de referencia de coordenadas al DEM que estamos trabajando:

crs(ndem) <- CRS('+init=epsg:3115')
(slope = terrain(ndem, 'slope', unit='degrees', neighbors=8))
class      : RasterLayer 
dimensions : 4, 4, 16  (nrow, ncol, ncell)
resolution : 5, 5  (x, y)
extent     : 100, 120, 100, 120  (xmin, xmax, ymin, ymax)
crs        : +init=epsg:3115 +proj=tmerc +lat_0=4.596200416666666 +lon_0=-77.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs 
source     : memory
names      : slope 
values     : 54.63388, 75.75706  (min, max)

Calculo de la pendiente y el aspecto

plot(slope, main = "Pendiente")
text(slope)

(aspecto = terrain(ndem, 'aspect', unit='degrees', neighbors=8))
class      : RasterLayer 
dimensions : 4, 4, 16  (nrow, ncol, ncell)
resolution : 5, 5  (x, y)
extent     : 100, 120, 100, 120  (xmin, xmax, ymin, ymax)
crs        : +init=epsg:3115 +proj=tmerc +lat_0=4.596200416666666 +lon_0=-77.07750791666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs 
source     : memory
names      : aspect 
values     : 27.47443, 142.5946  (min, max)
plot(aspecto, main = "Aspecto")
text(aspecto)

LS0tDQp0aXRsZTogIlBlbmRpZW50ZXMgeSBPcmllbnRhY2nDs24iDQphdXRob3I6IExpemV0aCBDYXN0cm8NCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCkVuIG1hdGVtw6F0aWNhcywgbGEgcGVuZGllbnRlIG8gZ3JhZGllbnRlIGRlIHVuIHBsYW5vIGVzIHVuIG7Dum1lcm8gcXVlIGRlc2NyaWJlIHRhbnRvIGxhIGRpcmVjY2nDs24gY29tbyBsYSBpbmNsaW5hY2nDs24gZGUgZXN0ZS4NClBvciBvdHJvIGxhZG8sIGVsIGFzcGVjdG8gc2UgcmVmaWVyZSBhIGxhIG9yaWVudGFjacOzbiBkZSBsYSBwZW5kaWVudGUgZGVsIHBsYW5vIGVuIHJlbGFjacOzbiBjb24gbG9zIHB1bnRvcyBjYXJkaW5hbGVzLiBFbiBicmV2ZSwgYXNwZWN0byBlcyBsYSBkaXJlY2Npw7NuIGRlIGxhIGJyw7pqdWxhIHF1ZSBlbmZyZW50YSB1bmEgcGVuZGllbnRlLg0KRW4gZXN0ZSBjdWFkZXJubyB2YW1vcyBhcHJlbmRlciBhIGNyZWFyIHVuIERFTSB5IGEgY2FsY3VsYXIgbGEgcGVuZGllbnRlIHkgbGEgb3JpZW50YWNpb24gZGUgdW4gcGxhbm86DQoNCmBgYHtyfQ0Kcm0obGlzdD1scygpKQ0KbGlicmFyeShyYXN0ZXIpDQpgYGANClZhbW9zIGEgY3JlYXIgdW4ganVndWV0ZSBERU0uIFRlbmdhIGVuIGN1ZW50YSBxdWUgZXMgbmVjZXNhcmlvIHBhc2FyIGxhcyBjb29yZGVuYWRhcyBkZWwgY3VhZHJvIGRlbGltaXRhZG9yIChtw61uaW1vIHkgbcOheGltbyBhIGxvIGxhcmdvIGRlIGxvcyBkb3MgZWplcywgeCBlIHkpOg0KYGBge3J9DQpuZGVtIDwtIHJhc3RlcihuY29sPTQsIG5yb3c9NCwgeG1uPTEwMCwgeG14PTEyMCwgeW1uPTEwMCwgeW14PTEyMCkNCmBgYA0KQWhvcmEsIHZhbW9zIGEgbWlyYXIgZWwgbnVtZXJvIGRlIGNlbGRhcyBxdWUgdGllbmUgbnVlc3RybyBERU0sIHBhcmEgZXN0byBoYWNlbW9zIHVzb3AgZGUgbGEgZnVuY2lvbiAibmNlbGwoKSI6DQpgYGB7cn0NCm5jZWxsKG5kZW0pDQpgYGANCkx1ZWdvLCBtaXJhbW9zIGxhIHJlc29sdWNpw7NuIGVzcGFjaWFsIChlcyBkZWNpciwgZWwgdGFtYcOxbyBkZSBjZWxkYSkgZGUgREVNLCBwYXJhIGVzdG8gdXNhbW9zICJyZXMoKSI6DQpgYGB7cn0NCnJlcyhuZGVtKQ0KYGBgDQpBaG9yYSwgdmFtb3MgYXNpZ25hciBsb3MgdmFsb3JlcyBkZSBjYWRhIGNlbGRhIHF1ZSBjb21wb25lIG51ZXN0cm8gREVNLCBwYXJhIGVzdG8gZGViZW1vcyB0ZW5lciBlbmN1ZW50YSBlbCBvcmRlbiwgeWEgcXVlIGVsIHByaW1lciB2YWxvciBjb3JyZXNwb25kZSBhIGxhIGNhc2lsbGEgc3VwZXJpb3IgaXpxdWllcmRhIHkgc2UgZXh0aWVuZGUgaGFjaWEgbGEgZGVyZWNoYSwgY3VhbmRvIHNlIGFjYWJhbiBsYXMgY2VsZGFzIGRlIGVzdGEgZmlsYSB2dWVsdmUgeSBlbXBpZXphIGVuIGxhIGl6cXVpZXJkYToNCmBgYHtyfQ0KdmFsb3JlcyA8LSBjKDYwLCAzNSwgNSwgMjgsIDMzLCA0OSwgNTAsIDE4LCA3LCA4OCwgMiwgMjIsIDc1LCAxMywgMjksIDMyKQ0KYGBgDQpgYGB7cn0NCih2YWx1ZXMobmRlbSkgPC0gdmFsb3JlcykNCmBgYA0KVHJhY2Vtb3MgZWwgREVNIGNvbiBsb3MgdmFsb3JlcyBkZSBlbGV2YWNpw7NuIHF1ZSBzdW1pbmlzdHJhbW9zIGFudGVyaW9ybWVudGU6DQpgYGB7cn0NCnBsb3QobmRlbSwgbWFpbiA9IkNhbGN1bGUgc2xvcGUgJiBhc3BlY3QgZm9yIHRoaXMgREVNIikNCnRleHQobmRlbSkNCmBgYA0KQXNpZ25lbW9zIHVuIHNpc3RlbWEgZGUgcmVmZXJlbmNpYSBkZSBjb29yZGVuYWRhcyBhbCBERU0gcXVlIGVzdGFtb3MgdHJhYmFqYW5kbzoNCmBgYHtyfQ0KY3JzKG5kZW0pIDwtIENSUygnK2luaXQ9ZXBzZzozMTE1JykNCmBgYA0KYGBge3J9DQooc2xvcGUgPSB0ZXJyYWluKG5kZW0sICdzbG9wZScsIHVuaXQ9J2RlZ3JlZXMnLCBuZWlnaGJvcnM9OCkpDQpgYGANCiMjIyBDYWxjdWxvIGRlIGxhIHBlbmRpZW50ZSB5IGVsIGFzcGVjdG8NCmBgYHtyfQ0KcGxvdChzbG9wZSwgbWFpbiA9ICJQZW5kaWVudGUiKQ0KdGV4dChzbG9wZSkNCmBgYA0KYGBge3J9DQooYXNwZWN0byA9IHRlcnJhaW4obmRlbSwgJ2FzcGVjdCcsIHVuaXQ9J2RlZ3JlZXMnLCBuZWlnaGJvcnM9OCkpDQpgYGANCmBgYHtyfQ0KcGxvdChhc3BlY3RvLCBtYWluID0gIkFzcGVjdG8iKQ0KdGV4dChhc3BlY3RvKQ0KYGBgDQoNCg==