{ "cells": [ { "cell_type": "markdown", "id": "888cf96d-dbbb-458c-997c-459f7d2e6f1d", "metadata": {}, "source": [ "# Start a new GRASS project" ] }, { "cell_type": "markdown", "id": "96741bbc-95d8-4f55-99ec-3286a0f0d654", "metadata": {}, "source": [ "In this session we are going to see how to start a new grass project using a well standarized dataset: a DEM.\n", "\n", " cd /media/sf_LVM_shared/my_SE_data/exercise/\n", " wget https://raw.githubusercontent.com/selvaje/SE_data/master/exercise/grass_newproject.ipynb\n", " jupyter lab /media/sf_LVM_shared/my_SE_data/exercise/grass_newproject.ipynb\n" ] }, { "cell_type": "markdown", "id": "e9af94c5-fd6d-458b-bc97-36479db00a41", "metadata": {}, "source": [ "## Analize the dataset" ] }, { "cell_type": "code", "execution_count": 1, "id": "11520c5f-04e8-4add-82a2-9bf833597fc2", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import rasterio\n", "from rasterio.plot import show\n", "# digital elevation model\n", "dem = rasterio.open(\"/media/sf_LVM_shared/my_SE_data/exercise/geodata/dem/SA_elevation_mn_GMTED2010_mn_msk.tif\")\n", "show(dem)" ] }, { "cell_type": "markdown", "id": "562e2769-f22d-43b2-8947-cfd9c811101f", "metadata": {}, "source": [ "We can see the metadata of the the DEM using gdalinfo. \n", "\n", "The tif metadata should have well defined values such as:\n", "* projection has to be well defined as proj4, EPSG,\n", "* the extent should set at degree level (e.g. 14.0') or with one digit after the degree (e.g. 14.1'),\n", "* the pixel resolution should be also well defined (e.g. 0.25', 0.008333333' not 0.008331234' or 0.05214534'),\n", "* in case of using more then one data source the raster layers shold have the same extent and the pixel aligned,\n" ] }, { "cell_type": "code", "execution_count": 2, "id": "5f8a67c3-d56f-4294-8307-44215bef2efe", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Driver: GTiff/GeoTIFF\n", "Files: /media/sf_LVM_shared/my_SE_data/exercise/geodata/dem/SA_elevation_mn_GMTED2010_mn_msk.tif\n", "Size is 5880, 8400\n", "Coordinate System is:\n", "GEOGCRS[\"WGS 84\",\n", " ENSEMBLE[\"World Geodetic System 1984 ensemble\",\n", " MEMBER[\"World Geodetic System 1984 (Transit)\"],\n", " MEMBER[\"World Geodetic System 1984 (G730)\"],\n", " MEMBER[\"World Geodetic System 1984 (G873)\"],\n", " MEMBER[\"World Geodetic System 1984 (G1150)\"],\n", " MEMBER[\"World Geodetic System 1984 (G1674)\"],\n", " MEMBER[\"World Geodetic System 1984 (G1762)\"],\n", " MEMBER[\"World Geodetic System 1984 (G2139)\"],\n", " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n", " LENGTHUNIT[\"metre\",1]],\n", " ENSEMBLEACCURACY[2.0]],\n", " PRIMEM[\"Greenwich\",0,\n", " ANGLEUNIT[\"degree\",0.0174532925199433]],\n", " CS[ellipsoidal,2],\n", " AXIS[\"geodetic latitude (Lat)\",north,\n", " ORDER[1],\n", " ANGLEUNIT[\"degree\",0.0174532925199433]],\n", " AXIS[\"geodetic longitude (Lon)\",east,\n", " ORDER[2],\n", " ANGLEUNIT[\"degree\",0.0174532925199433]],\n", " USAGE[\n", " SCOPE[\"Horizontal component of 3D system.\"],\n", " AREA[\"World.\"],\n", " BBOX[-90,-180,90,180]],\n", " ID[\"EPSG\",4326]]\n", "Data axis to CRS axis mapping: 2,1\n", "Origin = (-83.000000000000000,14.000000000000000)\n", "Pixel Size = (0.008333333333333,-0.008333333333333)\n", "Metadata:\n", " AREA_OR_POINT=Area\n", " TIFFTAG_DATETIME=2021:05:12 09:34:03\n", " TIFFTAG_DOCUMENTNAME=geodata/dem/SA_elevation_mn_GMTED2010_mn_msk.tif\n", " TIFFTAG_SOFTWARE=pktools 2.6.7.6 by Pieter Kempeneers\n", "Image Structure Metadata:\n", " COMPRESSION=DEFLATE\n", " INTERLEAVE=BAND\n", "Corner Coordinates:\n", "Upper Left ( -83.0000000, 14.0000000) ( 83d 0' 0.00\"W, 14d 0' 0.00\"N)\n", "Lower Left ( -83.0000000, -56.0000000) ( 83d 0' 0.00\"W, 56d 0' 0.00\"S)\n", "Upper Right ( -34.0000000, 14.0000000) ( 34d 0' 0.00\"W, 14d 0' 0.00\"N)\n", "Lower Right ( -34.0000000, -56.0000000) ( 34d 0' 0.00\"W, 56d 0' 0.00\"S)\n", "Center ( -58.5000000, -21.0000000) ( 58d30' 0.00\"W, 21d 0' 0.00\"S)\n", "Band 1 Block=5880x1 Type=Int16, ColorInterp=Gray\n", " NoData Value=-9999\n" ] } ], "source": [ "! gdalinfo /media/sf_LVM_shared/my_SE_data/exercise/geodata/dem/SA_elevation_mn_GMTED2010_mn_msk.tif" ] }, { "cell_type": "markdown", "id": "36c63c71-2749-4d1e-84ce-cabf5e39c9e0", "metadata": {}, "source": [ "## Create a LOCATION and MAPSET stored in a temporary folder\n", "\n", "Using the flag *--tmp-location* we can create a LOCATION on the flight that will automaticaly removed when GRASS will be closed. \n", "\n", "For this example we are goint to use:\n", "* [r.slope.aspect](https://grass.osgeo.org/grass83/manuals/r.slope.aspect.html) to calculate the slope\n", "* [r.out.gdal](https://grass.osgeo.org/grass83/manuals/r.out.gdal.html) to export the GRASS raster to tif. \n" ] }, { "cell_type": "code", "execution_count": 8, "id": "74bf2892-5f9c-460a-88c7-243b793d0448", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "----------------------------------------------\n", "raster files available in mapset :\n", "SA_elevation\n", "\n", " +----------------------------------------------------------------------------+\n", " | Map: SA_elevation Date: Mon May 20 11:37:09 2024 |\n", " | Mapset: PERMANENT Login of Creator: user |\n", " | Location: tmploc |\n", " | DataBase: /tmp/grass8-user-168760 |\n", " | Title: |\n", " | Timestamp: none |\n", " |----------------------------------------------------------------------------|\n", " | |\n", " | Type of Map: GDAL-link Number of Categories: 0 |\n", " | Data Type: CELL Semantic label: (none) |\n", " | Rows: 8400 |\n", " | Columns: 5880 |\n", " | Total Cells: 49392000 |\n", " | Projection: Latitude-Longitude |\n", " | N: 14N S: 56S Res: 0:00:30 |\n", " | E: 34W W: 83W Res: 0:00:30 |\n", " | Range of data: min = -400 max = 6736 |\n", " | |\n", " | Data Source: |\n", " | /media/sf_LVM_shared/my_SE_data/exercise/geodata/dem/SA_elevation_mn_GM |\n", " | |\n", " | |\n", " | Data Description: |\n", " | generated by r.external |\n", " | |\n", " | Comments: |\n", " | r.external --overwrite --quiet -e input=\"/media/sf_LVM_shared/my_SE_\\ |\n", " | data/exercise/geodata/dem/SA_elevation_mn_GMTED2010_mn_msk.tif\" outp\\ |\n", " | ut=\"SA_elevation\" |\n", " | |\n", " +----------------------------------------------------------------------------+\n", "\n", " +----------------------------------------------------------------------------+\n", " | Map: slope Date: Mon May 20 11:37:12 2024 |\n", " | Mapset: PERMANENT Login of Creator: user |\n", " | Location: tmploc |\n", " | DataBase: /tmp/grass8-user-168760 |\n", " | Title: slope in degrees |\n", " | Timestamp: none |\n", " |----------------------------------------------------------------------------|\n", " | |\n", " | Type of Map: raster Number of Categories: 90 |\n", " | Data Type: FCELL Semantic label: (none) |\n", " | Rows: 8400 |\n", " | Columns: 5880 |\n", " | Total Cells: 49392000 |\n", " | Projection: Latitude-Longitude |\n", " | N: 14N S: 56S Res: 0:00:30 |\n", " | E: 34W W: 83W Res: 0:00:30 |\n", " | Range of data: min = 0 max = 90 |\n", " | |\n", " | Data Source: |\n", " | raster elevation file SA_elevation |\n", " | |\n", " | |\n", " | Data Description: |\n", " | generated by r.slope.aspect |\n", " | |\n", " | Comments: |\n", " | slope map elev = SA_elevation |\n", " | zfactor = 1.00 format = degrees |\n", " | min_slope = 0.000000 |\n", " | |\n", " | r.slope.aspect --overwrite elevation=\"SA_elevation\" slope=\"slope\" fo\\ |\n", " | rmat=\"degrees\" precision=\"FCELL\" zscale=1.0 min_slope=0.0 nprocs=2 m\\ |\n", " | emory=300 |\n", " | |\n", " +----------------------------------------------------------------------------+\n", "\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Starting GRASS GIS...\n", "Creating new GRASS GIS location ...\n", "Cleaning up temporary files...\n", "\n", " __________ ___ __________ _______________\n", " / ____/ __ \\/ | / ___/ ___/ / ____/ _/ ___/\n", " / / __/ /_/ / /| | \\__ \\\\_ \\ / / __ / / \\__ \\\n", " / /_/ / _, _/ ___ |___/ /__/ / / /_/ // / ___/ /\n", " \\____/_/ |_/_/ |_/____/____/ \\____/___//____/\n", "\n", "Welcome to GRASS GIS 8.2.1\n", "GRASS GIS homepage: https://grass.osgeo.org\n", "This version running through: Bash Shell (/bin/bash)\n", "Help is available with the command: g.manual -i\n", "See the licence terms with: g.version -c\n", "See citation options with: g.version -x\n", "Start the GUI with: g.gui wxpython\n", "When ready to quit enter: exit\n", "\n", " 0 0 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 66 69 72 75 78 81 84 87 90 93 96 99 100\n", "Slope raster map complete\n", "/bin/bash: line 5: r.mapcalc.tiled: command not found\n", "WARNING: Precision loss: Raster map of type DCELL to be exported as\n", " Int16. This can be avoided by using Float64.\n", "WARNING: Forcing raster export\n", "Checking GDAL data type and nodata value...\n", " 2 5 8 11 14 17 20 23 26 29 32 35 38 41 44 47 50 53 56 59 62 65 68 71 74 77 80 83 86 89 92 95 98 100\n", "Using GDAL data type \n", "Exporting raster data to GTiff format...\n", " 2 5 8 11 14 17 20 23 26 29 32 35 38 41 44 47 50 53 56 59 62 65 68 71 74 77 80 83 86 89 92 95 98 100\n", "r.out.gdal complete. File\n", " created.\n", "WARNING: Precision loss: Raster map of type DCELL to be exported as\n", " Byte. This can be avoided by using Float64.\n", "WARNING: Forcing raster export\n", "Checking GDAL data type and nodata value...\n", " 2 5 8 11 14 17 20 23 26 29 32 35 38 41 44 47 50 53 56 59 62 65 68 71 74 77 80 83 86 89 92 95 98 100\n", "Using GDAL data type \n", "WARNING: The user given nodata value 0 is present in rasterband and\n", " would lead to data loss. Please specify a different nodata value\n", " with the nodata parameter.\n", "WARNING: Forcing raster export.\n", "Exporting raster data to GTiff format...\n", " 2 5 8 11 14 17 20 23 26 29 32 35 38 41 44 47 50 53 56 59 62 65 68 71 74 77 80 83 86 89 92 95 98 100\n", "r.out.gdal complete. File\n", " created.\n", "Cleaning up temporary files...\n", "Done.\n", "\n", "Goodbye from GRASS GIS\n", "\n" ] } ], "source": [ "%%bash \n", "\n", "grass --text --tmp-location /media/sf_LVM_shared/my_SE_data/exercise/geodata/dem/SA_elevation_mn_GMTED2010_mn_msk.tif --exec <<'EOF'\n", "r.external -e input=/media/sf_LVM_shared/my_SE_data/exercise/geodata/dem/SA_elevation_mn_GMTED2010_mn_msk.tif output=SA_elevation --o --q\n", "g.list raster -p \n", "r.info map=SA_elevation\n", "r.slope.aspect elevation=SA_elevation slope=slope\n", "r.info map=slope\n", "# export the \"grass slope\" to a geotif.\n", "r.out.gdal --o -c -m -f createopt=\"COMPRESS=DEFLATE,ZLEVEL=9\" type=Int16 format=GTiff nodata=-9999 input=slope output=/home/user/my_SE_data/exercise/grassdb/slope.tif\n", "EOF" ] }, { "cell_type": "markdown", "id": "7b9974a8-f683-4b42-a651-d46586d033cd", "metadata": {}, "source": [ "GRASS rasters support three data types:\n", "\n", " 32bit signed integer (CELL) wich can be converted in GDAL using Byte/Int16/UInt16/UInt32/Int32\n", " single-precision floating-point (FCELL) wich can be converted in GDAL using Float32\n", " double-precision floating-point (DCELL) wich can be converted in GDAL using Float64\n", "\n", "More info at https://grass.osgeo.org/grass83/manuals/r.out.gdal.html" ] }, { "cell_type": "code", "execution_count": 2, "id": "33584748-f1ff-4881-bbfa-887c4dd5b4dd", "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import rasterio\n", "from rasterio.plot import show\n", "slope = rasterio.open(\"/home/user/my_SE_data/exercise/grassdb/slope.tif\")\n", "show(slope)" ] }, { "cell_type": "code", "execution_count": 31, "id": "2a3c6be0-38da-43fd-b7cf-3a25bb60d388", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Default software rendering mode (use -h if accelerated video card installed).\n", "Loading tools from /usr/bin/openev/tools/Tool_Export.py\n", "Loading tools from /usr/bin/openev/tools/Tool_ShapesGrid.py\n", "Loading tools from /usr/bin/openev/tools/Tool_DriverList.py\n" ] } ], "source": [ "! /usr/bin/openev/bin/openev /home/user/my_SE_data/exercise/grassdb/slope.tif" ] }, { "cell_type": "markdown", "id": "8d7c8d86-f432-45e6-95e1-aac4c637d11e", "metadata": {}, "source": [ "The temporary folder is removed automaticaly when closing grass. " ] }, { "cell_type": "markdown", "id": "2f54e131-5012-445c-9f41-434fb712db8b", "metadata": {}, "source": [ "## Create a LOCATION and MAPSET stored in a folder that can be accessed later on.\n", "Using the flag *-e* we can create a LOCATION on the flight called \"south_america\" that can be access later on. " ] }, { "cell_type": "code", "execution_count": 3, "id": "fb65e27f-f29c-4808-8b5b-74b935fcfb97", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Starting GRASS GIS...\n", "Creating new GRASS GIS location ...\n", "Cleaning up temporary files...\n", "Cleaning up temporary files...\n" ] } ], "source": [ "%%bash \n", "rm -rf /home/user/my_SE_data/exercise/grassdb/south_america\n", "\n", "grass -c /media/sf_LVM_shared/my_SE_data/exercise/geodata/dem/SA_elevation_mn_GMTED2010_mn_msk.tif -e /home/user/my_SE_data/exercise/grassdb/south_america" ] }, { "cell_type": "markdown", "id": "fd6d5486-d411-4bd3-a5b9-3a822b899915", "metadata": {}, "source": [ "At this point the south_america LOCATION has been created with the defoult PERMANENT mapset" ] }, { "cell_type": "code", "execution_count": 4, "id": "b8b11e3d-d2a3-4ba8-bfa6-b682b51bc559", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "PERMANENT\n" ] } ], "source": [ "! ls /home/user/my_SE_data/exercise/grassdb/south_america/" ] }, { "cell_type": "code", "execution_count": 5, "id": "0ebb8019-5837-4631-b026-4ff6581fbd23", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "total 36\n", "-rw-rw-r-- 1 user user 328 May 20 10:32 DEFAULT_WIND\n", "-rw-rw-r-- 1 user user 1 May 20 10:32 MYNAME\n", "-rw-rw-r-- 1 user user 65 May 20 10:32 PROJ_INFO\n", "-rw-rw-r-- 1 user user 10 May 20 10:32 PROJ_SRID\n", "-rw-rw-r-- 1 user user 40 May 20 10:32 PROJ_UNITS\n", "-rw-rw-r-- 1 user user 1047 May 20 10:32 PROJ_WKT\n", "drwxrwxr-x 2 user user 4096 May 20 10:32 sqlite\n", "-rw-rw-r-- 1 user user 81 May 20 10:32 VAR\n", "-rw-rw-r-- 1 user user 328 May 20 10:32 WIND\n" ] } ], "source": [ "! ls -l /home/user/my_SE_data/exercise/grassdb/south_america/PERMANENT\n" ] }, { "cell_type": "markdown", "id": "d1fc642d-7d17-400c-8f08-45a8b01b38b7", "metadata": {}, "source": [ "we can proceed in using the south_america LOCATION & the PERMANENT MAPSET using this syntax: " ] }, { "cell_type": "code", "execution_count": 6, "id": "56585522-8c48-412f-a363-8b3681e46c1c", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "----------------------------------------------\n", "raster files available in mapset :\n", "SA_elevation\n", "\n", " +----------------------------------------------------------------------------+\n", " | Map: SA_elevation Date: Mon May 20 10:33:27 2024 |\n", " | Mapset: PERMANENT Login of Creator: user |\n", " | Location: south_america |\n", " | DataBase: /home/user/my_SE_data/exercise/grassdb |\n", " | Title: |\n", " | Timestamp: none |\n", " |----------------------------------------------------------------------------|\n", " | |\n", " | Type of Map: GDAL-link Number of Categories: 0 |\n", " | Data Type: CELL Semantic label: (none) |\n", " | Rows: 8400 |\n", " | Columns: 5880 |\n", " | Total Cells: 49392000 |\n", " | Projection: Latitude-Longitude |\n", " | N: 14N S: 56S Res: 0:00:30 |\n", " | E: 34W W: 83W Res: 0:00:30 |\n", " | Range of data: min = -400 max = 6736 |\n", " | |\n", " | Data Source: |\n", " | /media/sf_LVM_shared/my_SE_data/exercise/geodata/dem/SA_elevation_mn_GM |\n", " | |\n", " | |\n", " | Data Description: |\n", " | generated by r.external |\n", " | |\n", " | Comments: |\n", " | r.external --overwrite --quiet input=\"/media/sf_LVM_shared/my_SE_dat\\ |\n", " | a/exercise/geodata/dem/SA_elevation_mn_GMTED2010_mn_msk.tif\" output=\\ |\n", " | \"SA_elevation\" |\n", " | |\n", " +----------------------------------------------------------------------------+\n", "\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Starting GRASS GIS...\n", "Cleaning up temporary files...\n", "\n", " __________ ___ __________ _______________\n", " / ____/ __ \\/ | / ___/ ___/ / ____/ _/ ___/\n", " / / __/ /_/ / /| | \\__ \\\\_ \\ / / __ / / \\__ \\\n", " / /_/ / _, _/ ___ |___/ /__/ / / /_/ // / ___/ /\n", " \\____/_/ |_/_/ |_/____/____/ \\____/___//____/\n", "\n", "Welcome to GRASS GIS 8.2.1\n", "GRASS GIS homepage: https://grass.osgeo.org\n", "This version running through: Bash Shell (/bin/bash)\n", "Help is available with the command: g.manual -i\n", "See the licence terms with: g.version -c\n", "See citation options with: g.version -x\n", "Start the GUI with: g.gui wxpython\n", "When ready to quit enter: exit\n", "\n", " 0 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 66 69 72 75 78 81 84 87 90 93 96 99 100\n", "Aspect raster map complete\n", "WARNING: Precision loss: Raster map of type DCELL to be exported\n", " as Int16. This can be avoided by using Float64.\n", "WARNING: Forcing raster export\n", "Checking GDAL data type and nodata value...\n", " 2 5 8 11 14 17 20 23 26 29 32 35 38 41 44 47 50 53 56 59 62 65 68 71 74 77 80 83 86 89 92 95 98 100\n", "Using GDAL data type \n", "Exporting raster data to GTiff format...\n", " 2 5 8 11 14 17 20 23 26 29 32 35 38 41 44 47 50 53 56 59 62 65 68 71 74 77 80 83 86 89 92 95 98 100\n", "r.out.gdal complete. File\n", " created.\n", "Cleaning up temporary files...\n", "Done.\n", "\n", "Goodbye from GRASS GIS\n", "\n" ] } ], "source": [ "%%bash \n", "grass --text /home/user/my_SE_data/exercise/grassdb/south_america/PERMANENT --exec <<'EOF'\n", "r.external input=/media/sf_LVM_shared/my_SE_data/exercise/geodata/dem/SA_elevation_mn_GMTED2010_mn_msk.tif output=SA_elevation --o --q\n", "g.list raster -p \n", "r.info map=SA_elevation\n", "r.slope.aspect elevation=SA_elevation aspect=aspect --o\n", "r.out.gdal --o -c -m -f createopt=\"COMPRESS=DEFLATE,ZLEVEL=9\" type=Int16 format=GTiff nodata=-9999 input=aspect output=/home/user/my_SE_data/exercise/grassdb/aspect.tif\n", "EOF" ] }, { "cell_type": "code", "execution_count": 37, "id": "60c17f06-f79e-43ee-9dc9-37173e6cfe03", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Default software rendering mode (use -h if accelerated video card installed).\n", "Loading tools from /usr/bin/openev/tools/Tool_Export.py\n", "Loading tools from /usr/bin/openev/tools/Tool_ShapesGrid.py\n", "Loading tools from /usr/bin/openev/tools/Tool_DriverList.py\n" ] } ], "source": [ "! /usr/bin/openev/bin/openev /home/user/my_SE_data/exercise/grassdb/aspect.tif" ] }, { "cell_type": "markdown", "id": "4cab9156-58b5-4fce-88fa-278c3e09c0f9", "metadata": {}, "source": [ "or with line by line syntax" ] }, { "cell_type": "code", "execution_count": 38, "id": "c5b62d66-43b4-481f-a0f2-d8b4680dfae6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " +----------------------------------------------------------------------------+\n", " | Map: SA_elevation_10c_max Date: Thu May 16 18:31:24 2024 |\n", " | Mapset: PERMANENT Login of Creator: user |\n", " | Location: south_america |\n", " | DataBase: /home/user/my_SE_data/exercise/grassdb |\n", " | Title: 3x3 neighborhood: maximum of SA_elevation |\n", " | Timestamp: none |\n", " |----------------------------------------------------------------------------|\n", " | |\n", " | Type of Map: raster Number of Categories: 0 |\n", " | Data Type: CELL Semantic label: (none) |\n", " | Rows: 8400 |\n", " | Columns: 5880 |\n", " | Total Cells: 49392000 |\n", " | Projection: Latitude-Longitude |\n", " | N: 14N S: 56S Res: 0:00:30 |\n", " | E: 34W W: 83W Res: 0:00:30 |\n", " | Range of data: min = -153 max = 6736 |\n", " | |\n", " | Data Description: |\n", " | generated by r.neighbors |\n", " | |\n", " | Comments: |\n", " | r.neighbors --overwrite input=\"SA_elevation\" output=\"SA_elevation_10\\ |\n", " | c_max\" size=3 method=\"maximum\" weighting_function=\"none\" nprocs=1 me\\ |\n", " | mory=300 |\n", " | |\n", " +----------------------------------------------------------------------------+\n", "\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Starting GRASS GIS...\n", "Cleaning up temporary files...\n", "Executing ...\n", " 0 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 66 69 72 75 78 81 84 87 90 93 96 99 100\n", "Execution of finished.\n", "Cleaning up temporary files...\n", "Starting GRASS GIS...\n", "Cleaning up temporary files...\n", "Executing ...\n", "Execution of finished.\n", "Cleaning up temporary files...\n" ] } ], "source": [ "%%bash\n", "\n", "grass --text /home/user/my_SE_data/exercise/grassdb/south_america/PERMANENT --exec r.neighbors input=SA_elevation output=SA_elevation_10c_max method=maximum --o\n", "grass --text /home/user/my_SE_data/exercise/grassdb/south_america/PERMANENT --exec r.info map=SA_elevation_10c_max" ] }, { "cell_type": "markdown", "id": "25b730e8-17ee-4a2d-b026-5834c37cd71b", "metadata": {}, "source": [ "## GRASS add-ons\n", "Grass GIS has a modular architecture that allows users to extend its functionality through add-ons or modules. These add-ons cover a wide range of functionalities and are developed and contributed by the Grass GIS community. You can see the full list of add-ons at https://grass.osgeo.org/grass83/manuals/addons/index.html \n", "\n", "For this exercise we are going to use \n", "[r.mapcalc.tiled](https://grass.osgeo.org/grass83/manuals/addons/r.mapcalc.tiled.html) that integrate [r.mapcalc](https://grass.osgeo.org/grass83/manuals/r.mapcalc.html) in a multicore enviroment. " ] }, { "cell_type": "markdown", "id": "9919a34b-2a21-4bd1-9140-99923daf6b0f", "metadata": {}, "source": [ "### Installation\n", "\n", "Open a bash terminal and run" ] }, { "cell_type": "markdown", "id": "e6cb963c-f9e6-4b1a-90e7-75155a8f28ea", "metadata": {}, "source": [ " cd /home/user\n", " git clone https://github.com/OSGeo/grass-addons.git grass_addons " ] }, { "cell_type": "markdown", "id": "01d935e8-6414-4f33-a15b-a48731fa4fe4", "metadata": {}, "source": [ "when the download has ben done you can proceed with the installation. \n", "\n", "For this exercise we are going to use:\n", "* [r.mapcalc.tiled](https://grass.osgeo.org/grass83/manuals/addons/r.mapcalc.tiled.html) add-on.\n", "* [r.mapcalc](https://grass.osgeo.org/grass83/manuals/r.mapcalc.html)\n", "\n", "Nontheless also consider to install and test the following add-on:\n", "\n", "* [r.learn.train](https://grass.osgeo.org/grass83/manuals/addons/r.learn.train.html)\n", "* [r.learn.ml](https://grass.osgeo.org/grass83/manuals/addons/r.learn.ml.html)\n", "* [r.learn.predict](https://grass.osgeo.org/grass83/manuals/addons/r.learn.predict.html)\n" ] }, { "cell_type": "code", "execution_count": 22, "id": "4c0134e1-a73e-4016-8d3f-dad376dd919b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " +----------------------------------------------------------------------------+\n", " | Map: slope_msk Date: Mon May 20 16:44:05 2024 |\n", " | Mapset: PERMANENT Login of Creator: user |\n", " | Location: south_america |\n", " | DataBase: /home/user/my_SE_data/exercise/grassdb |\n", " | Title: |\n", " | Timestamp: none |\n", " |----------------------------------------------------------------------------|\n", " | |\n", " | Type of Map: raster Number of Categories: 0 |\n", " | Data Type: CELL Semantic label: (none) |\n", " | Rows: 16800 |\n", " | Columns: 11760 |\n", " | Total Cells: 197568000 |\n", " | Projection: Latitude-Longitude |\n", " | N: 14N S: 56S Res: 0:00:15 |\n", " | E: 34W W: 83W Res: 0:00:15 |\n", " | Range of data: min = 1 max = 10 |\n", " | |\n", " | Data Description: |\n", " | generated by r.mapcalc |\n", " | |\n", " | Comments: |\n", " | if(slope > 10, 10, 1) |\n", " | |\n", " +----------------------------------------------------------------------------+\n", "\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Starting GRASS GIS...\n", "Cleaning up temporary files...\n", "Executing ...\n", " 0 0 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 66 69 72 75 78 81 84 87 90 93 96 99 100\n", "Slope raster map complete\n", "Execution of finished.\n", "Cleaning up temporary files...\n", "Starting GRASS GIS...\n", "Cleaning up temporary files...\n", "Executing ...\n", "Execution of finished.\n", "Cleaning up temporary files...\n", "Starting GRASS GIS...\n", "Cleaning up temporary files...\n", "Executing