<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>

<meta charset="utf-8">
<meta name="generator" content="quarto-1.1.251">

<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">


<title>Mapping and spatial analyses in R for One Health studies - 4&nbsp; Using raster data</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
  width: 0.8em;
  margin: 0 0.8em 0.2em -1.6em;
  vertical-align: middle;
}
pre > code.sourceCode { white-space: pre; position: relative; }
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
pre > code.sourceCode > span:empty { height: 1.2em; }
.sourceCode { overflow: visible; }
code.sourceCode > span { color: inherit; text-decoration: inherit; }
div.sourceCode { margin: 1em 0; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
pre > code.sourceCode { white-space: pre-wrap; }
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
  { counter-reset: source-line 0; }
pre.numberSource code > span
  { position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code > span > a:first-child::before
  { content: counter(source-line);
    position: relative; left: -1em; text-align: right; vertical-align: baseline;
    border: none; display: inline-block;
    -webkit-touch-callout: none; -webkit-user-select: none;
    -khtml-user-select: none; -moz-user-select: none;
    -ms-user-select: none; user-select: none;
    padding: 0 4px; width: 4em;
    color: #aaaaaa;
  }
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa;  padding-left: 4px; }
div.sourceCode
  {   }
@media screen {
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
}
code span.al { color: #ff0000; font-weight: bold; } /* Alert */
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
code span.at { color: #7d9029; } /* Attribute */
code span.bn { color: #40a070; } /* BaseN */
code span.bu { color: #008000; } /* BuiltIn */
code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
code span.ch { color: #4070a0; } /* Char */
code span.cn { color: #880000; } /* Constant */
code span.co { color: #60a0b0; font-style: italic; } /* Comment */
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
code span.do { color: #ba2121; font-style: italic; } /* Documentation */
code span.dt { color: #902000; } /* DataType */
code span.dv { color: #40a070; } /* DecVal */
code span.er { color: #ff0000; font-weight: bold; } /* Error */
code span.ex { } /* Extension */
code span.fl { color: #40a070; } /* Float */
code span.fu { color: #06287e; } /* Function */
code span.im { color: #008000; font-weight: bold; } /* Import */
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
code span.kw { color: #007020; font-weight: bold; } /* Keyword */
code span.op { color: #666666; } /* Operator */
code span.ot { color: #007020; } /* Other */
code span.pp { color: #bc7a00; } /* Preprocessor */
code span.sc { color: #4070a0; } /* SpecialChar */
code span.ss { color: #bb6688; } /* SpecialString */
code span.st { color: #4070a0; } /* String */
code span.va { color: #19177c; } /* Variable */
code span.vs { color: #4070a0; } /* VerbatimString */
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
div.csl-bib-body { }
div.csl-entry {
  clear: both;
}
.hanging div.csl-entry {
  margin-left:2em;
  text-indent:-2em;
}
div.csl-left-margin {
  min-width:2em;
  float:left;
}
div.csl-right-inline {
  margin-left:2em;
  padding-left:1em;
}
div.csl-indent {
  margin-left: 2em;
}
</style>


<script src="site_libs/quarto-nav/quarto-nav.js"></script>
<script src="site_libs/quarto-nav/headroom.min.js"></script>
<script src="site_libs/clipboard/clipboard.min.js"></script>
<script src="site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="site_libs/quarto-search/fuse.min.js"></script>
<script src="site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="./">
<link href="./05-mapping_with_r.html" rel="next">
<link href="./03-vector_data.html" rel="prev">
<script src="site_libs/quarto-html/quarto.js"></script>
<script src="site_libs/quarto-html/popper.min.js"></script>
<script src="site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="site_libs/quarto-html/anchor.min.js"></script>
<link href="site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="site_libs/quarto-html/quarto-syntax-highlighting.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="site_libs/bootstrap/bootstrap.min.js"></script>
<link href="site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="site_libs/bootstrap/bootstrap.min.css" rel="stylesheet" id="quarto-bootstrap" data-mode="light">
<script id="quarto-search-options" type="application/json">{
  "location": "sidebar",
  "copy-button": false,
  "collapse-after": 3,
  "panel-placement": "start",
  "type": "textbox",
  "limit": 20,
  "language": {
    "search-no-results-text": "No results",
    "search-matching-documents-text": "matching documents",
    "search-copy-link-title": "Copy link to search",
    "search-hide-matches-text": "Hide additional matches",
    "search-more-match-text": "more match in this document",
    "search-more-matches-text": "more matches in this document",
    "search-clear-button-title": "Clear",
    "search-detached-cancel-button-title": "Cancel",
    "search-submit-button-title": "Submit"
  }
}</script>
<style>html{ scroll-behavior: smooth; }</style>

  <script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml-full.js" type="text/javascript"></script>

<link rel="stylesheet" href="styles.css">
</head>

<body class="nav-sidebar floating">

<div id="quarto-search-results"></div>
  <header id="quarto-header" class="headroom fixed-top">
  <nav class="quarto-secondary-nav" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar" aria-controls="quarto-sidebar" aria-expanded="false" aria-label="Toggle sidebar navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
    <div class="container-fluid d-flex justify-content-between">
      <h1 class="quarto-secondary-nav-title"><span class="chapter-number">4</span>&nbsp; <span class="chapter-title">Using raster data</span></h1>
      <button type="button" class="quarto-btn-toggle btn" aria-label="Show secondary navigation">
        <i class="bi bi-chevron-right"></i>
      </button>
    </div>
  </nav>
</header>
<!-- content -->
<div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article">
<!-- sidebar -->
  <nav id="quarto-sidebar" class="sidebar collapse sidebar-navigation floating overflow-auto">
    <div class="pt-lg-2 mt-2 text-left sidebar-header">
    <div class="sidebar-title mb-0 py-0">
      <a href="./">Mapping and spatial analyses in R for One Health studies</a> 
        <div class="sidebar-tools-main">
    <a href="https://forge.ird.fr/espace-dev/personnels/longour/geohealth/documentation/rspatial-for-onehealth" title="Source Code" class="sidebar-tool px-1"><i class="bi bi-git"></i></a>
</div>
    </div>
      </div>
      <div class="mt-2 flex-shrink-0 align-items-center">
        <div class="sidebar-search">
        <div id="quarto-search" class="" title="Search"></div>
        </div>
      </div>
    <div class="sidebar-menu-container"> 
    <ul class="list-unstyled mt-1">
        <li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./index.html" class="sidebar-item-text sidebar-link">Preface</a>
  </div>
</li>
        <li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./01-introduction.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">1</span>&nbsp; <span class="chapter-title">Introduction</span></a>
  </div>
</li>
        <li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./02-data_acquisition.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">2</span>&nbsp; <span class="chapter-title">Data Acquisition</span></a>
  </div>
</li>
        <li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./03-vector_data.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">3</span>&nbsp; <span class="chapter-title">Using vector data</span></a>
  </div>
</li>
        <li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./04-raster_data.html" class="sidebar-item-text sidebar-link active"><span class="chapter-number">4</span>&nbsp; <span class="chapter-title">Using raster data</span></a>
  </div>
</li>
        <li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./05-mapping_with_r.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">5</span>&nbsp; <span class="chapter-title">Mapping With R</span></a>
  </div>
</li>
        <li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./07-basic_statistics.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">6</span>&nbsp; <span class="chapter-title">Basic statistics for spatial analysis</span></a>
  </div>
</li>
        <li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./references.html" class="sidebar-item-text sidebar-link">References</a>
  </div>
</li>
    </ul>
    </div>
</nav>
<!-- margin-sidebar -->
    <div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
        <nav id="TOC" role="doc-toc" class="toc-active">
    <h2 id="toc-title">Table of contents</h2>
   
  <ul>
  <li><a href="#format-of-objects-spatraster" id="toc-format-of-objects-spatraster" class="nav-link active" data-scroll-target="#format-of-objects-spatraster"><span class="toc-section-number">4.1</span>  Format of objects <code>SpatRaster</code></a></li>
  <li><a href="#importing-and-exporting-data" id="toc-importing-and-exporting-data" class="nav-link" data-scroll-target="#importing-and-exporting-data"><span class="toc-section-number">4.2</span>  Importing and exporting data</a></li>
  <li><a href="#displaying-a-spatraster-object" id="toc-displaying-a-spatraster-object" class="nav-link" data-scroll-target="#displaying-a-spatraster-object"><span class="toc-section-number">4.3</span>  Displaying a SpatRaster object</a></li>
  <li><a href="#change-to-the-study-area" id="toc-change-to-the-study-area" class="nav-link" data-scroll-target="#change-to-the-study-area"><span class="toc-section-number">4.4</span>  Change to the study area</a>
  <ul>
  <li><a href="#reprojections" id="toc-reprojections" class="nav-link" data-scroll-target="#reprojections"><span class="toc-section-number">4.4.1</span>  (Re)projections</a></li>
  <li><a href="#crop" id="toc-crop" class="nav-link" data-scroll-target="#crop"><span class="toc-section-number">4.4.2</span>  Crop</a></li>
  <li><a href="#mask" id="toc-mask" class="nav-link" data-scroll-target="#mask"><span class="toc-section-number">4.4.3</span>  Mask</a></li>
  <li><a href="#aggregation-and-disaggregation" id="toc-aggregation-and-disaggregation" class="nav-link" data-scroll-target="#aggregation-and-disaggregation"><span class="toc-section-number">4.4.4</span>  Aggregation and disaggregation</a></li>
  <li><a href="#raster-fusion" id="toc-raster-fusion" class="nav-link" data-scroll-target="#raster-fusion"><span class="toc-section-number">4.4.5</span>  Raster fusion</a></li>
  <li><a href="#segregate" id="toc-segregate" class="nav-link" data-scroll-target="#segregate"><span class="toc-section-number">4.4.6</span>  Segregate</a></li>
  </ul></li>
  <li><a href="#map-algebra" id="toc-map-algebra" class="nav-link" data-scroll-target="#map-algebra"><span class="toc-section-number">4.5</span>  Map Algebra</a>
  <ul>
  <li><a href="#local-operations" id="toc-local-operations" class="nav-link" data-scroll-target="#local-operations"><span class="toc-section-number">4.5.1</span>  Local operations</a>
  <ul class="collapse">
  <li><a href="#value-replacement" id="toc-value-replacement" class="nav-link" data-scroll-target="#value-replacement"><span class="toc-section-number">4.5.1.1</span>  Value replacement</a></li>
  <li><a href="#operation-on-each-cell" id="toc-operation-on-each-cell" class="nav-link" data-scroll-target="#operation-on-each-cell"><span class="toc-section-number">4.5.1.2</span>  Operation on each cell</a></li>
  <li><a href="#reclassification" id="toc-reclassification" class="nav-link" data-scroll-target="#reclassification"><span class="toc-section-number">4.5.1.3</span>  Reclassification</a></li>
  <li><a href="#operation-on-several-layers-ex-ndvi" id="toc-operation-on-several-layers-ex-ndvi" class="nav-link" data-scroll-target="#operation-on-several-layers-ex-ndvi"><span class="toc-section-number">4.5.1.4</span>  Operation on several layers (ex: NDVI)</a></li>
  </ul></li>
  <li><a href="#focal-operations" id="toc-focal-operations" class="nav-link" data-scroll-target="#focal-operations"><span class="toc-section-number">4.5.2</span>  Focal operations</a>
  <ul class="collapse">
  <li><a href="#focal-operations-for-elevation-rasters" id="toc-focal-operations-for-elevation-rasters" class="nav-link" data-scroll-target="#focal-operations-for-elevation-rasters"><span class="toc-section-number">4.5.2.1</span>  Focal operations for elevation rasters</a></li>
  </ul></li>
  <li><a href="#global-operations" id="toc-global-operations" class="nav-link" data-scroll-target="#global-operations"><span class="toc-section-number">4.5.3</span>  Global operations</a></li>
  <li><a href="#zonal-operation" id="toc-zonal-operation" class="nav-link" data-scroll-target="#zonal-operation"><span class="toc-section-number">4.5.4</span>  Zonal operation</a>
  <ul class="collapse">
  <li><a href="#zonal-operation-on-an-extraction" id="toc-zonal-operation-on-an-extraction" class="nav-link" data-scroll-target="#zonal-operation-on-an-extraction"><span class="toc-section-number">4.5.4.1</span>  Zonal operation on an extraction</a></li>
  <li><a href="#zonal-operation-from-a-vector-layer" id="toc-zonal-operation-from-a-vector-layer" class="nav-link" data-scroll-target="#zonal-operation-from-a-vector-layer"><span class="toc-section-number">4.5.4.2</span>  Zonal operation from a vector layer</a></li>
  <li><a href="#zonal-operation-from-raster" id="toc-zonal-operation-from-raster" class="nav-link" data-scroll-target="#zonal-operation-from-raster"><span class="toc-section-number">4.5.4.3</span>  Zonal operation from raster</a></li>
  </ul></li>
  </ul></li>
  <li><a href="#transformation-and-conversion" id="toc-transformation-and-conversion" class="nav-link" data-scroll-target="#transformation-and-conversion"><span class="toc-section-number">4.6</span>  Transformation and conversion</a>
  <ul>
  <li><a href="#rasterization" id="toc-rasterization" class="nav-link" data-scroll-target="#rasterization"><span class="toc-section-number">4.6.1</span>  Rasterization</a></li>
  <li><a href="#vectorisation" id="toc-vectorisation" class="nav-link" data-scroll-target="#vectorisation"><span class="toc-section-number">4.6.2</span>  Vectorisation</a></li>
  <li><a href="#terra-raster-sf-stars" id="toc-terra-raster-sf-stars" class="nav-link" data-scroll-target="#terra-raster-sf-stars"><span class="toc-section-number">4.6.3</span>  terra, raster, sf, stars…</a></li>
  </ul></li>
  </ul>
</nav>
    </div>
<!-- main -->
<main class="content" id="quarto-document-content">

<header id="title-block-header" class="quarto-title-block default">
<div class="quarto-title">
<h1 class="title d-none d-lg-block"><span class="chapter-number">4</span>&nbsp; <span class="chapter-title">Using raster data</span></h1>
</div>



<div class="quarto-title-meta">

    
    
  </div>
  

</header>

<p>This chapter is largely inspired by two presentation; <span class="citation" data-cites="MmadelinSIGR">Madelin (<a href="references.html#ref-MmadelinSIGR" role="doc-biblioref">2021</a>)</span> and <span class="citation" data-cites="JNowosadSIGR">Nowosad (<a href="references.html#ref-JNowosadSIGR" role="doc-biblioref">2021</a>)</span>; carried out as part of the <a href="https://sigr2021.github.io/site/index.html">SIGR2021</a> thematic school.</p>
<section id="format-of-objects-spatraster" class="level2" data-number="4.1">
<h2 data-number="4.1" class="anchored" data-anchor-id="format-of-objects-spatraster"><span class="header-section-number">4.1</span> Format of objects <code>SpatRaster</code></h2>
<p>The package <code>terra</code> <span class="citation" data-cites="terra">(<a href="references.html#ref-terra" role="doc-biblioref">Hijmans 2022</a>)</span> allows to handle vector and raster data. To manipulate this spatial data, <code>terra</code> store it in object of type <code>SpatVector</code> and <code>SpatRaster</code>. In this chapter, we focus on the manipulation of raster data (<code>SpatRaster</code>) from functions offered by this package.</p>
<p>An object <code>SpatRaster</code> allows to handle vector and raster data, in one or more layers (variables). This object also stores a number of fundamental parameters that describe it (number of columns, rows, spatial extent, coordinate reference system, etc.).</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="img/raster.png" class="img-fluid figure-img" width="350"></p>
<p></p><figcaption class="figure-caption">Source : <span class="citation" data-cites="RasterCheatSheet">(<a href="references.html#ref-RasterCheatSheet" role="doc-biblioref">Racine 2016</a>)</span></figcaption><p></p>
</figure>
</div>
</section>
<section id="importing-and-exporting-data" class="level2" data-number="4.2">
<h2 data-number="4.2" class="anchored" data-anchor-id="importing-and-exporting-data"><span class="header-section-number">4.2</span> Importing and exporting data</h2>
<p>The package <code>terra</code> allows importing and exporting raster files. It is based on the <a href="https://gdal.org/">GDAL</a> library which makes it possible to read and process a very large number of geographic image formats.</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb1"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="fu">library</span>(terra)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
<p>The function <code>rast()</code> allows you to create and/or import raster data. The following lines import the raster file <strong>elevation.tif</strong> (<a href="https://fr.wikipedia.org/wiki/Tagged_Image_File_Format"><em>Tagged Image File Format</em></a>) into an object of type <code>SpatRaster</code> (default).</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb2"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a>elevation <span class="ot">&lt;-</span> <span class="fu">rast</span>(<span class="st">"data_cambodia/elevation.tif"</span>) </span>
<span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a>elevation</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-stdout">
<pre><code>class       : SpatRaster 
dimensions  : 5235, 6458, 1  (nrow, ncol, nlyr)
resolution  : 0.0008333394, 0.0008332568  (x, y)
extent      : 102.2935, 107.6752, 10.33984, 14.70194  (xmin, xmax, ymin, ymax)
coord. ref. : lon/lat WGS 84 (EPSG:4326) 
source      : elevation.tif 
name        : elevation </code></pre>
</div>
</div>
<p>Modifying the name of the stored variable (altitude).</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb4"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a><span class="fu">names</span>(elevation) <span class="ot">&lt;-</span> <span class="st">"Altitude"</span> </span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
<p>The function <code>writeRaster()</code> allow you to save an object <code>SpatRaster</code> on your machine, in the format of your choice.</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb5"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a><span class="fu">writeRaster</span>(<span class="at">x =</span> elevation, <span class="at">filename =</span> <span class="st">"data_cambodia/new_elevation.tif"</span>)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
</section>
<section id="displaying-a-spatraster-object" class="level2" data-number="4.3">
<h2 data-number="4.3" class="anchored" data-anchor-id="displaying-a-spatraster-object"><span class="header-section-number">4.3</span> Displaying a SpatRaster object</h2>
<p>The function <code>plot()</code> is use to display an object <code>SpatRaster</code>.</p>
<div class="cell" data-layout-align="center">
<div class="sourceCode cell-code" id="cb6"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(elevation)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="04-raster_data_files/figure-html/affichage_1_raster-1.png" class="img-fluid figure-img" width="576"></p>
</figure>
</div>
</div>
</div>
<p>A raster always contains numerical data, but it can be both quantitative data and numerically coded qualitative (categorical) data (ex: type of land cover).</p>
<p>Specify the type of data stored with the augment <code>type</code> (<code>type = "continuous"</code> default), to display them correctly.</p>
<p>Import and display of raster containing categorical data: Phnom Penh Land Cover 2019 (land cover types) with a resolution of 1.5 meters:</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb7"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true" tabindex="-1"></a>lulc_2019 <span class="ot">&lt;-</span> <span class="fu">rast</span>(<span class="st">"data_cambodia/lulc_2019.tif"</span>)   <span class="co">#Import Phnom Penh landcover 2019, landcover types</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
<p>The landcover data was produced from SPOT7 satellite image with 1.5 meter spatial resolution. An extraction centered on the municipality of Phnom Penh was then carried out.</p>
<div class="cell" data-layout-align="center">
<div class="sourceCode cell-code" id="cb8"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(lulc_2019, <span class="at">type =</span> <span class="st">"classes"</span>)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="04-raster_data_files/figure-html/affichage_raster_2-1.png" class="img-fluid figure-img" width="576"></p>
</figure>
</div>
</div>
</div>
<p>To display the actual tiles of landcover types you can proceed as follows.</p>
<div class="cell" data-layout-align="center">
<div class="sourceCode cell-code" id="cb9"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true" tabindex="-1"></a>class_name <span class="ot">&lt;-</span> <span class="fu">c</span>(</span>
<span id="cb9-2"><a href="#cb9-2" aria-hidden="true" tabindex="-1"></a>  <span class="st">"Roads"</span>,</span>
<span id="cb9-3"><a href="#cb9-3" aria-hidden="true" tabindex="-1"></a>  <span class="st">"Built-up areas"</span>,</span>
<span id="cb9-4"><a href="#cb9-4" aria-hidden="true" tabindex="-1"></a>  <span class="st">"Water Bodies and rivers"</span>,</span>
<span id="cb9-5"><a href="#cb9-5" aria-hidden="true" tabindex="-1"></a>  <span class="st">"Wetlands"</span>,</span>
<span id="cb9-6"><a href="#cb9-6" aria-hidden="true" tabindex="-1"></a>  <span class="st">"Dry bare area"</span>,</span>
<span id="cb9-7"><a href="#cb9-7" aria-hidden="true" tabindex="-1"></a>  <span class="st">"Bare crop fields"</span>,</span>
<span id="cb9-8"><a href="#cb9-8" aria-hidden="true" tabindex="-1"></a>  <span class="st">"Low vegetation areas"</span>,</span>
<span id="cb9-9"><a href="#cb9-9" aria-hidden="true" tabindex="-1"></a>  <span class="st">"High vegetation areas"</span>,</span>
<span id="cb9-10"><a href="#cb9-10" aria-hidden="true" tabindex="-1"></a>  <span class="st">"Forested areas"</span>)</span>
<span id="cb9-11"><a href="#cb9-11" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb9-12"><a href="#cb9-12" aria-hidden="true" tabindex="-1"></a>class_color <span class="ot">&lt;-</span> <span class="fu">c</span>(<span class="st">"#070401"</span>, <span class="st">"#c84639"</span>, <span class="st">"#1398eb"</span>,<span class="st">"#8bc2c2"</span>,</span>
<span id="cb9-13"><a href="#cb9-13" aria-hidden="true" tabindex="-1"></a>                 <span class="st">"#dc7b34"</span>, <span class="st">"#a6bd5f"</span>,<span class="st">"#e8e8e8"</span>, <span class="st">"#4fb040"</span>, <span class="st">"#35741f"</span>)</span>
<span id="cb9-14"><a href="#cb9-14" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(lulc_2019,</span>
<span id="cb9-15"><a href="#cb9-15" aria-hidden="true" tabindex="-1"></a>     <span class="at">type =</span> <span class="st">"classes"</span>,</span>
<span id="cb9-16"><a href="#cb9-16" aria-hidden="true" tabindex="-1"></a>     <span class="at">levels =</span> class_name,</span>
<span id="cb9-17"><a href="#cb9-17" aria-hidden="true" tabindex="-1"></a>     <span class="at">col =</span> class_color,</span>
<span id="cb9-18"><a href="#cb9-18" aria-hidden="true" tabindex="-1"></a>     <span class="at">plg =</span> <span class="fu">list</span>(<span class="at">cex =</span> <span class="fl">0.7</span>),</span>
<span id="cb9-19"><a href="#cb9-19" aria-hidden="true" tabindex="-1"></a>     <span class="at">mar =</span> <span class="fu">c</span>(<span class="fl">3.1</span>, <span class="fl">3.1</span>, <span class="fl">2.1</span>, <span class="dv">10</span>)   <span class="co">#The margin are (bottom, left, top, right) respectively</span></span>
<span id="cb9-20"><a href="#cb9-20" aria-hidden="true" tabindex="-1"></a>     )</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="04-raster_data_files/figure-html/affichage_raster_3-1.png" class="img-fluid figure-img" width="1152"></p>
</figure>
</div>
</div>
</div>
</section>
<section id="change-to-the-study-area" class="level2" data-number="4.4">
<h2 data-number="4.4" class="anchored" data-anchor-id="change-to-the-study-area"><span class="header-section-number">4.4</span> Change to the study area</h2>
<section id="reprojections" class="level3" data-number="4.4.1">
<h3 data-number="4.4.1" class="anchored" data-anchor-id="reprojections"><span class="header-section-number">4.4.1</span> (Re)projections</h3>
<p>To modify the projection system of a raster, use the function <code>project()</code>. It is then necessary to indicate the method for estimating the new cell values.</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="img/project_raster.png" class="img-fluid figure-img"></p>
<p></p><figcaption class="figure-caption">Source : Centre Canadien de Télédétection</figcaption><p></p>
</figure>
</div>
<p>Four interpolation methods are available:</p>
<ul>
<li><strong><em>near</em></strong> : nearest neighbor, fast and default method for qualitative data;<br>
</li>
<li><strong><em>bilinear</em></strong> : bilinear interpolation. Default method for quantitative data;<br>
</li>
<li><strong><em>cubic</em></strong> : cubic interpolation;<br>
</li>
<li><strong><em>cubicspline</em></strong> : cubic spline interpolation.</li>
</ul>
<div class="cell" data-layout-align="center">
<div class="sourceCode cell-code" id="cb10"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a><span class="co"># Re-project data </span></span>
<span id="cb10-2"><a href="#cb10-2" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb10-3"><a href="#cb10-3" aria-hidden="true" tabindex="-1"></a>elevation_utm <span class="ot">=</span> <span class="fu">project</span>(<span class="at">x =</span> elevation, <span class="at">y =</span> <span class="st">"EPSG:32648"</span>, <span class="at">method =</span> <span class="st">"bilinear"</span>)  <span class="co">#from WGS84(EPSG:4326) to UTM zone48N(EPSG:32648) </span></span>
<span id="cb10-4"><a href="#cb10-4" aria-hidden="true" tabindex="-1"></a>lulc_2019_utm <span class="ot">=</span> <span class="fu">project</span>(<span class="at">x =</span> lulc_2019, <span class="at">y =</span> <span class="st">"EPSG:32648"</span>, <span class="at">method =</span> <span class="st">"near"</span>) <span class="co">#keep original projection: UTM zone48N(EPSG:32648)</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
<div class="cell" data-layout-align="center">
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="04-raster_data_files/figure-html/reproj_raster_2-1.png" class="img-fluid figure-img" width="672"></p>
</figure>
</div>
</div>
</div>
</section>
<section id="crop" class="level3" data-number="4.4.2">
<h3 data-number="4.4.2" class="anchored" data-anchor-id="crop"><span class="header-section-number">4.4.2</span> Crop</h3>
<p>Clipping a raster to the extent of another object <code>SpatVector</code> or <code>SpatRaster</code> is achievable with the <code>crop()</code>.</p>
<div class="quarto-layout-panel">
<div class="quarto-layout-row quarto-layout-valign-top">
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: center;">
<p><img src="img/crop.png" class="img-fluid"></p>
</div>
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: center;">
<p><img src="img/crop2.png" class="img-fluid"></p>
</div>
</div>
<div class="quarto-layout-row quarto-layout-valign-top">
<div class="quarto-layout-cell" style="flex-basis: 50.0%;justify-content: center;">
<p>Source : <span class="citation" data-cites="RasterCheatSheet">(<a href="references.html#ref-RasterCheatSheet" role="doc-biblioref">Racine 2016</a>)</span></p>
</div>
</div>
</div>
<p>Import vector data of (municipal divisions) using function <code>vect</code>. This data will be stored in an <code>SpatVector</code> object.</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb11"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true" tabindex="-1"></a>district <span class="ot">&lt;-</span> <span class="fu">vect</span>(<span class="st">"data_cambodia/cambodia.gpkg"</span>, <span class="at">layer=</span><span class="st">"district"</span>)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
<p>Extraction of district boundaries of Thma Bang district (ADM2_PCODE : KH0907).</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb12"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true" tabindex="-1"></a>thma_bang <span class="ot">&lt;-</span> <span class="fu">subset</span>(district, district<span class="sc">$</span>ADM2_PCODE <span class="sc">==</span> <span class="st">"KH0907"</span>) </span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
<p>Using the function <code>crop()</code>, Both data layers must be in the same projection.</p>
<div class="cell" data-layout-align="center">
<div class="sourceCode cell-code" id="cb13"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb13-1"><a href="#cb13-1" aria-hidden="true" tabindex="-1"></a>crop_thma_bang <span class="ot">&lt;-</span> <span class="fu">crop</span>(elevation_utm, thma_bang)</span>
<span id="cb13-2"><a href="#cb13-2" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb13-3"><a href="#cb13-3" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(crop_thma_bang)</span>
<span id="cb13-4"><a href="#cb13-4" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(thma_bang, <span class="at">add=</span><span class="cn">TRUE</span>)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="04-raster_data_files/figure-html/crop_raster_3-1.png" class="img-fluid figure-img" width="576"></p>
</figure>
</div>
</div>
</div>
</section>
<section id="mask" class="level3" data-number="4.4.3">
<h3 data-number="4.4.3" class="anchored" data-anchor-id="mask"><span class="header-section-number">4.4.3</span> Mask</h3>
<p>To display only the values of a raster contained in a polygon, use the function <code>mask()</code>.</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="img/mask.png" class="img-fluid figure-img" width="350"></p>
<p></p><figcaption class="figure-caption">Source : <span class="citation" data-cites="RasterCheatSheet">(<a href="references.html#ref-RasterCheatSheet" role="doc-biblioref">Racine 2016</a>)</span></figcaption><p></p>
</figure>
</div>
<p>Creation of a mask on the <strong>crop_thma_bang</strong> raster to the municipal limits (polygon) of <strong>Thma Bang district</strong>.</p>
<div class="cell" data-layout-align="center">
<div class="sourceCode cell-code" id="cb14"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb14-1"><a href="#cb14-1" aria-hidden="true" tabindex="-1"></a>mask_thma_bang <span class="ot">&lt;-</span> <span class="fu">mask</span>(crop_thma_bang, thma_bang)</span>
<span id="cb14-2"><a href="#cb14-2" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb14-3"><a href="#cb14-3" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(mask_thma_bang)</span>
<span id="cb14-4"><a href="#cb14-4" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(thma_bang, <span class="at">add =</span> <span class="cn">TRUE</span>)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="04-raster_data_files/figure-html/mask_raster-1.png" class="img-fluid figure-img" width="576"></p>
</figure>
</div>
</div>
</div>
</section>
<section id="aggregation-and-disaggregation" class="level3" data-number="4.4.4">
<h3 data-number="4.4.4" class="anchored" data-anchor-id="aggregation-and-disaggregation"><span class="header-section-number">4.4.4</span> Aggregation and disaggregation</h3>
<p>Resampling a raster to a different resolution is done in two steps.</p>
<div class="quarto-layout-panel">
<div class="quarto-layout-row quarto-layout-valign-top">
<div class="quarto-layout-cell" style="flex-basis: 33.3%;justify-content: center;">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="img/raster.png" class="img-fluid figure-img"></p>
<p></p><figcaption class="figure-caption">1</figcaption><p></p>
</figure>
</div>
</div>
<div class="quarto-layout-cell" style="flex-basis: 33.3%;justify-content: center;">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="img/agr_raster.png" class="img-fluid figure-img"></p>
<p></p><figcaption class="figure-caption">2</figcaption><p></p>
</figure>
</div>
</div>
<div class="quarto-layout-cell" style="flex-basis: 33.3%;justify-content: center;">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="img/agr_raster_2.png" class="img-fluid figure-img"></p>
<p></p><figcaption class="figure-caption">3</figcaption><p></p>
</figure>
</div>
</div>
</div>
<div class="quarto-layout-row quarto-layout-valign-top">
<div class="quarto-layout-cell" style="flex-basis: 33.3%;justify-content: center;">
<p>Source : <span class="citation" data-cites="RasterCheatSheet">(<a href="references.html#ref-RasterCheatSheet" role="doc-biblioref">Racine 2016</a>)</span></p>
</div>
</div>
</div>
<p>Display the resolution of a raster with the function <code>res()</code>.</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb15"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb15-1"><a href="#cb15-1" aria-hidden="true" tabindex="-1"></a><span class="fu">res</span>(elevation_utm)    <span class="co">#check cell size</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-stdout">
<pre><code>[1] 91.19475 91.19475</code></pre>
</div>
</div>
<p>Create a grid with the same extent, then decrease the spatial resolution (larger cells).</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb17"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb17-1"><a href="#cb17-1" aria-hidden="true" tabindex="-1"></a>elevation_LowerGrid <span class="ot">&lt;-</span> elevation_utm</span>
<span id="cb17-2"><a href="#cb17-2" aria-hidden="true" tabindex="-1"></a><span class="co"># elevation_HigherGrid  &lt;- elevation_utm</span></span>
<span id="cb17-3"><a href="#cb17-3" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb17-4"><a href="#cb17-4" aria-hidden="true" tabindex="-1"></a><span class="fu">res</span>(elevation_LowerGrid) <span class="ot">&lt;-</span> <span class="dv">1000</span>       <span class="co">#cells size = 1000 meter</span></span>
<span id="cb17-5"><a href="#cb17-5" aria-hidden="true" tabindex="-1"></a><span class="co"># res(elevation_HigherGrid) &lt;- 10        #cells size = 10 meter</span></span>
<span id="cb17-6"><a href="#cb17-6" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb17-7"><a href="#cb17-7" aria-hidden="true" tabindex="-1"></a>elevation_LowerGrid</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-stdout">
<pre><code>class       : SpatRaster 
dimensions  : 484, 589, 1  (nrow, ncol, nlyr)
resolution  : 1000, 1000  (x, y)
extent      : 203586.3, 792586.3, 1142954, 1626954  (xmin, xmax, ymin, ymax)
coord. ref. : WGS 84 / UTM zone 48N (EPSG:32648) </code></pre>
</div>
</div>
<p>The function <code>resample()</code> allows to resample the atarting values in the new spatial resolution. Several resampling methods are available (cf.&nbsp;<a href="#reprojections">partie 5.4.1</a>).</p>
<div class="cell" data-layout-align="center">
<div class="sourceCode cell-code" id="cb19"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb19-1"><a href="#cb19-1" aria-hidden="true" tabindex="-1"></a>elevation_LowerGrid <span class="ot">&lt;-</span> <span class="fu">resample</span>(elevation_utm, </span>
<span id="cb19-2"><a href="#cb19-2" aria-hidden="true" tabindex="-1"></a>                                elevation_LowerGrid, </span>
<span id="cb19-3"><a href="#cb19-3" aria-hidden="true" tabindex="-1"></a>                                <span class="at">method =</span> <span class="st">"bilinear"</span>) </span>
<span id="cb19-4"><a href="#cb19-4" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb19-5"><a href="#cb19-5" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(elevation_LowerGrid, </span>
<span id="cb19-6"><a href="#cb19-6" aria-hidden="true" tabindex="-1"></a>     <span class="at">main=</span><span class="st">"Cell size = 1000m</span><span class="sc">\n</span><span class="st">Bilinear resampling method"</span>)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="04-raster_data_files/figure-html/agr_raster_2-1.png" class="img-fluid figure-img" width="576"></p>
</figure>
</div>
</div>
</div>
</section>
<section id="raster-fusion" class="level3" data-number="4.4.5">
<h3 data-number="4.4.5" class="anchored" data-anchor-id="raster-fusion"><span class="header-section-number">4.4.5</span> Raster fusion</h3>
<p>Merge multiple objects <code>SpatRaster</code> into one with <code>merge()</code> or <code>mosaic()</code>.</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="img/mosaic.png" class="img-fluid figure-img"></p>
<p></p><figcaption class="figure-caption">Source : <a href="https://desktop.arcgis.com/fr/arcmap/10.3/manage-data/raster-and-images/what-is-a-mosaic.htm" class="uri">https://desktop.arcgis.com/fr/arcmap/10.3/manage-data/raster-and-images/what-is-a-mosaic.htm</a></figcaption><p></p>
</figure>
</div>
<p>After cutting the elevation raster by the municipal boundary of Thma Bang district (cf <a href="#crop">partie 5.4.2</a>), we do the same thing for the neighboring municipality of Phnum Kravanh district.</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb20"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb20-1"><a href="#cb20-1" aria-hidden="true" tabindex="-1"></a>phnum_kravanh <span class="ot">&lt;-</span> <span class="fu">subset</span>(district, district<span class="sc">$</span>ADM2_PCODE <span class="sc">==</span> <span class="st">"KH1504"</span>)     <span class="co"># Extraction of the municipal boundaries of Phnum Kravanh district</span></span>
<span id="cb20-2"><a href="#cb20-2" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb20-3"><a href="#cb20-3" aria-hidden="true" tabindex="-1"></a>crop_phnum_kravanh <span class="ot">&lt;-</span> <span class="fu">crop</span>(elevation_utm, phnum_kravanh)             <span class="co">#clipping the elevation raster according to district boundaries</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
<p>The <strong>crop_thma_bang</strong> and <strong>crop_phnum_kravanh</strong> elevation raster overlap spatially:</p>
<div class="cell" data-layout-align="center">
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="04-raster_data_files/figure-html/merge_raster_1-1.png" class="img-fluid figure-img" width="768"></p>
</figure>
</div>
</div>
</div>
<p>The difference between the functions <code>merge()</code> and <code>mosiac()</code> relates to values of the overlapping cells. The function <code>mosaic()</code> calculate the average value while <code>merge()</code> holding the value of the object <code>SpaRaster</code> called n the function.</p>
<div class="cell" data-layout-align="center">
<div class="sourceCode cell-code" id="cb21"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb21-1"><a href="#cb21-1" aria-hidden="true" tabindex="-1"></a><span class="co">#in this example, merge() and mosaic() give the same result</span></span>
<span id="cb21-2"><a href="#cb21-2" aria-hidden="true" tabindex="-1"></a>merge_raster <span class="ot">&lt;-</span> <span class="fu">merge</span>(crop_thma_bang, crop_phnum_kravanh)   </span>
<span id="cb21-3"><a href="#cb21-3" aria-hidden="true" tabindex="-1"></a>mosaic_raster <span class="ot">&lt;-</span> <span class="fu">mosaic</span>(crop_thma_bang, crop_phnum_kravanh)</span>
<span id="cb21-4"><a href="#cb21-4" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb21-5"><a href="#cb21-5" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(merge_raster)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="04-raster_data_files/figure-html/merge_raster_2-1.png" class="img-fluid figure-img" width="576"></p>
</figure>
</div>
</div>
<div class="sourceCode cell-code" id="cb22"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb22-1"><a href="#cb22-1" aria-hidden="true" tabindex="-1"></a><span class="co"># plot(mosaic_raster)</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
</section>
<section id="segregate" class="level3" data-number="4.4.6">
<h3 data-number="4.4.6" class="anchored" data-anchor-id="segregate"><span class="header-section-number">4.4.6</span> Segregate</h3>
<p>Decompose a raster by value (or modality) into different rasterlayers with the function <code>segregate</code>.</p>
<div class="cell" data-layout-align="center">
<div class="sourceCode cell-code" id="cb23"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb23-1"><a href="#cb23-1" aria-hidden="true" tabindex="-1"></a>lulc_2019_class <span class="ot">&lt;-</span> <span class="fu">segregate</span>(lulc_2019, <span class="at">keep=</span><span class="cn">TRUE</span>, <span class="at">other=</span><span class="cn">NA</span>)   <span class="co">#creating a raster layer by modality</span></span>
<span id="cb23-2"><a href="#cb23-2" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(lulc_2019_class)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="04-raster_data_files/figure-html/segregate-1.png" class="img-fluid figure-img" width="576"></p>
</figure>
</div>
</div>
</div>
</section>
</section>
<section id="map-algebra" class="level2" data-number="4.5">
<h2 data-number="4.5" class="anchored" data-anchor-id="map-algebra"><span class="header-section-number">4.5</span> Map Algebra</h2>
<p>Map algebra is classified into four groups of operation <span class="citation" data-cites="Tomlin_1990">(<a href="references.html#ref-Tomlin_1990" role="doc-biblioref">Tomlin 1990</a>)</span>:</p>
<ul>
<li><strong><em>Local</em></strong> : operation by cell, on one or more layers;<br>
</li>
<li><strong><em>Focal</em></strong> : neighborhood operation (surrounding cells);<br>
</li>
<li><strong><em>Zonal</em></strong> : to summarize the matrix values for certain zones, usually irregular;</li>
<li><strong><em>Global</em></strong> : to summarize the matrix values of one or more matrices.</li>
</ul>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="img/lo_fo_zo_glo.png" class="img-fluid figure-img"></p>
<p></p><figcaption class="figure-caption">Source : <span class="citation" data-cites="XingongLi2009">(<a href="references.html#ref-XingongLi2009" role="doc-biblioref">Li 2009</a>)</span></figcaption><p></p>
</figure>
</div>
<section id="local-operations" class="level3" data-number="4.5.1">
<h3 data-number="4.5.1" class="anchored" data-anchor-id="local-operations"><span class="header-section-number">4.5.1</span> Local operations</h3>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="img/op_local_2.png" class="img-fluid figure-img" width="452"></p>
<p></p><figcaption class="figure-caption">Source : <span class="citation" data-cites="JMennis2015">(<a href="references.html#ref-JMennis2015" role="doc-biblioref">Mennis 2015</a>)</span></figcaption><p></p>
</figure>
</div>
<section id="value-replacement" class="level4" data-number="4.5.1.1">
<h4 data-number="4.5.1.1" class="anchored" data-anchor-id="value-replacement"><span class="header-section-number">4.5.1.1</span> Value replacement</h4>
<div class="cell">
<div class="sourceCode cell-code" id="cb24"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb24-1"><a href="#cb24-1" aria-hidden="true" tabindex="-1"></a>elevation_utm[elevation_utm[[<span class="dv">1</span>]]<span class="sc">==</span> <span class="sc">-</span><span class="dv">9999</span>] <span class="ot">&lt;-</span> <span class="cn">NA</span>   <span class="co">#replaces -9999 values with NA</span></span>
<span id="cb24-2"><a href="#cb24-2" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb24-3"><a href="#cb24-3" aria-hidden="true" tabindex="-1"></a>elevation_utm[elevation_utm <span class="sc">&lt;</span> <span class="dv">1500</span>]  <span class="ot">&lt;-</span> <span class="cn">NA</span>        <span class="co">#Replace values &lt; 1500 with NA</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
<div class="cell">
<div class="sourceCode cell-code" id="cb25"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb25-1"><a href="#cb25-1" aria-hidden="true" tabindex="-1"></a>elevation_utm[<span class="fu">is.na</span>(elevation_utm)] <span class="ot">&lt;-</span> <span class="dv">0</span>   <span class="co">#replace NA values with 0</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
</section>
<section id="operation-on-each-cell" class="level4" data-number="4.5.1.2">
<h4 data-number="4.5.1.2" class="anchored" data-anchor-id="operation-on-each-cell"><span class="header-section-number">4.5.1.2</span> Operation on each cell</h4>
<div class="cell">
<div class="sourceCode cell-code" id="cb26"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb26-1"><a href="#cb26-1" aria-hidden="true" tabindex="-1"></a>elevation_1000 <span class="ot">&lt;-</span>  elevation_utm <span class="sc">+</span> <span class="dv">1000</span>   <span class="co"># Adding 1000 to the value of each cell</span></span>
<span id="cb26-2"><a href="#cb26-2" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb26-3"><a href="#cb26-3" aria-hidden="true" tabindex="-1"></a>elevation_median <span class="ot">&lt;-</span>  elevation_utm <span class="sc">-</span> <span class="fu">global</span>(elevation_utm, median)[[<span class="dv">1</span>]]   <span class="co"># Removed median elevation to each cell's value</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
<div class="cell" data-layout-align="center">
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="04-raster_data_files/figure-html/op_local_2-1.png" class="img-fluid figure-img" width="768"></p>
</figure>
</div>
</div>
</div>
</section>
<section id="reclassification" class="level4" data-number="4.5.1.3">
<h4 data-number="4.5.1.3" class="anchored" data-anchor-id="reclassification"><span class="header-section-number">4.5.1.3</span> Reclassification</h4>
<p>Reclassifying raster values can be used to discretize quantitative data as well as to categorize qualitative categories.</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb27"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb27-1"><a href="#cb27-1" aria-hidden="true" tabindex="-1"></a>reclassif <span class="ot">&lt;-</span> <span class="fu">matrix</span>(<span class="fu">c</span>(<span class="dv">1</span>, <span class="dv">2</span>, <span class="dv">1</span>, </span>
<span id="cb27-2"><a href="#cb27-2" aria-hidden="true" tabindex="-1"></a>                      <span class="dv">2</span>, <span class="dv">4</span>, <span class="dv">2</span>,</span>
<span id="cb27-3"><a href="#cb27-3" aria-hidden="true" tabindex="-1"></a>                      <span class="dv">4</span>, <span class="dv">6</span>, <span class="dv">3</span>,</span>
<span id="cb27-4"><a href="#cb27-4" aria-hidden="true" tabindex="-1"></a>                      <span class="dv">6</span>, <span class="dv">9</span>, <span class="dv">4</span>), </span>
<span id="cb27-5"><a href="#cb27-5" aria-hidden="true" tabindex="-1"></a>                    <span class="at">ncol =</span> <span class="dv">3</span>, <span class="at">byrow =</span> <span class="cn">TRUE</span>)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
<p>Values between 1 and 2 will be replaced by the value 1.<br>
Values between 3 and 4 will be replaced by the value 2.<br>
Values between 5 and 6 will be replaced by the value 3. Values between 7 and 9 will be replaced by the value 4.</p>
<p>…</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb28"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb28-1"><a href="#cb28-1" aria-hidden="true" tabindex="-1"></a>reclassif</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-stdout">
<pre><code>     [,1] [,2] [,3]
[1,]    1    2    1
[2,]    2    4    2
[3,]    4    6    3
[4,]    6    9    4</code></pre>
</div>
</div>
<p>The function <code>classify()</code> allows you to perform the reclassification.</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb30"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb30-1"><a href="#cb30-1" aria-hidden="true" tabindex="-1"></a>lulc_2019_reclass <span class="ot">&lt;-</span> <span class="fu">classify</span>(lulc_2019, <span class="at">rcl =</span> reclassif)</span>
<span id="cb30-2"><a href="#cb30-2" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(lulc_2019_reclass, <span class="at">type =</span><span class="st">"classes"</span>)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output-display">
<p><img src="04-raster_data_files/figure-html/reclass_4-1.png" class="img-fluid" width="672"></p>
</div>
</div>
<p>Display with the official titles and colors of the different categories.</p>
<div class="cell" data-layout-align="center">
<div class="sourceCode cell-code" id="cb31"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb31-1"><a href="#cb31-1" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(lulc_2019_reclass, </span>
<span id="cb31-2"><a href="#cb31-2" aria-hidden="true" tabindex="-1"></a>     <span class="at">type =</span><span class="st">"classes"</span>, </span>
<span id="cb31-3"><a href="#cb31-3" aria-hidden="true" tabindex="-1"></a>     <span class="at">levels=</span><span class="fu">c</span>(<span class="st">"Urban areas"</span>,</span>
<span id="cb31-4"><a href="#cb31-4" aria-hidden="true" tabindex="-1"></a>              <span class="st">"Water body"</span>,</span>
<span id="cb31-5"><a href="#cb31-5" aria-hidden="true" tabindex="-1"></a>              <span class="st">"Bare areas"</span>,</span>
<span id="cb31-6"><a href="#cb31-6" aria-hidden="true" tabindex="-1"></a>              <span class="st">"Vegetation areas"</span>),</span>
<span id="cb31-7"><a href="#cb31-7" aria-hidden="true" tabindex="-1"></a>     <span class="at">col=</span><span class="fu">c</span>(<span class="st">"#E6004D"</span>,</span>
<span id="cb31-8"><a href="#cb31-8" aria-hidden="true" tabindex="-1"></a>           <span class="st">"#00BFFF"</span>,</span>
<span id="cb31-9"><a href="#cb31-9" aria-hidden="true" tabindex="-1"></a>           <span class="st">"#D3D3D3"</span>, </span>
<span id="cb31-10"><a href="#cb31-10" aria-hidden="true" tabindex="-1"></a>           <span class="st">"#32CD32"</span>),</span>
<span id="cb31-11"><a href="#cb31-11" aria-hidden="true" tabindex="-1"></a>     <span class="at">mar=</span><span class="fu">c</span>(<span class="dv">3</span>, <span class="fl">1.5</span>, <span class="dv">1</span>, <span class="dv">11</span>))</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="04-raster_data_files/figure-html/reclass_6-1.png" class="img-fluid figure-img" style="width:80.0%"></p>
</figure>
</div>
</div>
</div>
</section>
<section id="operation-on-several-layers-ex-ndvi" class="level4" data-number="4.5.1.4">
<h4 data-number="4.5.1.4" class="anchored" data-anchor-id="operation-on-several-layers-ex-ndvi"><span class="header-section-number">4.5.1.4</span> Operation on several layers (ex: NDVI)</h4>
<p>It is possible to calculate the value of a cell from its values stored in different layers of an object <code>SpatRaster</code>.</p>
<p>Perhaps the most common example is the calculation of the <a href="http://www.trameverteetbleue.fr/outils-methodes/donnees-mobilisables/indice-vegetation-modis">Normalized Vegetation Index (<em>NDVI</em>)</a>. For each cell, a value is calculated from two layers of raster from a multispectral satellite image.</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb32"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb32-1"><a href="#cb32-1" aria-hidden="true" tabindex="-1"></a><span class="co"># Import d'une image satellite multispectrale</span></span>
<span id="cb32-2"><a href="#cb32-2" aria-hidden="true" tabindex="-1"></a>sentinel2a <span class="ot">&lt;-</span> <span class="fu">rast</span>(<span class="st">"data_cambodia/Sentinel2A.tif"</span>)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
<p>This multispectral satellite image (10m resolution) dated 25/02/2020, was produced by Sentinel-2 satellite and was retrieved from <a href="https://scihub.copernicus.eu/dhus/#/home">plateforme Copernicus Open Access Hub</a>. An extraction of Red and near infrared spectral bands, centered on the Phnom Penh city, was then carried out.</p>
<div class="cell" data-layout-align="center">
<div class="sourceCode cell-code" id="cb33"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb33-1"><a href="#cb33-1" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(sentinel2a)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="04-raster_data_files/figure-html/NDVI_1-1.png" class="img-fluid figure-img" width="672"></p>
</figure>
</div>
</div>
</div>
<p>To lighten the code, we assign the two matrix layers in different <code>SpatRaster</code> objects.</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb34"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb34-1"><a href="#cb34-1" aria-hidden="true" tabindex="-1"></a>B04_Red <span class="ot">&lt;-</span> sentinel2a[[<span class="dv">1</span>]]   <span class="co">#spectral band Red</span></span>
<span id="cb34-2"><a href="#cb34-2" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb34-3"><a href="#cb34-3" aria-hidden="true" tabindex="-1"></a>B08_NIR <span class="ot">&lt;-</span>sentinel2a[[<span class="dv">2</span>]]    <span class="co">#spectral band near infrared</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
<p>From these two raster objects , we can calculate the normalized vegetation index:</p>
<p><span class="math display">\[{NDVI}=\frac{\mathrm{NIR} - \mathrm{Red}} {\mathrm{NIR} + \mathrm{Red}}\]</span></p>
<div class="cell" data-layout-align="center">
<div class="sourceCode cell-code" id="cb35"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb35-1"><a href="#cb35-1" aria-hidden="true" tabindex="-1"></a>raster_NDVI <span class="ot">&lt;-</span> (B08_NIR <span class="sc">-</span> B04_Red ) <span class="sc">/</span> (B08_NIR <span class="sc">+</span> B04_Red )</span>
<span id="cb35-2"><a href="#cb35-2" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb35-3"><a href="#cb35-3" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(raster_NDVI)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="04-raster_data_files/figure-html/NDVI_3-1.png" class="img-fluid figure-img" style="width:90.0%"></p>
</figure>
</div>
</div>
</div>
<p>The higher the values (close to 1), the denser the vegetation.</p>
</section>
</section>
<section id="focal-operations" class="level3" data-number="4.5.2">
<h3 data-number="4.5.2" class="anchored" data-anchor-id="focal-operations"><span class="header-section-number">4.5.2</span> Focal operations</h3>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="img/op_focal_2.png" class="img-fluid figure-img" width="415"></p>
<p></p><figcaption class="figure-caption">Source : <span class="citation" data-cites="JMennis2015">(<a href="references.html#ref-JMennis2015" role="doc-biblioref">Mennis 2015</a>)</span></figcaption><p></p>
</figure>
</div>
<p>Focal analysis conisders a cell plus its direct neighbors in contiguous and symmetrical (neighborhood operations). Most often, the value of the output cell is the result of a block of 3 x 3 (odd number) input cells.</p>
<p>The first step is to build a matrix that determines the block of cells that will be considered around each cell.</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb36"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb36-1"><a href="#cb36-1" aria-hidden="true" tabindex="-1"></a><span class="co"># 5 x 5 matrix, where each cell has the same weight</span></span>
<span id="cb36-2"><a href="#cb36-2" aria-hidden="true" tabindex="-1"></a>mon_focal <span class="ot">&lt;-</span> <span class="fu">matrix</span>(<span class="dv">1</span>, <span class="at">nrow =</span> <span class="dv">5</span>, <span class="at">ncol =</span> <span class="dv">5</span>)</span>
<span id="cb36-3"><a href="#cb36-3" aria-hidden="true" tabindex="-1"></a>mon_focal</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-stdout">
<pre><code>     [,1] [,2] [,3] [,4] [,5]
[1,]    1    1    1    1    1
[2,]    1    1    1    1    1
[3,]    1    1    1    1    1
[4,]    1    1    1    1    1
[5,]    1    1    1    1    1</code></pre>
</div>
</div>
<p>The function <code>focal()</code> Then allows you to perform the desired analysis. For example: calculating the average of the values of all contiguous cells, for each cell in the raster.</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb38"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb38-1"><a href="#cb38-1" aria-hidden="true" tabindex="-1"></a>elevation_LowerGrid_mean <span class="ot">&lt;-</span> <span class="fu">focal</span>(elevation_LowerGrid, </span>
<span id="cb38-2"><a href="#cb38-2" aria-hidden="true" tabindex="-1"></a>                                  <span class="at">w =</span> mon_focal, </span>
<span id="cb38-3"><a href="#cb38-3" aria-hidden="true" tabindex="-1"></a>                                  <span class="at">fun =</span> mean)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
<div class="cell" data-layout-align="center">
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="04-raster_data_files/figure-html/op_focal_5-1.png" class="img-fluid figure-img" width="768"></p>
</figure>
</div>
</div>
</div>
<section id="focal-operations-for-elevation-rasters" class="level4" data-number="4.5.2.1">
<h4 data-number="4.5.2.1" class="anchored" data-anchor-id="focal-operations-for-elevation-rasters"><span class="header-section-number">4.5.2.1</span> Focal operations for elevation rasters</h4>
<p>The function <code>terrain()</code> allows to perform focal analyzes specific to elevation rasters. Six operations are available:</p>
<ul>
<li><strong><em>slope</em></strong> = calculation of the slope or degree of inclination of the surface;<br>
</li>
<li><strong><em>aspect</em></strong> = calculate slope orientation;<br>
</li>
<li><strong><em>roughness</em></strong> = calculate of the variability or irregularity of the elevation;<br>
</li>
<li><strong><em>TPI</em></strong> = calculation of the index of topgraphic positions;<br>
</li>
<li><strong><em>TRI</em></strong> = elevation variability index calculation;<br>
</li>
<li><strong><em>flowdir</em></strong> = calculation of the water flow direction.</li>
</ul>
<p>Example with calculation of slopes(<em>slope</em>).</p>
<div class="cell" data-layout-align="center">
<div class="sourceCode cell-code" id="cb39"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb39-1"><a href="#cb39-1" aria-hidden="true" tabindex="-1"></a><span class="co">#slope calculation</span></span>
<span id="cb39-2"><a href="#cb39-2" aria-hidden="true" tabindex="-1"></a>slope <span class="ot">&lt;-</span> <span class="fu">terrain</span>(elevation_utm, <span class="st">"slope"</span>, </span>
<span id="cb39-3"><a href="#cb39-3" aria-hidden="true" tabindex="-1"></a>                 <span class="at">neighbors =</span> <span class="dv">8</span>,          <span class="co">#8 (or 4) cells around taken into account</span></span>
<span id="cb39-4"><a href="#cb39-4" aria-hidden="true" tabindex="-1"></a>                 <span class="at">unit =</span> <span class="st">"degrees"</span>)       <span class="co">#Output unit</span></span>
<span id="cb39-5"><a href="#cb39-5" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb39-6"><a href="#cb39-6" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(slope)                              <span class="co">#Inclination of the slopes, in degrees</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="04-raster_data_files/figure-html/op_focal_6-1.png" class="img-fluid figure-img" width="576"></p>
</figure>
</div>
</div>
</div>
</section>
</section>
<section id="global-operations" class="level3" data-number="4.5.3">
<h3 data-number="4.5.3" class="anchored" data-anchor-id="global-operations"><span class="header-section-number">4.5.3</span> Global operations</h3>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="img/op_global.png" class="img-fluid figure-img" width="297"></p>
<p></p><figcaption class="figure-caption">Source : <a href="https://gisgeography.com/map-algebra-global-zonal-focal-local" class="uri">https://gisgeography.com/map-algebra-global-zonal-focal-local</a></figcaption><p></p>
</figure>
</div>
<p>Global operation are used to summarize the matrix values of one or more matrices.</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb40"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb40-1"><a href="#cb40-1" aria-hidden="true" tabindex="-1"></a><span class="fu">global</span>(elevation_utm, <span class="at">fun =</span> <span class="st">"mean"</span>)  <span class="co">#average values</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-stdout">
<pre><code>             mean
Altitude 80.01082</code></pre>
</div>
</div>
<div class="cell">
<div class="sourceCode cell-code" id="cb42"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb42-1"><a href="#cb42-1" aria-hidden="true" tabindex="-1"></a><span class="fu">global</span>(elevation_utm, <span class="at">fun =</span> <span class="st">"sd"</span>)    <span class="co">#standard deviation</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-stdout">
<pre><code>              sd
Altitude 155.885</code></pre>
</div>
</div>
<div class="cell">
<div class="sourceCode cell-code" id="cb44"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb44-1"><a href="#cb44-1" aria-hidden="true" tabindex="-1"></a><span class="fu">freq</span>(lulc_2019_reclass)              <span class="co">#frequency</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-stdout">
<pre><code>  layer value    count
1     1     1 47485325
2     1     2 13656289
3     1     3 14880961
4     1     4 37194979</code></pre>
</div>
<div class="sourceCode cell-code" id="cb46"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb46-1"><a href="#cb46-1" aria-hidden="true" tabindex="-1"></a><span class="fu">table</span>(lulc_2019_reclass[])           <span class="co">#contingency table</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-stdout">
<pre><code>
       1        2        3        4 
47485325 13656289 14880961 37194979 </code></pre>
</div>
</div>
<p>Statistical representations that summarize matrix information.</p>
<div class="cell" data-layout-align="center">
<div class="sourceCode cell-code" id="cb48"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb48-1"><a href="#cb48-1" aria-hidden="true" tabindex="-1"></a><span class="fu">hist</span>(elevation_utm)            <span class="co">#histogram</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-stderr">
<pre><code>Warning: [hist] a sample of3% of the cells was used</code></pre>
</div>
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="04-raster_data_files/figure-html/op_global_4-1.png" class="img-fluid figure-img" width="576"></p>
</figure>
</div>
</div>
<div class="sourceCode cell-code" id="cb50"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb50-1"><a href="#cb50-1" aria-hidden="true" tabindex="-1"></a><span class="fu">density</span>(elevation_utm)         <span class="co">#density</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="04-raster_data_files/figure-html/op_global_4-2.png" class="img-fluid figure-img" width="576"></p>
</figure>
</div>
</div>
</div>
</section>
<section id="zonal-operation" class="level3" data-number="4.5.4">
<h3 data-number="4.5.4" class="anchored" data-anchor-id="zonal-operation"><span class="header-section-number">4.5.4</span> Zonal operation</h3>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="img/op_zonal_2.png" class="img-fluid figure-img" width="342"></p>
<p></p><figcaption class="figure-caption">Source : <span class="citation" data-cites="JMennis2015">(<a href="references.html#ref-JMennis2015" role="doc-biblioref">Mennis 2015</a>)</span></figcaption><p></p>
</figure>
</div>
<p>The zonal operation make it possible to summarize the matrix values of certain zones (group of contiguous cells in space or in value).</p>
<section id="zonal-operation-on-an-extraction" class="level4" data-number="4.5.4.1">
<h4 data-number="4.5.4.1" class="anchored" data-anchor-id="zonal-operation-on-an-extraction"><span class="header-section-number">4.5.4.1</span> Zonal operation on an extraction</h4>
<p><strong>All global operations can be performed on an extraction of cells resulting from the functions <code>crop()</code>, <code>mask()</code>, <code>segregate()</code>…</strong></p>
<p>Example: average elevation for the city of Thma Bang district (cf <a href="#mask">partie 5.4.3</a>).</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb51"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb51-1"><a href="#cb51-1" aria-hidden="true" tabindex="-1"></a><span class="co"># Average value of the "mask" raster over Thma Bang district</span></span>
<span id="cb51-2"><a href="#cb51-2" aria-hidden="true" tabindex="-1"></a><span class="fu">global</span>(mask_thma_bang, <span class="at">fun =</span> <span class="st">"mean"</span>, <span class="at">na.rm=</span><span class="cn">TRUE</span>)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-stdout">
<pre><code>             mean
Altitude 584.7703</code></pre>
</div>
</div>
</section>
<section id="zonal-operation-from-a-vector-layer" class="level4" data-number="4.5.4.2">
<h4 data-number="4.5.4.2" class="anchored" data-anchor-id="zonal-operation-from-a-vector-layer"><span class="header-section-number">4.5.4.2</span> Zonal operation from a vector layer</h4>
<p>The function <code>extract()</code> allows you to extract and manipulate the values of cells that intersect vector data.</p>
<p>Example from polygons:</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb53"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb53-1"><a href="#cb53-1" aria-hidden="true" tabindex="-1"></a><span class="co"># Average elevation for each polygon (district)?</span></span>
<span id="cb53-2"><a href="#cb53-2" aria-hidden="true" tabindex="-1"></a>elevation_by_dist <span class="ot">&lt;-</span>  <span class="fu">extract</span>(elevation_LowerGrid, district, <span class="at">fun=</span>mean)</span>
<span id="cb53-3"><a href="#cb53-3" aria-hidden="true" tabindex="-1"></a><span class="fu">head</span>(elevation_by_dist, <span class="dv">10</span>)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-stdout">
<pre><code>   ID   Altitude
1   1   8.953352
2   2 196.422240
3   3  23.453937
4   4   3.973118
5   5  29.545801
6   6  41.579593
7   7  50.162749
8   8  85.128777
9   9 269.068091
10 10   8.439041</code></pre>
</div>
</div>
</section>
<section id="zonal-operation-from-raster" class="level4" data-number="4.5.4.3">
<h4 data-number="4.5.4.3" class="anchored" data-anchor-id="zonal-operation-from-raster"><span class="header-section-number">4.5.4.3</span> Zonal operation from raster</h4>
<p>Zonal operation can be performed by area bounded by the categorical values of a second raster. For this, the two raster must have exaclty the same extent and the same resolution.</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb55"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb55-1"><a href="#cb55-1" aria-hidden="true" tabindex="-1"></a><span class="co">#create a second raster with same resolution and extent as "elevation_clip"</span></span>
<span id="cb55-2"><a href="#cb55-2" aria-hidden="true" tabindex="-1"></a>elevation_clip <span class="ot">&lt;-</span> <span class="fu">rast</span>(<span class="st">"data_cambodia/elevation_clip.tif"</span>)</span>
<span id="cb55-3"><a href="#cb55-3" aria-hidden="true" tabindex="-1"></a>elevation_clip_utm <span class="ot">&lt;-</span> <span class="fu">project</span>(<span class="at">x =</span> elevation_clip, <span class="at">y =</span> <span class="st">"EPSG:32648"</span>, <span class="at">method =</span> <span class="st">"bilinear"</span>)</span>
<span id="cb55-4"><a href="#cb55-4" aria-hidden="true" tabindex="-1"></a>second_raster_CLC <span class="ot">&lt;-</span> <span class="fu">rast</span>(elevation_clip_utm)</span>
<span id="cb55-5"><a href="#cb55-5" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb55-6"><a href="#cb55-6" aria-hidden="true" tabindex="-1"></a><span class="co">#resampling of lulc_2019_reclass </span></span>
<span id="cb55-7"><a href="#cb55-7" aria-hidden="true" tabindex="-1"></a>second_raster_CLC <span class="ot">&lt;-</span> <span class="fu">resample</span>(lulc_2019_reclass, second_raster_CLC, <span class="at">method =</span> <span class="st">"near"</span>) </span>
<span id="cb55-8"><a href="#cb55-8" aria-hidden="true" tabindex="-1"></a>                               </span>
<span id="cb55-9"><a href="#cb55-9" aria-hidden="true" tabindex="-1"></a><span class="co">#added a variable name for the second raster</span></span>
<span id="cb55-10"><a href="#cb55-10" aria-hidden="true" tabindex="-1"></a><span class="fu">names</span>(second_raster_CLC) <span class="ot">&lt;-</span> <span class="st">"lulc_2019_reclass_resample"</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
<div class="cell" data-layout-align="center">
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="04-raster_data_files/figure-html/op_zonal_2-1.png" class="img-fluid figure-img" width="768"></p>
</figure>
</div>
</div>
</div>
<p>Calculation of the average elevation for the different areas of the second raster.</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb56"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb56-1"><a href="#cb56-1" aria-hidden="true" tabindex="-1"></a><span class="co">#average elevation for each area of the "second_raster"</span></span>
<span id="cb56-2"><a href="#cb56-2" aria-hidden="true" tabindex="-1"></a><span class="fu">zonal</span>(elevation_clip_utm, second_raster_CLC , <span class="st">"mean"</span>, <span class="at">na.rm=</span><span class="cn">TRUE</span>)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-stdout">
<pre><code>  lulc_2019_reclass_resample elevation_clip
1                          1       12.83846
2                          2        8.31809
3                          3       11.41178
4                          4       11.93546</code></pre>
</div>
</div>
</section>
</section>
</section>
<section id="transformation-and-conversion" class="level2" data-number="4.6">
<h2 data-number="4.6" class="anchored" data-anchor-id="transformation-and-conversion"><span class="header-section-number">4.6</span> Transformation and conversion</h2>
<section id="rasterization" class="level3" data-number="4.6.1">
<h3 data-number="4.6.1" class="anchored" data-anchor-id="rasterization"><span class="header-section-number">4.6.1</span> Rasterization</h3>
<p>Convert polygons to raster format.</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb58"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb58-1"><a href="#cb58-1" aria-hidden="true" tabindex="-1"></a>chamkarmon <span class="ot">=</span> <span class="fu">subset</span>(district, district<span class="sc">$</span>ADM2_PCODE <span class="sc">==</span><span class="st">"KH1201"</span>)  </span>
<span id="cb58-2"><a href="#cb58-2" aria-hidden="true" tabindex="-1"></a>raster_district <span class="ot">&lt;-</span> <span class="fu">rasterize</span>(<span class="at">x =</span> chamkarmon, <span class="at">y =</span> elevation_clip_utm)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
<div class="cell" data-layout-align="center">
<div class="sourceCode cell-code" id="cb59"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb59-1"><a href="#cb59-1" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(raster_district)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output-display">
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="04-raster_data_files/figure-html/Raster_vec11-1.png" class="img-fluid figure-img" width="576"></p>
</figure>
</div>
</div>
</div>
<p>Convert points to raster format</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb60"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb60-1"><a href="#cb60-1" aria-hidden="true" tabindex="-1"></a><span class="co">#rasterization of the centroids of the municipalities</span></span>
<span id="cb60-2"><a href="#cb60-2" aria-hidden="true" tabindex="-1"></a>raster_dist_centroid <span class="ot">&lt;-</span> <span class="fu">rasterize</span>(<span class="at">x =</span> <span class="fu">centroids</span>(district), </span>
<span id="cb60-3"><a href="#cb60-3" aria-hidden="true" tabindex="-1"></a>                                  <span class="at">y =</span> elevation_clip_utm, <span class="at">fun=</span>sum)</span>
<span id="cb60-4"><a href="#cb60-4" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(raster_dist_centroid, <span class="at">col =</span> <span class="st">"red"</span>)</span>
<span id="cb60-5"><a href="#cb60-5" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(district, <span class="at">add =</span><span class="cn">TRUE</span>)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output-display">
<p><img src="04-raster_data_files/figure-html/Raster_vec2-1.png" class="img-fluid" width="672"></p>
</div>
</div>
<p>Convert lines in raster format</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb61"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb61-1"><a href="#cb61-1" aria-hidden="true" tabindex="-1"></a><span class="co">#rasterization of municipal boundaries</span></span>
<span id="cb61-2"><a href="#cb61-2" aria-hidden="true" tabindex="-1"></a>raster_dist_line <span class="ot">&lt;-</span> <span class="fu">rasterize</span>(<span class="at">x =</span> <span class="fu">as.lines</span>(district), <span class="at">y =</span> elevation_clip_utm, <span class="at">fun=</span>sum)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
<div class="cell">
<div class="sourceCode cell-code" id="cb62"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb62-1"><a href="#cb62-1" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(raster_dist_line)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output-display">
<p><img src="04-raster_data_files/figure-html/Raster_vec33-1.png" class="img-fluid" width="672"></p>
</div>
</div>
</section>
<section id="vectorisation" class="level3" data-number="4.6.2">
<h3 data-number="4.6.2" class="anchored" data-anchor-id="vectorisation"><span class="header-section-number">4.6.2</span> Vectorisation</h3>
<p>Transform a raster to vector polygons.</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb63"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb63-1"><a href="#cb63-1" aria-hidden="true" tabindex="-1"></a>polygon_elevation <span class="ot">&lt;-</span> <span class="fu">as.polygons</span>(elevation_clip_utm)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
<div class="cell">
<div class="sourceCode cell-code" id="cb64"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb64-1"><a href="#cb64-1" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(polygon_elevation, <span class="at">y =</span> <span class="dv">1</span>, <span class="at">border=</span><span class="st">"white"</span>)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output-display">
<p><img src="04-raster_data_files/figure-html/Raster_vec44-1.png" class="img-fluid" width="672"></p>
</div>
</div>
<p>Transform a raster to vector points.</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb65"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb65-1"><a href="#cb65-1" aria-hidden="true" tabindex="-1"></a>points_elevation <span class="ot">&lt;-</span> <span class="fu">as.points</span>(elevation_clip_utm)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
<div class="cell">
<div class="sourceCode cell-code" id="cb66"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb66-1"><a href="#cb66-1" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(points_elevation, <span class="at">y =</span> <span class="dv">1</span>, <span class="at">cex =</span> <span class="fl">0.3</span>)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output-display">
<p><img src="04-raster_data_files/figure-html/Raster_vec55-1.png" class="img-fluid" width="672"></p>
</div>
</div>
<p>Transform a raster into vector lines.</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb67"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb67-1"><a href="#cb67-1" aria-hidden="true" tabindex="-1"></a>lines_elevation <span class="ot">&lt;-</span> <span class="fu">as.lines</span>(elevation_clip_utm)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
<div class="cell">
<div class="sourceCode cell-code" id="cb68"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb68-1"><a href="#cb68-1" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(lines_elevation)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output-display">
<p><img src="04-raster_data_files/figure-html/Raster_vec66-1.png" class="img-fluid" width="672"></p>
</div>
</div>
</section>
<section id="terra-raster-sf-stars" class="level3" data-number="4.6.3">
<h3 data-number="4.6.3" class="anchored" data-anchor-id="terra-raster-sf-stars"><span class="header-section-number">4.6.3</span> terra, raster, sf, stars…</h3>
<p>Reference packages for manipulating spatial data all rely o their own object class. It is sometimes necessary to convert these objects from one class to another class to take advance of all the features offered by these different packages.</p>
<p>Conversion functions for raster data:</p>
<table class="table">
<thead>
<tr class="header">
<th>FROM/TO</th>
<th>raster</th>
<th>terra</th>
<th>stars</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>raster</td>
<td></td>
<td>rast()</td>
<td>st_as_stars()</td>
</tr>
<tr class="even">
<td>terra</td>
<td>raster()</td>
<td></td>
<td>st_as_stars()</td>
</tr>
<tr class="odd">
<td>stars</td>
<td>raster()</td>
<td>as(x, ‘Raster’) + rast()</td>
<td></td>
</tr>
</tbody>
</table>
<p>Conversion functions for vector data:</p>
<table class="table">
<thead>
<tr class="header">
<th>FROM/TO</th>
<th>sf</th>
<th>sp</th>
<th>terra</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>sf</td>
<td></td>
<td>as(x, ‘Spatial’)</td>
<td>vect()</td>
</tr>
<tr class="even">
<td>sp</td>
<td>st_as_sf()</td>
<td></td>
<td>vect()</td>
</tr>
<tr class="odd">
<td>terra</td>
<td>st_as_sf()</td>
<td>as(x, ‘Spatial’)</td>
<td></td>
</tr>
</tbody>
</table>


<div id="refs" class="references csl-bib-body hanging-indent" role="doc-bibliography" style="display: none">
<div id="ref-terra" class="csl-entry" role="doc-biblioentry">
Hijmans, Robert J. 2022. <span>“Terra: Spatial Data Analysis.”</span> <a href="https://CRAN.R-project.org/package=terra">https://CRAN.R-project.org/package=terra</a>.
</div>
<div id="ref-XingongLi2009" class="csl-entry" role="doc-biblioentry">
Li, Xingong. 2009. <span>“Map Algebra and Beyond : 1. Map Algebra for Scalar Fields.”</span> <a href="https://slideplayer.com/slide/5822638/" class="uri">https://slideplayer.com/slide/5822638/</a>.
</div>
<div id="ref-MmadelinSIGR" class="csl-entry" role="doc-biblioentry">
Madelin, Malika. 2021. <span>“Analyse d’images Raster (Et Télédétection).”</span> <a href="https://mmadelin.github.io/sigr2021/SIGR2021_raster_MM.html" class="uri">https://mmadelin.github.io/sigr2021/SIGR2021_raster_MM.html</a>.
</div>
<div id="ref-JMennis2015" class="csl-entry" role="doc-biblioentry">
Mennis, Jeremy. 2015. <span>“Fundamentals of GIS : Raster Operations.”</span> <a href="https://cupdf.com/document/gus-0262-fundamentals-of-gis-lecture-presentation-7-raster-operations-jeremy.html" class="uri">https://cupdf.com/document/gus-0262-fundamentals-of-gis-lecture-presentation-7-raster-operations-jeremy.html</a>.
</div>
<div id="ref-JNowosadSIGR" class="csl-entry" role="doc-biblioentry">
Nowosad, Jakub. 2021. <span>“Image Processing and All Things Raster.”</span> <a href="https://nowosad.github.io/SIGR2021/workshop2/workshop2.html" class="uri">https://nowosad.github.io/SIGR2021/workshop2/workshop2.html</a>.
</div>
<div id="ref-RasterCheatSheet" class="csl-entry" role="doc-biblioentry">
Racine, Etienne B. 2016. <span>“The Visual Raster Cheat Sheet.”</span> <a href="https://rpubs.com/etiennebr/visualraster" class="uri">https://rpubs.com/etiennebr/visualraster</a>.
</div>
<div id="ref-Tomlin_1990" class="csl-entry" role="doc-biblioentry">
Tomlin, C. Dana. 1990. <em>Geographic Information Systems and Cartographic Modeling</em>. Prentice Hall.
</div>
</div>
</section>
</section>

</main> <!-- /main -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
  const toggleBodyColorMode = (bsSheetEl) => {
    const mode = bsSheetEl.getAttribute("data-mode");
    const bodyEl = window.document.querySelector("body");
    if (mode === "dark") {
      bodyEl.classList.add("quarto-dark");
      bodyEl.classList.remove("quarto-light");
    } else {
      bodyEl.classList.add("quarto-light");
      bodyEl.classList.remove("quarto-dark");
    }
  }
  const toggleBodyColorPrimary = () => {
    const bsSheetEl = window.document.querySelector("link#quarto-bootstrap");
    if (bsSheetEl) {
      toggleBodyColorMode(bsSheetEl);
    }
  }
  toggleBodyColorPrimary();  
  const icon = "";
  const anchorJS = new window.AnchorJS();
  anchorJS.options = {
    placement: 'right',
    icon: icon
  };
  anchorJS.add('.anchored');
  const clipboard = new window.ClipboardJS('.code-copy-button', {
    target: function(trigger) {
      return trigger.previousElementSibling;
    }
  });
  clipboard.on('success', function(e) {
    // button target
    const button = e.trigger;
    // don't keep focus
    button.blur();
    // flash "checked"
    button.classList.add('code-copy-button-checked');
    var currentTitle = button.getAttribute("title");
    button.setAttribute("title", "Copied!");
    setTimeout(function() {
      button.setAttribute("title", currentTitle);
      button.classList.remove('code-copy-button-checked');
    }, 1000);
    // clear code selection
    e.clearSelection();
  });
  function tippyHover(el, contentFn) {
    const config = {
      allowHTML: true,
      content: contentFn,
      maxWidth: 500,
      delay: 100,
      arrow: false,
      appendTo: function(el) {
          return el.parentElement;
      },
      interactive: true,
      interactiveBorder: 10,
      theme: 'quarto',
      placement: 'bottom-start'
    };
    window.tippy(el, config); 
  }
  const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
  for (var i=0; i<noterefs.length; i++) {
    const ref = noterefs[i];
    tippyHover(ref, function() {
      // use id or data attribute instead here
      let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
      try { href = new URL(href).hash; } catch {}
      const id = href.replace(/^#\/?/, "");
      const note = window.document.getElementById(id);
      return note.innerHTML;
    });
  }
  var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
  for (var i=0; i<bibliorefs.length; i++) {
    const ref = bibliorefs[i];
    const cites = ref.parentNode.getAttribute('data-cites').split(' ');
    tippyHover(ref, function() {
      var popup = window.document.createElement('div');
      cites.forEach(function(cite) {
        var citeDiv = window.document.createElement('div');
        citeDiv.classList.add('hanging-indent');
        citeDiv.classList.add('csl-entry');
        var biblioDiv = window.document.getElementById('ref-' + cite);
        if (biblioDiv) {
          citeDiv.innerHTML = biblioDiv.innerHTML;
        }
        popup.appendChild(citeDiv);
      });
      return popup.innerHTML;
    });
  }
    var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
      var filterRegex = new RegExp('/' + window.location.host + '/');
    var isInternal = (href) => {
        return filterRegex.test(href) || localhostRegex.test(href);
    }
    // Inspect non-navigation links and adorn them if external
    var links = window.document.querySelectorAll('a:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external)');
    for (var i=0; i<links.length; i++) {
      const link = links[i];
      if (!isInternal(link.href)) {
          // target, if specified
          link.setAttribute("target", "_blank");
      }
    }
});
</script>
<nav class="page-navigation">
  <div class="nav-page nav-page-previous">
      <a href="./03-vector_data.html" class="pagination-link">
        <i class="bi bi-arrow-left-short"></i> <span class="nav-page-text"><span class="chapter-number">3</span>&nbsp; <span class="chapter-title">Using vector data</span></span>
      </a>          
  </div>
  <div class="nav-page nav-page-next">
      <a href="./05-mapping_with_r.html" class="pagination-link">
        <span class="nav-page-text"><span class="chapter-number">5</span>&nbsp; <span class="chapter-title">Mapping With R</span></span> <i class="bi bi-arrow-right-short"></i>
      </a>
  </div>
</nav>
</div> <!-- /content -->
<footer class="footer">
  <div class="nav-footer">
    <div class="nav-footer-left">UMR 228 ESPACE-DEV</div>   
    <div class="nav-footer-right"><img src="img/ird_footer.png" height="50"></div>
  </div>
</footer>



<script src="site_libs/quarto-html/zenscroll-min.js"></script>
</body></html>