Introducción

Este es un cuaderno R Markdown (http://rmarkdown.rstudio.com) para ilustrar el cálculo de pendiente y orientación. En matemáticas, la pendiente o pendiente de un plano es un número que describe tanto la dirección como la inclinación del plano. Por otro lado, el aspecto se refiere a la orientación de la pendiente del plano en relación con los puntos cardinales. En resumen, el aspecto es la dirección de la brújula a la que se enfrenta una pendiente. Antes de continuar, lea los dos temas siguientes:

  1. ¿Cómo funciona la pendiente? (http://desktop.arcgis.com/en/arcmap/10.6/tools/spatial-analyst-toolbox/how-slope-works.htm)

  2. ¿Cómo funciona el aspecto? (http://desktop.arcgis.com/en/arcmap/10.6/tools/spatial-analyst-toolbox/how-aspect-works.htm)

rm(list=ls())
library(raster)
Loading required package: sp

Creación de ráster

Creemos un DEM de juguete. Tenga en cuenta que es necesario pasar las coordenadas del cuadro delimitador (mínimo y máximo a lo largolos dos ejes, “x” y “y”):

dem <- raster(ncol=3, nrow=3, xmn=100, xmx=115, ymn=100, ymx=115)

¿Cuántas células componen DEM?

ncell(dem)
[1] 9

¿Cuál es la resolución espacial (es decir, el tamaño de celda) de DEM?

res(dem)
[1] 5 5

Asignar valores de elevación a DEM:

valores <- c(50, 49, 53, 35, 36, 35, 9, 15, 16)
(values(dem) <- valores)
[1] 50 49 53 35 36 35  9 15 16

Tracemos el DEM a lo largo de los valores de elevación:

plot(dem, main = "DEM")
text(dem)

Asignemos un sistema de referencia de coordenadas a DEM:

crs(dem) <- CRS('+init=epsg:3115')

Cálculo de pendiente y aspecto

(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 
source     : memory
names      : slope 
values     : 74.71263, 74.71263  (min, max)
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 
source     : memory
names      : aspect 
values     : 183.9182, 183.9182  (min, max)
plot(aspecto, main = "Aspecto")
text(aspecto)

Asignación

creamos un nuevo dem:

dem2 <- raster(ncol=4, nrow=4, xmn=100, xmx=120, ymn=100, ymx=120)
ncell(dem2)
[1] 16
res(dem2)
[1] 5 5
valores2 <- c(50, 49, 53,50, 35, 36, 35, 30, 9, 15, 16, 12, 20, 24, 28, 22)
(values(dem2) <- valores2)
 [1] 50 49 53 50 35 36 35 30  9 15 16 12 20 24 28 22
plot(dem2, main="Calcule slope & aspect for this DEM")
text(dem2)

crs(dem2) <- CRS('+init=epsg:3115')
(slope2 = terrain(dem2, '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 
source     : memory
names      : slope 
values     : 42.59043, 74.74518  (min, max)
(aspecto2 = terrain(dem2, '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 
source     : memory
names      : aspect 
values     : 157.6199, 205.56  (min, max)
plot(aspecto2, main = "Aspecto")
text(aspecto2)

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

LS0tDQp0aXRsZTogIkPDoWxjdWxvIGRlIHBlbmRpZW50ZSB5IGFzcGVjdG8iDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCmF1dG9yOiBKb2hhbiBTLiBSb2phcyBDaC4NCkRhdGU6IDE5LzA5LzIwMjANCi0tLQ0KDQojIyBJbnRyb2R1Y2Npw7NuIA0KRXN0ZSBlcyB1biBjdWFkZXJubyBSIE1hcmtkb3duIChodHRwOi8vcm1hcmtkb3duLnJzdHVkaW8uY29tKSBwYXJhIGlsdXN0cmFyIGVsIGPDoWxjdWxvIGRlIHBlbmRpZW50ZSB5IG9yaWVudGFjacOzbi4NCkVuIG1hdGVtw6F0aWNhcywgbGEgcGVuZGllbnRlIG8gcGVuZGllbnRlIGRlIHVuIHBsYW5vIGVzIHVuIG7Dum1lcm8gcXVlIGRlc2NyaWJlIHRhbnRvIGxhIGRpcmVjY2nDs24gY29tbyBsYSBpbmNsaW5hY2nDs24gZGVsIHBsYW5vLg0KUG9yIG90cm8gbGFkbywgZWwgYXNwZWN0byBzZSByZWZpZXJlIGEgbGEgb3JpZW50YWNpw7NuIGRlIGxhIHBlbmRpZW50ZSBkZWwgcGxhbm8gZW4gcmVsYWNpw7NuIGNvbiBsb3MgcHVudG9zIGNhcmRpbmFsZXMuIEVuIHJlc3VtZW4sIGVsIGFzcGVjdG8gZXMgbGEgZGlyZWNjacOzbiBkZSBsYSBicsO6anVsYSBhIGxhIHF1ZSBzZSBlbmZyZW50YSB1bmEgcGVuZGllbnRlLg0KQW50ZXMgZGUgY29udGludWFyLCBsZWEgbG9zIGRvcyB0ZW1hcyBzaWd1aWVudGVzOg0KDQooaSkgwr9Dw7NtbyBmdW5jaW9uYSBsYSBwZW5kaWVudGU/DQooaHR0cDovL2Rlc2t0b3AuYXJjZ2lzLmNvbS9lbi9hcmNtYXAvMTAuNi90b29scy9zcGF0aWFsLWFuYWx5c3QtdG9vbGJveC9ob3ctc2xvcGUtd29ya3MuaHRtKQ0KDQooaWkpIMK/Q8OzbW8gZnVuY2lvbmEgZWwgYXNwZWN0bz8gKGh0dHA6Ly9kZXNrdG9wLmFyY2dpcy5jb20vZW4vYXJjbWFwLzEwLjYvdG9vbHMvc3BhdGlhbC1hbmFseXN0LXRvb2xib3gvaG93LWFzcGVjdC13b3Jrcy5odG0pDQpgYGB7cn0NCnJtKGxpc3Q9bHMoKSkNCmBgYA0KDQpgYGB7cn0NCmxpYnJhcnkocmFzdGVyKQ0KYGBgDQojIyBDcmVhY2nDs24gZGUgcsOhc3Rlcg0KQ3JlZW1vcyB1biBERU0gZGUganVndWV0ZS4gVGVuZ2EgZW4gY3VlbnRhIHF1ZSBlcyBuZWNlc2FyaW8gcGFzYXIgbGFzIGNvb3JkZW5hZGFzIGRlbCBjdWFkcm8gZGVsaW1pdGFkb3IgKG3DrW5pbW8geSBtw6F4aW1vIGEgbG8gbGFyZ29sb3MgZG9zIGVqZXMsICJ4IiB5ICJ5Iik6DQpgYGB7cn0NCmRlbSA8LSByYXN0ZXIobmNvbD0zLCBucm93PTMsIHhtbj0xMDAsIHhteD0xMTUsIHltbj0xMDAsIHlteD0xMTUpDQpgYGANCsK/Q3XDoW50YXMgY8OpbHVsYXMgY29tcG9uZW4gREVNPw0KDQpgYGB7cn0NCm5jZWxsKGRlbSkNCmBgYA0KDQrCv0N1w6FsIGVzIGxhIHJlc29sdWNpw7NuIGVzcGFjaWFsIChlcyBkZWNpciwgZWwgdGFtYcOxbyBkZSBjZWxkYSkgZGUgREVNPw0KYGBge3J9DQpyZXMoZGVtKQ0KYGBgDQpBc2lnbmFyIHZhbG9yZXMgZGUgZWxldmFjacOzbiBhIERFTToNCmBgYHtyfQ0KdmFsb3JlcyA8LSBjKDUwLCA0OSwgNTMsIDM1LCAzNiwgMzUsIDksIDE1LCAxNikNCmBgYA0KDQoNCmBgYHtyfQ0KKHZhbHVlcyhkZW0pIDwtIHZhbG9yZXMpDQpgYGANClRyYWNlbW9zIGVsIERFTSBhIGxvIGxhcmdvIGRlIGxvcyB2YWxvcmVzIGRlIGVsZXZhY2nDs246DQpgYGB7cn0NCnBsb3QoZGVtLCBtYWluID0gIkRFTSIpDQp0ZXh0KGRlbSkNCmBgYA0KQXNpZ25lbW9zIHVuIHNpc3RlbWEgZGUgcmVmZXJlbmNpYSBkZSBjb29yZGVuYWRhcyBhIERFTToNCmBgYHtyfQ0KY3JzKGRlbSkgPC0gQ1JTKCcraW5pdD1lcHNnOjMxMTUnKQ0KYGBgDQojIyBDw6FsY3VsbyBkZSBwZW5kaWVudGUgeSBhc3BlY3RvDQpgYGB7cn0NCihzbG9wZSA9IHRlcnJhaW4oZGVtLCAnc2xvcGUnLCB1bml0PSdkZWdyZWVzJywgbmVpZ2hib3JzPTgpKQ0KYGBgDQpgYGB7cn0NCnBsb3Qoc2xvcGUsIG1haW4gPSAiUGVuZGllbnRlIikNCnRleHQoc2xvcGUpDQpgYGANCg0KYGBge3J9DQooYXNwZWN0byA9IHRlcnJhaW4oZGVtLCAnYXNwZWN0JywgdW5pdD0nZGVncmVlcycsIG5laWdoYm9ycz04KSkNCmBgYA0KYGBge3J9DQpwbG90KGFzcGVjdG8sIG1haW4gPSAiQXNwZWN0byIpDQp0ZXh0KGFzcGVjdG8pDQpgYGANCiMjIEFzaWduYWNpw7NuDQpjcmVhbW9zIHVuIG51ZXZvIGRlbToNCmBgYHtyfQ0KZGVtMiA8LSByYXN0ZXIobmNvbD00LCBucm93PTQsIHhtbj0xMDAsIHhteD0xMjAsIHltbj0xMDAsIHlteD0xMjApDQpgYGANCmBgYHtyfQ0KbmNlbGwoZGVtMikNCnJlcyhkZW0yKQ0KYGBgDQpgYGB7cn0NCnZhbG9yZXMyIDwtIGMoNTAsIDQ5LCA1Myw1MCwgMzUsIDM2LCAzNSwgMzAsIDksIDE1LCAxNiwgMTIsIDIwLCAyNCwgMjgsIDIyKQ0KKHZhbHVlcyhkZW0yKSA8LSB2YWxvcmVzMikNCmBgYA0KDQoNCmBgYHtyfQ0KcGxvdChkZW0yLCBtYWluPSJDYWxjdWxlIHNsb3BlICYgYXNwZWN0IGZvciB0aGlzIERFTSIpDQp0ZXh0KGRlbTIpDQpgYGANCg0KDQpgYGB7cn0NCmNycyhkZW0yKSA8LSBDUlMoJytpbml0PWVwc2c6MzExNScpDQooc2xvcGUyID0gdGVycmFpbihkZW0yLCAnc2xvcGUnLCB1bml0PSdkZWdyZWVzJywgbmVpZ2hib3JzPTgpKQ0KKGFzcGVjdG8yID0gdGVycmFpbihkZW0yLCAnYXNwZWN0JywgdW5pdD0nZGVncmVlcycsIG5laWdoYm9ycz04KSkNCmBgYA0KYGBge3J9DQpwbG90KGFzcGVjdG8yLCBtYWluID0gIkFzcGVjdG8iKQ0KdGV4dChhc3BlY3RvMikNCnBsb3Qoc2xvcGUyLCBtYWluID0gInNsb3BlIikNCnRleHQoc2xvcGUyKQ0KYGBgDQoNCg==