By Valentina Valle Velasco
April 1st, 2020
This is an R Markdown Notebook in order to illustrate slop and aspect calculation.
Slop is a tool that help us to identify the steepness in a cell of a raster surface. This can be calculated in two units, degrees and percent.
Aspect is a tool that is useful for identify the direction the downhill slope faces.
Now: Raster creation
rm(list = ls())
#library(raster)
Let´s create a toy DEM.
dem <- raster(ncol=3, nrow=3, xmn=100, xmx=115, ymn=100, ymx=115)
If you want to know how many cells compose DEM, use the following code
ncell(dem)
[1] 9
If you want to know what is the spatial resolution of DEM, use this
res(dem)
[1] 5 5
Now, we are going to assign elevation values to DEM:
valores <- c(50, 45, 50, 30, 30, 30, 8, 10, 10)
(values(dem) <- valores)
[1] 50 45 50 30 30 30 8 10 10
Let’s plot the DEM along the elevation values:
plot(dem, main = "DEM")
text(dem)

No, we are going to assign a coordinate reference system to DEM:
crs(dem) <- CRS('+init=epsg:3115')
What does mean the EPSG code?
EPSG is the acronym for European Petroleum Survey Group, organization related to the oil industry in Europe. This body was made up of specialists in geodesy, topography and cartography applied to the exploitation area and developed a repository of geodetic parameters that contains information on ancient and modern (geocentric) reference systems (frames), cartographic projections and ellipsoids from around the world.
Where can EPSG codes be found?
That type of codes can be found on epsg.io
What is the EPSG code for MAGNA Ciudad de Bogota?
The code is EPSG:3116, MAGNA-SIRGAS/ Colombia Bogota zone.
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
source : memory
names : slope
values : 75.25766, 75.25766 (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 : 180.7538, 180.7538 (min, max)
plot(aspecto, main = "Aspecto")
text(aspecto)

Exercise
We are going to calculate slope and aspect for the following DEM:
[1] 16
[1] 5 5
So, here are all the necessary codes:
exe <- raster(ncol=4, nrow=4, xmn=100, xmx=120, ymn=100, ymx=120)
ncell(exe)
[1] 16
res(exe)
[1] 5 5
valores <- c(50, 45, 50, 48, 30, 29, 30, 29, 10, 9, 9, 10, 25, 23, 19, 21)
(values(exe) <- valores)
[1] 50 45 50 48 30 29 30 29 10 9 9 10 25 23 19 21
plot(exe, main = "Exercise")
text(exe)

crs(exe) <- CRS('+init=epsg:3115')
Now: Calculate SLOPE
(slope = terrain(exe, '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 : 36.05503, 75.62313 (min, max)
plot(slope, main = "SLOPE")
text(slope)

(aspecto = terrain(exe, '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 : 164.0546, 181.4688 (min, max)
Now: Calculate ASPECT
plot(aspecto, main = "ASPECT")
text(aspecto)

LS0tDQp0aXRsZTogIlNsb3BlIGFuZCBBc3BlY3QgQ2FsY3VsYXRpb24iDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQojIyMjIEJ5IFZhbGVudGluYSBWYWxsZSBWZWxhc2NvICAgICAgICANCkFwcmlsIDFzdCwgMjAyMCAgDQoNClRoaXMgaXMgYW4gW1IgTWFya2Rvd25dKGh0dHA6Ly9ybWFya2Rvd24ucnN0dWRpby5jb20pIE5vdGVib29rIGluIG9yZGVyIHRvIGlsbHVzdHJhdGUgc2xvcCBhbmQgYXNwZWN0IGNhbGN1bGF0aW9uLiAgICANClNsb3AgaXMgYSB0b29sIHRoYXQgaGVscCB1cyB0byBpZGVudGlmeSB0aGUgc3RlZXBuZXNzIGluIGEgY2VsbCBvZiBhIHJhc3RlciBzdXJmYWNlLiBUaGlzIGNhbiBiZSBjYWxjdWxhdGVkIGluIHR3byB1bml0cywgZGVncmVlcyBhbmQgcGVyY2VudC4gICAgICANCkFzcGVjdCBpcyBhIHRvb2wgdGhhdCBpcyB1c2VmdWwgZm9yIGlkZW50aWZ5IHRoZSBkaXJlY3Rpb24gdGhlIGRvd25oaWxsIHNsb3BlIGZhY2VzLiAgIA0KDQojIyMjIE5vdzogUmFzdGVyIGNyZWF0aW9uDQpgYGB7cn0NCnJtKGxpc3QgPSBscygpKQ0KYGBgDQpgYGB7cn0NCiNsaWJyYXJ5KHJhc3RlcikNCmBgYA0KDQojIyMjIExldMK0cyBjcmVhdGUgYSB0b3kgREVNLg0KYGBge3J9DQpkZW0gPC0gcmFzdGVyKG5jb2w9MywgbnJvdz0zLCB4bW49MTAwLCB4bXg9MTE1LCB5bW49MTAwLCB5bXg9MTE1KQ0KYGBgDQpJZiB5b3Ugd2FudCB0byBrbm93IGhvdyBtYW55IGNlbGxzIGNvbXBvc2UgREVNLCB1c2UgdGhlIGZvbGxvd2luZyBjb2RlDQpgYGB7cn0NCm5jZWxsKGRlbSkNCmBgYA0KSWYgeW91IHdhbnQgdG8ga25vdyB3aGF0IGlzIHRoZSBzcGF0aWFsIHJlc29sdXRpb24gb2YgREVNLCB1c2UgdGhpcw0KYGBge3J9DQpyZXMoZGVtKQ0KYGBgDQpOb3csIHdlIGFyZSBnb2luZyB0byBhc3NpZ24gZWxldmF0aW9uIHZhbHVlcyB0byBERU06DQpgYGB7cn0NCnZhbG9yZXMgPC0gYyg1MCwgNDUsIDUwLCAzMCwgMzAsIDMwLCA4LCAxMCwgMTApDQpgYGANCmBgYHtyfQ0KKHZhbHVlcyhkZW0pIDwtIHZhbG9yZXMpDQpgYGANCkxldCdzIHBsb3QgdGhlIERFTSBhbG9uZyB0aGUgZWxldmF0aW9uIHZhbHVlczoNCmBgYHtyfQ0KcGxvdChkZW0sIG1haW4gPSAiREVNIikgDQp0ZXh0KGRlbSkNCmBgYA0KTm8sIHdlIGFyZSBnb2luZyB0byBhc3NpZ24gYSBjb29yZGluYXRlIHJlZmVyZW5jZSBzeXN0ZW0gdG8gREVNOg0KYGBge3J9DQpjcnMoZGVtKSA8LSBDUlMoJytpbml0PWVwc2c6MzExNScpDQpgYGANCg0KIyMjIyBXaGF0IGRvZXMgbWVhbiB0aGUgRVBTRyBjb2RlPyAgICAgICAgICAgICAgICAgICAgDQpFUFNHIGlzIHRoZSBhY3JvbnltIGZvciBFdXJvcGVhbiBQZXRyb2xldW0gU3VydmV5IEdyb3VwLCBvcmdhbml6YXRpb24gcmVsYXRlZCB0byB0aGUgb2lsIGluZHVzdHJ5IGluIEV1cm9wZS4gVGhpcyBib2R5IHdhcyBtYWRlIHVwIG9mIHNwZWNpYWxpc3RzIGluIGdlb2Rlc3ksIHRvcG9ncmFwaHkgYW5kIGNhcnRvZ3JhcGh5IGFwcGxpZWQgdG8gdGhlIGV4cGxvaXRhdGlvbiBhcmVhIGFuZCBkZXZlbG9wZWQgYSByZXBvc2l0b3J5IG9mIGdlb2RldGljIHBhcmFtZXRlcnMgdGhhdCBjb250YWlucyBpbmZvcm1hdGlvbiBvbiBhbmNpZW50IGFuZCBtb2Rlcm4gKGdlb2NlbnRyaWMpIHJlZmVyZW5jZSBzeXN0ZW1zIChmcmFtZXMpLCBjYXJ0b2dyYXBoaWMgcHJvamVjdGlvbnMgYW5kIGVsbGlwc29pZHMgZnJvbSBhcm91bmQgdGhlIHdvcmxkLiAgICAgICAgICAgICAgIA0KDQojIyMjIFdoZXJlIGNhbiBFUFNHIGNvZGVzIGJlIGZvdW5kPyAgICAgICAgICAgICAgICAgICANClRoYXQgdHlwZSBvZiBjb2RlcyBjYW4gYmUgZm91bmQgb24gZXBzZy5pbyAgICAgICAgIA0KDQojIyMjIFdoYXQgaXMgdGhlIEVQU0cgY29kZSBmb3IgTUFHTkEgQ2l1ZGFkIGRlIEJvZ290YT8gDQoNClRoZSBjb2RlIGlzIEVQU0c6MzExNiwgTUFHTkEtU0lSR0FTLyBDb2xvbWJpYSBCb2dvdGEgem9uZS4gICAgICAgIA0KDQojIyMgU2xvcGUgYW5kIGFzcGVjdCBjYWxjdWxhdGlvbg0KYGBge3J9DQooc2xvcGUgPSB0ZXJyYWluKGRlbSwgJ3Nsb3BlJywgdW5pdD0nZGVncmVlcycsIG5laWdoYm9ycz04KSkNCmBgYA0KYGBge3J9DQpwbG90KHNsb3BlLCBtYWluID0gIlBlbmRpZW50ZSIpICAgICAgICAgICAgIA0KdGV4dChzbG9wZSkNCmBgYA0KYGBge3J9DQooYXNwZWN0byA9IHRlcnJhaW4oZGVtLCAnYXNwZWN0JywgdW5pdD0nZGVncmVlcycsIG5laWdoYm9ycz04KSkNCmBgYA0KYGBge3J9DQpwbG90KGFzcGVjdG8sIG1haW4gPSAiQXNwZWN0byIpIA0KdGV4dChhc3BlY3RvKQ0KYGBgDQojIEV4ZXJjaXNlDQoNCldlIGFyZSBnb2luZyB0byBjYWxjdWxhdGUgc2xvcGUgYW5kIGFzcGVjdCBmb3IgdGhlIGZvbGxvd2luZyBERU06DQpgYGANClsxXSAxNiAgICAgICAgICAgICAgICAgICAgICAgICAgDQpbMV0gNSA1DQpgYGANClNvLCBoZXJlIGFyZSBhbGwgdGhlIG5lY2Vzc2FyeSBjb2RlczoNCmBgYHtyfQ0KZXhlIDwtIHJhc3RlcihuY29sPTQsIG5yb3c9NCwgeG1uPTEwMCwgeG14PTEyMCwgeW1uPTEwMCwgeW14PTEyMCkNCmBgYA0KYGBge3J9DQpuY2VsbChleGUpDQpgYGANCmBgYHtyfQ0KcmVzKGV4ZSkNCmBgYA0KYGBge3J9DQp2YWxvcmVzIDwtIGMoNTAsIDQ1LCA1MCwgNDgsIDMwLCAyOSwgMzAsIDI5LCAxMCwgOSwgOSwgMTAsIDI1LCAyMywgMTksIDIxKQ0KYGBgDQpgYGB7cn0NCih2YWx1ZXMoZXhlKSA8LSB2YWxvcmVzKQ0KYGBgDQpgYGB7cn0NCnBsb3QoZXhlLCBtYWluID0gIkV4ZXJjaXNlIikgICANCnRleHQoZXhlKQ0KYGBgDQpgYGB7cn0NCmNycyhleGUpIDwtIENSUygnK2luaXQ9ZXBzZzozMTE1JykNCmBgYA0KIyMgTm93OiBDYWxjdWxhdGUgX19TTE9QRV9fDQpgYGB7cn0NCihzbG9wZSA9IHRlcnJhaW4oZXhlLCAnc2xvcGUnLCB1bml0PSdkZWdyZWVzJywgbmVpZ2hib3JzPTgpKQ0KYGBgDQpgYGB7cn0NCnBsb3Qoc2xvcGUsIG1haW4gPSAiU0xPUEUiKSAgICANCnRleHQoc2xvcGUpDQpgYGANCmBgYHtyfQ0KKGFzcGVjdG8gPSB0ZXJyYWluKGV4ZSwgJ2FzcGVjdCcsIHVuaXQ9J2RlZ3JlZXMnLCBuZWlnaGJvcnM9OCkpDQpgYGANCiMjIE5vdzogQ2FsY3VsYXRlIF9fQVNQRUNUX18NCmBgYHtyfQ0KcGxvdChhc3BlY3RvLCBtYWluID0gIkFTUEVDVCIpIA0KdGV4dChhc3BlY3RvKQ0KYGBgDQoNCg==