Cuando se trabaja con datos raster del tipo DEM es util poder calcular su pendiente y su aspecto para ello relaizmaos el siguiente proceso. Pirmero cargamos la libreria

library(raster)
dem <- raster(ncol=3, nrow=3, xmn=100, xmx=115, ymn=100, ymx=115)
ncell(dem)
[1] 9
#resolución de la celda
res(dem)
[1] 5 5
valores <- c(50, 45, 50, 30, 30, 30, 8, 10, 10)
(values(dem) <- valores)
[1] 50 45 50 30 30 30  8 10 10
plot(dem, main = "DEM")
text(dem)

#el codigo epsg 3115 es de MAGMA-SIRGAS/colombia west zone
crs(dem) <- CRS('+init=epsg:3115')

Slope and aspect calculation

(slope = terrain(dem, 'slope', unit='degrees', neighbors=8))
class      : RasterLayer 
dimensions : 3, 3, 9  (nrow, ncol, ncell)
resolution : 5, 5  (x, y)
extent     : 100, 115, 100, 115  (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     : 75.25766, 75.25766  (min, max)

Slope calculation

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

(aspecto = terrain(dem, 'aspect', unit='degrees', neighbors=8))
class      : RasterLayer 
dimensions : 3, 3, 9  (nrow, ncol, ncell)
resolution : 5, 5  (x, y)
extent     : 100, 115, 100, 115  (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     : 180.7538, 180.7538  (min, max)

Aspect calculation

plot(aspecto, main = "Aspecto")
text(aspecto)

##Assigment Ahora utilicemos más valores para DEM y veremos como la pendiente y el aspecto cambian, esta vez utilizaremos un raster con 4 filas y 4 columnas

dem1 <- raster(ncol=4, nrow=4, xmn=100, xmx=120, ymn=100, ymx=120)
ncell(dem1)
[1] 16
res(dem1)
[1] 5 5
valores <- c(48, 50, 45, 50, 35, 30, 30, 30, 8, 8, 10, 10, 25, 15, 20, 20)
(values(dem1) <- valores)
 [1] 48 50 45 50 35 30 30 30  8  8 10 10 25 15 20 20
plot(dem1, main = "DEM")
text(dem1)

#el codigo epsg 3115 es de MAGMA-SIRGAS/colombia west zone
crs(dem1) <- CRS('+init=epsg:3115')
(slope = terrain(dem1, '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     : 48.92371, 75.91133  (min, max)
plot(slope, main = "Pendiente")
text(slope)

(aspecto = terrain(dem1, '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     : 173.1572, 191.3099  (min, max)
plot(aspecto, main = "Aspecto")
text(aspecto)

LS0tDQp0aXRsZTogIlNsb3BlIGFuZCBhc3BlY3QgY2FsY3VsYXRpb24iDQphdXRob3I6ICJDYXJvbCBDYWJyZXJhIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KQ3VhbmRvIHNlIHRyYWJhamEgY29uIGRhdG9zIHJhc3RlciBkZWwgdGlwbyBERU0gZXMgdXRpbCBwb2RlciBjYWxjdWxhciBzdSBwZW5kaWVudGUgeSBzdSBhc3BlY3RvIHBhcmEgZWxsbyByZWxhaXptYW9zIGVsIHNpZ3VpZW50ZSBwcm9jZXNvLiBQaXJtZXJvIGNhcmdhbW9zIGxhIGxpYnJlcmlhIA0KYGBge3J9DQpsaWJyYXJ5KHJhc3RlcikNCmRlbSA8LSByYXN0ZXIobmNvbD0zLCBucm93PTMsIHhtbj0xMDAsIHhteD0xMTUsIHltbj0xMDAsIHlteD0xMTUpDQpuY2VsbChkZW0pDQojcmVzb2x1Y2nDs24gZGUgbGEgY2VsZGENCnJlcyhkZW0pDQpgYGANCg0KYGBge3J9DQp2YWxvcmVzIDwtIGMoNTAsIDQ1LCA1MCwgMzAsIDMwLCAzMCwgOCwgMTAsIDEwKQ0KKHZhbHVlcyhkZW0pIDwtIHZhbG9yZXMpDQpwbG90KGRlbSwgbWFpbiA9ICJERU0iKQ0KdGV4dChkZW0pDQpgYGANCg0KYGBge3J9DQojZWwgY29kaWdvIGVwc2cgMzExNSBlcyBkZSBNQUdNQS1TSVJHQVMvY29sb21iaWEgd2VzdCB6b25lDQpjcnMoZGVtKSA8LSBDUlMoJytpbml0PWVwc2c6MzExNScpDQoNCmBgYA0KDQojIyBTbG9wZSBhbmQgYXNwZWN0IGNhbGN1bGF0aW9uDQpgYGB7cn0NCihzbG9wZSA9IHRlcnJhaW4oZGVtLCAnc2xvcGUnLCB1bml0PSdkZWdyZWVzJywgbmVpZ2hib3JzPTgpKQ0KYGBgDQoNCiMjIyBTbG9wZSBjYWxjdWxhdGlvbg0KYGBge3J9DQpwbG90KHNsb3BlLCBtYWluID0gIlBlbmRpZW50ZSIpDQp0ZXh0KHNsb3BlKQ0KYGBgDQoNCmBgYHtyfQ0KKGFzcGVjdG8gPSB0ZXJyYWluKGRlbSwgJ2FzcGVjdCcsIHVuaXQ9J2RlZ3JlZXMnLCBuZWlnaGJvcnM9OCkpDQpgYGANCiMjIyBBc3BlY3QgY2FsY3VsYXRpb24NCmBgYHtyfQ0KcGxvdChhc3BlY3RvLCBtYWluID0gIkFzcGVjdG8iKQ0KdGV4dChhc3BlY3RvKQ0KYGBgDQoNCiMjQXNzaWdtZW50DQpBaG9yYSB1dGlsaWNlbW9zIG3DoXMgdmFsb3JlcyBwYXJhIERFTSB5IHZlcmVtb3MgY29tbyBsYSBwZW5kaWVudGUgeSBlbCBhc3BlY3RvIGNhbWJpYW4sIGVzdGEgdmV6IHV0aWxpemFyZW1vcyB1biByYXN0ZXIgY29uIDQgZmlsYXMgeSA0IGNvbHVtbmFzDQpgYGB7cn0NCmRlbTEgPC0gcmFzdGVyKG5jb2w9NCwgbnJvdz00LCB4bW49MTAwLCB4bXg9MTIwLCB5bW49MTAwLCB5bXg9MTIwKQ0KbmNlbGwoZGVtMSkNCnJlcyhkZW0xKQ0KYGBgDQoNCmBgYHtyfQ0KdmFsb3JlcyA8LSBjKDQ4LCA1MCwgNDUsIDUwLCAzNSwgMzAsIDMwLCAzMCwgOCwgOCwgMTAsIDEwLCAyNSwgMTUsIDIwLCAyMCkNCih2YWx1ZXMoZGVtMSkgPC0gdmFsb3JlcykNCnBsb3QoZGVtMSwgbWFpbiA9ICJERU0iKQ0KdGV4dChkZW0xKQ0KYGBgDQoNCmBgYHtyfQ0KI2VsIGNvZGlnbyBlcHNnIDMxMTUgZXMgZGUgTUFHTUEtU0lSR0FTL2NvbG9tYmlhIHdlc3Qgem9uZQ0KY3JzKGRlbTEpIDwtIENSUygnK2luaXQ9ZXBzZzozMTE1JykNCmBgYA0KDQpgYGB7cn0NCihzbG9wZSA9IHRlcnJhaW4oZGVtMSwgJ3Nsb3BlJywgdW5pdD0nZGVncmVlcycsIG5laWdoYm9ycz04KSkNCmBgYA0KDQpgYGB7cn0NCnBsb3Qoc2xvcGUsIG1haW4gPSAiUGVuZGllbnRlIikNCnRleHQoc2xvcGUpDQpgYGANCg0KYGBge3J9DQooYXNwZWN0byA9IHRlcnJhaW4oZGVtMSwgJ2FzcGVjdCcsIHVuaXQ9J2RlZ3JlZXMnLCBuZWlnaGJvcnM9OCkpDQpgYGANCg0KYGBge3J9DQpwbG90KGFzcGVjdG8sIG1haW4gPSAiQXNwZWN0byIpDQp0ZXh0KGFzcGVjdG8pDQpgYGANCg0K