mirror of
https://github.com/bellingcat/RS4OSINT.git
synced 2026-06-08 03:28:36 +03:00
983 lines
43 KiB
HTML
983 lines
43 KiB
HTML
<!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>Google Earth Engine for OSINT - 1 Data Acquisition</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;
|
||
}
|
||
</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="./ch2.html" rel="next">
|
||
<link href="./index.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" class="quarto-color-scheme" id="quarto-text-highlighting-styles">
|
||
<link href="site_libs/quarto-html/quarto-syntax-highlighting-dark.css" rel="stylesheet" class="quarto-color-scheme quarto-color-alternate" 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" class="quarto-color-scheme" id="quarto-bootstrap" data-mode="light">
|
||
<link href="site_libs/bootstrap/bootstrap-dark.min.css" rel="stylesheet" class="quarto-color-scheme quarto-color-alternate" id="quarto-bootstrap" data-mode="dark">
|
||
<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>
|
||
<script src="site_libs/quarto-diagram/mermaid.min.js"></script>
|
||
<script src="site_libs/quarto-diagram/mermaid-init.js"></script>
|
||
<link href="site_libs/quarto-diagram/mermaid.css" rel="stylesheet">
|
||
|
||
|
||
</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">1</span> <span class="chapter-title">Data Acquisition</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 sidebar-header-stacked">
|
||
<a href="./" class="sidebar-logo-link">
|
||
<img src="./logo_white.png" alt="" class="sidebar-logo py-0 d-lg-inline d-none">
|
||
</a>
|
||
<div class="sidebar-title mb-0 py-0">
|
||
<a href="./">Google Earth Engine for OSINT</a>
|
||
<div class="sidebar-tools-main tools-wide">
|
||
<a href="https://github.com/oballinger/GEE_OSINT/" title="Source Code" class="sidebar-tool px-1"><i class="bi bi-github"></i></a>
|
||
<a href="" title="Download" id="sidebar-tool-dropdown-0" class="sidebar-tool dropdown-toggle px-1" data-bs-toggle="dropdown" aria-expanded="false"><i class="bi bi-download"></i></a>
|
||
<ul class="dropdown-menu" aria-labelledby="sidebar-tool-dropdown-0">
|
||
<li>
|
||
<a class="dropdown-item sidebar-tools-main-item" href="./Google-Earth-Engine-for-OSINT.pdf">
|
||
<i class="bi bi-bi-file-pdf pe-1"></i>
|
||
Download PDF
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a class="dropdown-item sidebar-tools-main-item" href="./Google-Earth-Engine-for-OSINT.epub">
|
||
<i class="bi bi-bi-journal pe-1"></i>
|
||
Download ePub
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
<a href="" title="Share" id="sidebar-tool-dropdown-1" class="sidebar-tool dropdown-toggle px-1" data-bs-toggle="dropdown" aria-expanded="false"><i class="bi bi-share"></i></a>
|
||
<ul class="dropdown-menu" aria-labelledby="sidebar-tool-dropdown-1">
|
||
<li>
|
||
<a class="dropdown-item sidebar-tools-main-item" href="https://twitter.com/intent/tweet?url=|url|">
|
||
<i class="bi bi-bi-twitter pe-1"></i>
|
||
Twitter
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a class="dropdown-item sidebar-tools-main-item" href="https://www.facebook.com/sharer/sharer.php?u=|url|">
|
||
<i class="bi bi-bi-facebook pe-1"></i>
|
||
Facebook
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
<a href="" class="quarto-color-scheme-toggle sidebar-tool" onclick="window.quartoToggleColorScheme(); return false;" title="Toggle dark mode"><i class="bi"></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">Introduction</a>
|
||
</div>
|
||
</li>
|
||
<li class="sidebar-item">
|
||
<div class="sidebar-item-container">
|
||
<a href="./ch1.html" class="sidebar-item-text sidebar-link active"><span class="chapter-number">1</span> <span class="chapter-title">Data Acquisition</span></a>
|
||
</div>
|
||
</li>
|
||
<li class="sidebar-item">
|
||
<div class="sidebar-item-container">
|
||
<a href="./ch2.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">2</span> <span class="chapter-title">Getting Started</span></a>
|
||
</div>
|
||
</li>
|
||
<li class="sidebar-item">
|
||
<div class="sidebar-item-container">
|
||
<a href="./ch3.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">3</span> <span class="chapter-title">Algorithms</span></a>
|
||
</div>
|
||
</li>
|
||
<li class="sidebar-item">
|
||
<div class="sidebar-item-container">
|
||
<a href="./ch4.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">4</span> <span class="chapter-title">Application Development</span></a>
|
||
</div>
|
||
</li>
|
||
<li class="sidebar-item">
|
||
<div class="sidebar-item-container">
|
||
<a href="./ch5.html" class="sidebar-item-text sidebar-link"><span class="chapter-number">5</span> <span class="chapter-title">Case Studies</span></a>
|
||
</div>
|
||
</li>
|
||
<li class="sidebar-item">
|
||
<div class="sidebar-item-container">
|
||
<a href="./SyriaNTL.html" class="sidebar-item-text sidebar-link">War at Night</a>
|
||
</div>
|
||
</li>
|
||
<li class="sidebar-item">
|
||
<div class="sidebar-item-container">
|
||
<a href="./RojavaRefineries.html" class="sidebar-item-text sidebar-link">Refinery Detection</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="#optical-imagery" id="toc-optical-imagery" class="nav-link active" data-scroll-target="#optical-imagery"><span class="toc-section-number">1.1</span> Optical Imagery</a>
|
||
<ul class="collapse">
|
||
<li><a href="#applications" id="toc-applications" class="nav-link" data-scroll-target="#applications">Applications</a></li>
|
||
<li><a href="#datasets" id="toc-datasets" class="nav-link" data-scroll-target="#datasets">Datasets</a></li>
|
||
</ul></li>
|
||
<li><a href="#radar-imagery" id="toc-radar-imagery" class="nav-link" data-scroll-target="#radar-imagery"><span class="toc-section-number">1.2</span> Radar Imagery</a>
|
||
<ul class="collapse">
|
||
<li><a href="#applications-1" id="toc-applications-1" class="nav-link" data-scroll-target="#applications-1">Applications</a></li>
|
||
<li><a href="#datasets-1" id="toc-datasets-1" class="nav-link" data-scroll-target="#datasets-1">Datasets</a></li>
|
||
</ul></li>
|
||
<li><a href="#nighttime-lights" id="toc-nighttime-lights" class="nav-link" data-scroll-target="#nighttime-lights"><span class="toc-section-number">1.3</span> Nighttime Lights</a>
|
||
<ul class="collapse">
|
||
<li><a href="#applications-2" id="toc-applications-2" class="nav-link" data-scroll-target="#applications-2">Applications</a></li>
|
||
<li><a href="#datasets-2" id="toc-datasets-2" class="nav-link" data-scroll-target="#datasets-2">Datasets</a></li>
|
||
</ul></li>
|
||
<li><a href="#climate-and-atmospheric-data" id="toc-climate-and-atmospheric-data" class="nav-link" data-scroll-target="#climate-and-atmospheric-data"><span class="toc-section-number">1.4</span> Climate and Atmospheric Data</a>
|
||
<ul class="collapse">
|
||
<li><a href="#applications-3" id="toc-applications-3" class="nav-link" data-scroll-target="#applications-3">Applications</a></li>
|
||
<li><a href="#datasets-3" id="toc-datasets-3" class="nav-link" data-scroll-target="#datasets-3">Datasets</a></li>
|
||
</ul></li>
|
||
<li><a href="#mineral-deposits" id="toc-mineral-deposits" class="nav-link" data-scroll-target="#mineral-deposits"><span class="toc-section-number">1.5</span> Mineral Deposits</a>
|
||
<ul class="collapse">
|
||
<li><a href="#applications-4" id="toc-applications-4" class="nav-link" data-scroll-target="#applications-4">Applications</a></li>
|
||
<li><a href="#datasets-4" id="toc-datasets-4" class="nav-link" data-scroll-target="#datasets-4">Datasets</a></li>
|
||
</ul></li>
|
||
<li><a href="#fires" id="toc-fires" class="nav-link" data-scroll-target="#fires"><span class="toc-section-number">1.6</span> Fires</a>
|
||
<ul class="collapse">
|
||
<li><a href="#applications-5" id="toc-applications-5" class="nav-link" data-scroll-target="#applications-5">Applications</a></li>
|
||
<li><a href="#datasets-5" id="toc-datasets-5" class="nav-link" data-scroll-target="#datasets-5">Datasets</a></li>
|
||
</ul></li>
|
||
<li><a href="#population-density-estimates" id="toc-population-density-estimates" class="nav-link" data-scroll-target="#population-density-estimates"><span class="toc-section-number">1.7</span> Population Density Estimates</a>
|
||
<ul class="collapse">
|
||
<li><a href="#applications-6" id="toc-applications-6" class="nav-link" data-scroll-target="#applications-6">Applications:</a></li>
|
||
<li><a href="#datasets-6" id="toc-datasets-6" class="nav-link" data-scroll-target="#datasets-6">Datasets</a></li>
|
||
</ul></li>
|
||
<li><a href="#building-footprints" id="toc-building-footprints" class="nav-link" data-scroll-target="#building-footprints"><span class="toc-section-number">1.8</span> Building Footprints</a>
|
||
<ul class="collapse">
|
||
<li><a href="#applications-7" id="toc-applications-7" class="nav-link" data-scroll-target="#applications-7">Applications:</a></li>
|
||
<li><a href="#datasets-7" id="toc-datasets-7" class="nav-link" data-scroll-target="#datasets-7">Datasets</a></li>
|
||
</ul></li>
|
||
<li><a href="#administrative-boundaries" id="toc-administrative-boundaries" class="nav-link" data-scroll-target="#administrative-boundaries"><span class="toc-section-number">1.9</span> Administrative Boundaries</a>
|
||
<ul class="collapse">
|
||
<li><a href="#applications-8" id="toc-applications-8" class="nav-link" data-scroll-target="#applications-8">Applications</a></li>
|
||
<li><a href="#datasets-8" id="toc-datasets-8" class="nav-link" data-scroll-target="#datasets-8">Datasets</a></li>
|
||
</ul></li>
|
||
<li><a href="#global-power-plant-database" id="toc-global-power-plant-database" class="nav-link" data-scroll-target="#global-power-plant-database"><span class="toc-section-number">1.10</span> Global Power Plant Database</a>
|
||
<ul class="collapse">
|
||
<li><a href="#applications-9" id="toc-applications-9" class="nav-link" data-scroll-target="#applications-9">Applications:</a></li>
|
||
<li><a href="#datasets-9" id="toc-datasets-9" class="nav-link" data-scroll-target="#datasets-9">Datasets</a></li>
|
||
</ul></li>
|
||
</ul>
|
||
<div class="toc-actions"><div><i class="bi bi-github"></i></div><div class="action-links"><p><a href="https://github.com/oballinger/GEE_OSINT/edit/main/ch1.qmd" class="toc-action">Edit this page</a></p></div></div></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">1</span> <span class="chapter-title">Data Acquisition</span></h1>
|
||
</div>
|
||
|
||
|
||
|
||
<div class="quarto-title-meta">
|
||
|
||
|
||
|
||
</div>
|
||
|
||
|
||
</header>
|
||
|
||
<p>One of the main advantages of GEE is that it hosts several Petabytes of satellite imagery and other spatial data sets, <a href="https://developers.google.com/earth-engine/datasets">all in one place</a>. Among these are a many that could prove useful to those investigating illegal mining and logging, estimating conflict-induced damage, monitoring pollution from extractive industries, conducting maritime surveillance without relying on ship transponders, verifying the locations of artillery strikes, tracking missile defense systems, and many other topics.</p>
|
||
<p>This section highlights ten categories of geospatial data available natively in the GEE catalogue ranging from optical satellite imagery, to atmospheric data, to building footprints. Each sub-section provides an overview of the given data type, suggests potential applications, and lists the corresponding datasets in the GEE catalogue. The datasets listed under each heading are <strong>not</strong> an exhaustive list– there are over 500 in the whole catalogue, and the ones listed in this section are simply the ones with the most immediate relevance to open source investigations. If a particular geospatial dataset you want to work with isn’t hosted in the GEE catalog, you can upload your own data. We’ll cover that in the next section.</p>
|
||
<section id="optical-imagery" class="level2" data-number="1.1">
|
||
<h2 data-number="1.1" class="anchored" data-anchor-id="optical-imagery"><span class="header-section-number">1.1</span> Optical Imagery</h2>
|
||
<div class="quarto-figure quarto-figure-center">
|
||
<figure class="figure">
|
||
<p><img src="./images/hasankeyf.gif" class="img-fluid figure-img"></p>
|
||
<p></p><figcaption class="figure-caption">Sentinel-2 timelapse showing the ancient city of Hasankeyf being flooded following the construction of a dam by the Turkish government.</figcaption><p></p>
|
||
</figure>
|
||
</div>
|
||
<p>Optical satellite imagery is the bread and butter of many open source investiagtions. It would be tough to list off all of the possible use cases, so here’s a handy flowchart:</p>
|
||
<div class="cell">
|
||
<div class="cell-output-display">
|
||
<div>
|
||
<p>
|
||
</p><pre class="mermaid" data-tooltip-selector="#mermaid-tooltip-1">%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#FFFFFF' ,'primaryBorderColor':'#000000' , 'lineColor':'#009933'}}}%%
|
||
|
||
flowchart
|
||
A(Does it happen outside?)
|
||
A--> B(Yes)
|
||
A--> C(No)
|
||
D(Is it very small?)
|
||
B-->D
|
||
E(Yes)
|
||
F(No)
|
||
D-->F
|
||
D-->E
|
||
G(Use optical satellite imagery)
|
||
H(Don't use optical satellite imagery)
|
||
E-->H
|
||
F-->G
|
||
C-->H
|
||
</pre>
|
||
<div id="mermaid-tooltip-1" class="mermaidTooltip">
|
||
|
||
</div>
|
||
<p></p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>This is, of course, a bit of an exaggeration. But if you’re interested in a visible phenomenon that happens outdoors and that isn’t very tiny, chances are an earth-observing satellite has taken a picture of it. What that picture can tell you naturally depends on what you’re interested in learning.</p>
|
||
<p>For a deeper dive into analyzing optical satellite imagery, see the subsection on <a href="./ch3.html#multispectral-remote-sensing-remote_sensing">multispectral remote sensing.</a>.</p>
|
||
<section id="applications" class="level3 unnumbered">
|
||
<h3 class="unnumbered anchored" data-anchor-id="applications">Applications</h3>
|
||
<ul>
|
||
<li>Geolocating pictures</li>
|
||
<li>General surveillance</li>
|
||
<li>Change/Damage detection</li>
|
||
<li>Verifying the locations of artillery strikes</li>
|
||
<li>Monitoring illegal mining/logging</li>
|
||
</ul>
|
||
</section>
|
||
<section id="datasets" class="level3 unnumbered">
|
||
<h3 class="unnumbered anchored" data-anchor-id="datasets">Datasets</h3>
|
||
<table class="table">
|
||
<thead>
|
||
<tr class="header">
|
||
<th>Sensor</th>
|
||
<th>Timeframe</th>
|
||
<th>Resolution</th>
|
||
<th>Coverage</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr class="odd">
|
||
<td><a href="https://developers.google.com/earth-engine/datasets/catalog/landsat-mss">Landsat 1-5</a></td>
|
||
<td>1972–1999</td>
|
||
<td>30m</td>
|
||
<td>Global</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td><a href="https://developers.google.com/earth-engine/datasets/catalog/LANDSAT_LE07_C02_T1_L2">Landsat 7</a></td>
|
||
<td>1999–2021</td>
|
||
<td>30m</td>
|
||
<td>Global</td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td><a href="https://developers.google.com/earth-engine/datasets/catalog/LANDSAT_LC08_C02_T1_L2">Landsat 8</a></td>
|
||
<td>2013–Present</td>
|
||
<td>30m</td>
|
||
<td>Global</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td><a href="https://developers.google.com/earth-engine/datasets/catalog/LANDSAT_LC09_C02_T1_L2">Landsat 9</a></td>
|
||
<td>2021–Present</td>
|
||
<td>30m</td>
|
||
<td>Global</td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td><a href="https://developers.google.com/earth-engine/datasets/catalog/COPERNICUS_S2_SR_HARMONIZED">Sentinel-2</a></td>
|
||
<td>2015–Present</td>
|
||
<td>10m</td>
|
||
<td>Global</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td><a href="https://developers.google.com/earth-engine/datasets/tags/nicfi">NICFI</a></td>
|
||
<td>2015-Present</td>
|
||
<td>4.7m</td>
|
||
<td>Tropics</td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td><a href="https://developers.google.com/earth-engine/datasets/catalog/USDA_NAIP_DOQQ">NAIP</a></td>
|
||
<td>2002-2021</td>
|
||
<td>0.6m</td>
|
||
<td>USA</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</section>
|
||
</section>
|
||
<section id="radar-imagery" class="level2" data-number="1.2">
|
||
<h2 data-number="1.2" class="anchored" data-anchor-id="radar-imagery"><span class="header-section-number">1.2</span> Radar Imagery</h2>
|
||
<div class="quarto-figure quarto-figure-center">
|
||
<figure class="figure">
|
||
<p><img src="./images/radar%20ships.jpg" class="img-fluid figure-img"></p>
|
||
<p></p><figcaption class="figure-caption">Ships and interference from a radar system are visible in Zhuanghe Wan, near North Korea.</figcaption><p></p>
|
||
</figure>
|
||
</div>
|
||
<section id="applications-1" class="level3 unnumbered">
|
||
<h3 class="unnumbered anchored" data-anchor-id="applications-1">Applications</h3>
|
||
<ul>
|
||
<li>Change/Damage detection</li>
|
||
<li>Tracking military radar systems</li>
|
||
<li>Maritime surveillance</li>
|
||
<li>Monitoring illegal mining/logging</li>
|
||
</ul>
|
||
</section>
|
||
<section id="datasets-1" class="level3 unnumbered">
|
||
<h3 class="unnumbered anchored" data-anchor-id="datasets-1">Datasets</h3>
|
||
<table class="table">
|
||
<thead>
|
||
<tr class="header">
|
||
<th>Sensor</th>
|
||
<th>Timeframe</th>
|
||
<th>Resolution</th>
|
||
<th>Coverage</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr class="odd">
|
||
<td><a href="https://developers.google.com/earth-engine/datasets/catalog/COPERNICUS_S1_GRD">Sentinel 1</a></td>
|
||
<td>2014-Present</td>
|
||
<td>10m</td>
|
||
<td>Global</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</section>
|
||
</section>
|
||
<section id="nighttime-lights" class="level2" data-number="1.3">
|
||
<h2 data-number="1.3" class="anchored" data-anchor-id="nighttime-lights"><span class="header-section-number">1.3</span> Nighttime Lights</h2>
|
||
<div class="quarto-figure quarto-figure-center">
|
||
<figure class="figure">
|
||
<p><img src="./images/Figure_1.gif" class="img-fluid figure-img"></p>
|
||
<p></p><figcaption class="figure-caption">A timelapse of nighttime lights over Northern Iraq showing the capture and liberation of Mosul by ISIS.</figcaption><p></p>
|
||
</figure>
|
||
</div>
|
||
<section id="applications-2" class="level3 unnumbered">
|
||
<h3 class="unnumbered anchored" data-anchor-id="applications-2">Applications</h3>
|
||
<ul>
|
||
<li>Damage detection</li>
|
||
<li>Identifying gas flaring/oil production</li>
|
||
<li>Identifying urban areas/military bases illuminated at night</li>
|
||
</ul>
|
||
</section>
|
||
<section id="datasets-2" class="level3 unnumbered">
|
||
<h3 class="unnumbered anchored" data-anchor-id="datasets-2">Datasets</h3>
|
||
<table class="table">
|
||
<thead>
|
||
<tr class="header">
|
||
<th>Sensor</th>
|
||
<th>Timeframe</th>
|
||
<th>Resolution</th>
|
||
<th>Coverage</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr class="odd">
|
||
<td><a href="https://developers.google.com/earth-engine/datasets/catalog/NOAA_DMSP-OLS_NIGHTTIME_LIGHTS">DMSP-OLS</a></td>
|
||
<td>1992-2014</td>
|
||
<td>927m</td>
|
||
<td>Global</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td><a href="https://developers.google.com/earth-engine/datasets/catalog/NOAA_VIIRS_DNB_MONTHLY_V1_VCMSLCFG">VIIRS</a></td>
|
||
<td>2014-Present</td>
|
||
<td>463m</td>
|
||
<td>Global</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</section>
|
||
</section>
|
||
<section id="climate-and-atmospheric-data" class="level2" data-number="1.4">
|
||
<h2 data-number="1.4" class="anchored" data-anchor-id="climate-and-atmospheric-data"><span class="header-section-number">1.4</span> Climate and Atmospheric Data</h2>
|
||
<div class="quarto-figure quarto-figure-center">
|
||
<figure class="figure">
|
||
<p><img src="./images/mishraq_small.gif" class="img-fluid figure-img"></p>
|
||
<p></p><figcaption class="figure-caption">Sulphur Dioxide plume resulting from ISIS attack on the Al-Mishraq Sulphur Plant in Iraq</figcaption><p></p>
|
||
</figure>
|
||
</div>
|
||
<section id="applications-3" class="level3 unnumbered">
|
||
<h3 class="unnumbered anchored" data-anchor-id="applications-3">Applications</h3>
|
||
<ul>
|
||
<li>Monitoring of airborne pollution</li>
|
||
<li>Tracing pollution back to specific facilities and companies</li>
|
||
<li>Visualizing the effects of one-off environmental catastrophes
|
||
<ul>
|
||
<li>Nordstream 1 leak</li>
|
||
<li>ISIS setting Mishraq sulphur plant on fire</li>
|
||
</ul></li>
|
||
</ul>
|
||
</section>
|
||
<section id="datasets-3" class="level3 unnumbered">
|
||
<h3 class="unnumbered anchored" data-anchor-id="datasets-3">Datasets</h3>
|
||
<table class="table">
|
||
<thead>
|
||
<tr class="header">
|
||
<th>Sensor</th>
|
||
<th>Timeframe</th>
|
||
<th>Resolution</th>
|
||
<th>Coverage</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr class="odd">
|
||
<td><a href="https://developers.google.com/earth-engine/datasets/catalog/ECMWF_CAMS_NRT">CAMS NRT</a></td>
|
||
<td>2016-Present</td>
|
||
<td>44528m</td>
|
||
<td>Global</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td><a href="https://developers.google.com/earth-engine/datasets/catalog/sentinel-5p">Sentinel-5p</a></td>
|
||
<td>2018-Present</td>
|
||
<td>1113m</td>
|
||
<td>Global</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</section>
|
||
</section>
|
||
<section id="mineral-deposits" class="level2" data-number="1.5">
|
||
<h2 data-number="1.5" class="anchored" data-anchor-id="mineral-deposits"><span class="header-section-number">1.5</span> Mineral Deposits</h2>
|
||
<div class="quarto-figure quarto-figure-center">
|
||
<figure class="figure">
|
||
<p><img src="./images/mining.jpg" class="img-fluid figure-img"></p>
|
||
<p></p><figcaption class="figure-caption">Zinc deposits across Central Africa</figcaption><p></p>
|
||
</figure>
|
||
</div>
|
||
<section id="applications-4" class="level3 unnumbered">
|
||
<h3 class="unnumbered anchored" data-anchor-id="applications-4">Applications</h3>
|
||
<ul>
|
||
<li>Monitoring mining activity</li>
|
||
<li>Mapping the distribution of resources in rebel held areas in conflicts fueled by resource extraction</li>
|
||
</ul>
|
||
</section>
|
||
<section id="datasets-4" class="level3 unnumbered">
|
||
<h3 class="unnumbered anchored" data-anchor-id="datasets-4">Datasets</h3>
|
||
<table class="table">
|
||
<thead>
|
||
<tr class="header">
|
||
<th>Sensor</th>
|
||
<th>Timeframe</th>
|
||
<th>Resolution</th>
|
||
<th>Coverage</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr class="odd">
|
||
<td><a href="https://developers.google.com/earth-engine/datasets/tags/isda">iSDA</a></td>
|
||
<td>2001-2017</td>
|
||
<td>30m</td>
|
||
<td>Africa</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</section>
|
||
</section>
|
||
<section id="fires" class="level2" data-number="1.6">
|
||
<h2 data-number="1.6" class="anchored" data-anchor-id="fires"><span class="header-section-number">1.6</span> Fires</h2>
|
||
<div class="quarto-figure quarto-figure-center">
|
||
<figure class="figure">
|
||
<p><img src="./images/fires.jpg" class="img-fluid figure-img"></p>
|
||
<p></p><figcaption class="figure-caption">Detected fires over Ukraine since 27/02/2022 showing the frontline of the war</figcaption><p></p>
|
||
</figure>
|
||
</div>
|
||
<p>Earth-observing satellites can detect “thermal anomalies” (fires) from space. NASA’s Fire Information for Resource Management System (FIRMS) provides daily data on active fires in near real time, going back to the year 2000. Carlos Gonzales wrote a comprehensive <a href="https://www.bellingcat.com/resources/2022/10/04/scorched-earth-using-nasa-fire-data-to-monitor-war-zones/">Bellingcat article</a> on the use of FIRMS to monitor war zones from Ukraine to Ethiopia. The map above shows that FIRMS detected fires over Eastern Ukraine trace the frontline of the war.</p>
|
||
<p>FIRMS data are derived from the MODIS satellite, but only show the central location and intensity of a detected fire. Another MODIS product (linked in the table below) generates a monthly map of burned areas, which can be used to assess the spatial extent of fires.</p>
|
||
<section id="applications-5" class="level3 unnumbered">
|
||
<h3 class="unnumbered anchored" data-anchor-id="applications-5">Applications</h3>
|
||
<ul>
|
||
<li>Identification of possible artillery strikes/fighting in places like Ukraine</li>
|
||
<li>Environmental warfare and “scorched earth” policies</li>
|
||
<li>Large scale arson
|
||
<ul>
|
||
<li>e.g. <a href="https://citizenevidence.org/2021/02/26/using-viirs-fire-data-for-human-rights-research/">Refugee camps burned down in Myanmar</a></li>
|
||
</ul></li>
|
||
</ul>
|
||
</section>
|
||
<section id="datasets-5" class="level3 unnumbered">
|
||
<h3 class="unnumbered anchored" data-anchor-id="datasets-5">Datasets</h3>
|
||
<table class="table">
|
||
<thead>
|
||
<tr class="header">
|
||
<th>Sensor</th>
|
||
<th>Timeframe</th>
|
||
<th>Resolution</th>
|
||
<th>Coverage</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr class="odd">
|
||
<td><a href="https://developers.google.com/earth-engine/datasets/catalog/FIRMS">FIRMS</a></td>
|
||
<td>2000-Present</td>
|
||
<td>1000m</td>
|
||
<td>Global</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td><a href="https://developers.google.com/earth-engine/datasets/catalog/CIESIN_GPWv411_GPW_Population_Count">MODIS Burned Area</a></td>
|
||
<td>2000-Present</td>
|
||
<td>500m</td>
|
||
<td>Global</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</section>
|
||
</section>
|
||
<section id="population-density-estimates" class="level2" data-number="1.7">
|
||
<h2 data-number="1.7" class="anchored" data-anchor-id="population-density-estimates"><span class="header-section-number">1.7</span> Population Density Estimates</h2>
|
||
<div class="quarto-figure quarto-figure-center">
|
||
<figure class="figure">
|
||
<p><img src="./images/pop.jpg" class="img-fluid figure-img"></p>
|
||
<p></p><figcaption class="figure-caption">Population density estimates around Pyongyang, North Korea</figcaption><p></p>
|
||
</figure>
|
||
</div>
|
||
<p>Sometimes, we may want to get an estimate the population in a specific area to ballpark how many people might be affected by a natural disaster, a counteroffensive, or a missile strike. You can’t really google “what is the population in this rectangle i’ve drawn in Northeastern Syria?” and get a good answer. Luckily, there are several spatial population datasets hosted in GEE that let you do just that. Some, such as WorldPop, provide estimated breakdowns by age and sex as well. However, it is extremely important to bear in mind that these are <strong>estimates</strong>, and will <strong>not</strong> take into account things like conflict-induced displacement. For example, Oak Ridge National Laboratory’s LandScan program has released high-resolution population data for Ukraine, but this pertains to the pre-war population distribution. The war has radically changed this distribution, so these estimates no longer reflect where people <em>are</em>. Still, this dataset could be used to roughly estimate displacement or the number of people who will need new housing.</p>
|
||
<section id="applications-6" class="level3 unnumbered">
|
||
<h3 class="unnumbered anchored" data-anchor-id="applications-6">Applications:</h3>
|
||
<ul>
|
||
<li>Rough estimates of civilians at risk from conflict or disaster, provided at a high spatial resolution</li>
|
||
</ul>
|
||
</section>
|
||
<section id="datasets-6" class="level3 unnumbered">
|
||
<h3 class="unnumbered anchored" data-anchor-id="datasets-6">Datasets</h3>
|
||
<table class="table">
|
||
<thead>
|
||
<tr class="header">
|
||
<th>Sensor</th>
|
||
<th>Timeframe</th>
|
||
<th>Resolution</th>
|
||
<th>Coverage</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr class="odd">
|
||
<td><a href="https://developers.google.com/earth-engine/datasets/tags/worldpop">Worldpop</a></td>
|
||
<td>2000-2021</td>
|
||
<td>92m</td>
|
||
<td>Global</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td><a href="https://developers.google.com/earth-engine/datasets/catalog/CIESIN_GPWv411_GPW_Population_Count">GPW</a></td>
|
||
<td>2000-2021</td>
|
||
<td>927m</td>
|
||
<td>Global</td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td><a href="https://developers.google.com/earth-engine/datasets/catalog/DOE_ORNL_LandScan_HD_Ukraine_202201">LandScan</a></td>
|
||
<td>2013–Present</td>
|
||
<td>100m</td>
|
||
<td>Ukraine</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</section>
|
||
</section>
|
||
<section id="building-footprints" class="level2" data-number="1.8">
|
||
<h2 data-number="1.8" class="anchored" data-anchor-id="building-footprints"><span class="header-section-number">1.8</span> Building Footprints</h2>
|
||
<div class="quarto-figure quarto-figure-center">
|
||
<figure class="figure">
|
||
<p><img src="./images/footprints.png" class="img-fluid figure-img"></p>
|
||
<p></p><figcaption class="figure-caption">Building footprints in Mariupol, Ukraine colored by whether the building is damaged</figcaption><p></p>
|
||
</figure>
|
||
</div>
|
||
<p>A building footprint dataset contains the two dimensional outlines of buildings in a given area. Currently, GEE hosts one building footprint dataset which covers all of Africa. In 2022, Microsoft released a free <a href="https://www.microsoft.com/en-us/maps/building-footprints">global building footprint dataset</a>, though to use it in Earth Engine you’ll have to download it from their <a href="https://github.com/Microsoft/USBuildingFootprints">GitHub page</a> and upload it manually to GEE. The same goes for OpenStreetMap (OSM), a public database of building footprints, roads, and other features that also contains useful annotations for many buildings indicating their use. <a href="https://www.youtube.com/watch?v=bJkV3l5Haq0">Benjamin Strick</a> has a great youtube video on conducting investigations using OSM data.</p>
|
||
<section id="applications-7" class="level3 unnumbered">
|
||
<h3 class="unnumbered anchored" data-anchor-id="applications-7">Applications:</h3>
|
||
<ul>
|
||
<li>Joining damage estimate data with the number of buildings in an area</li>
|
||
</ul>
|
||
</section>
|
||
<section id="datasets-7" class="level3 unnumbered">
|
||
<h3 class="unnumbered anchored" data-anchor-id="datasets-7">Datasets</h3>
|
||
<table class="table">
|
||
<thead>
|
||
<tr class="header">
|
||
<th>Dataset</th>
|
||
<th>Timeframe</th>
|
||
<th>Coverage</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr class="odd">
|
||
<td><a href="https://developers.google.com/earth-engine/datasets/catalog/GOOGLE_Research_open-buildings_v2_polygons">Open Buildings</a></td>
|
||
<td>2022</td>
|
||
<td>Africa</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</section>
|
||
</section>
|
||
<section id="administrative-boundaries" class="level2" data-number="1.9">
|
||
<h2 data-number="1.9" class="anchored" data-anchor-id="administrative-boundaries"><span class="header-section-number">1.9</span> Administrative Boundaries</h2>
|
||
<div class="quarto-figure quarto-figure-center">
|
||
<figure class="figure">
|
||
<p><img src="./images/fao_gaul.jpg" class="img-fluid figure-img"></p>
|
||
<p></p><figcaption class="figure-caption">Second-level administrative boundaries in Yemen</figcaption><p></p>
|
||
</figure>
|
||
</div>
|
||
<p>Spatial analysis often have to aggregate information over a defined area; we may want to assess the total burned area by province in Ukraine, or count the number of Saudi airstrikes by district in Yemen. For that, we need data on these administrative boundaries. GEE hosts several such datasets at the country, province, and district (or equivalent) level.</p>
|
||
<section id="applications-8" class="level3 unnumbered">
|
||
<h3 class="unnumbered anchored" data-anchor-id="applications-8">Applications</h3>
|
||
<ul>
|
||
<li>Quick spatial calculations for different provinces/districts in a country
|
||
<ul>
|
||
<li>e.g. counts of conflict events by district over time</li>
|
||
</ul></li>
|
||
</ul>
|
||
</section>
|
||
<section id="datasets-8" class="level3 unnumbered">
|
||
<h3 class="unnumbered anchored" data-anchor-id="datasets-8">Datasets</h3>
|
||
<table class="table">
|
||
<thead>
|
||
<tr class="header">
|
||
<th>Dataset</th>
|
||
<th>Timeframe</th>
|
||
<th>Coverage</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr class="odd">
|
||
<td><a href="https://developers.google.com/earth-engine/datasets/tags/gaul">FAO GAUL</a></td>
|
||
<td>2015</td>
|
||
<td>Global</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</section>
|
||
</section>
|
||
<section id="global-power-plant-database" class="level2" data-number="1.10">
|
||
<h2 data-number="1.10" class="anchored" data-anchor-id="global-power-plant-database"><span class="header-section-number">1.10</span> Global Power Plant Database</h2>
|
||
<div class="quarto-figure quarto-figure-center">
|
||
<figure class="figure">
|
||
<p><img src="./images/power.jpg" class="img-fluid figure-img"></p>
|
||
<p></p><figcaption class="figure-caption">Power plants in Ukraine colored by type</figcaption><p></p>
|
||
</figure>
|
||
</div>
|
||
<p>The Global Power Plant Database is a comprehensive, open source database of power plants around the world. It centralizes power plant data to make it easier to navigate, compare and draw insights. Each power plant is geolocated and entries contain information on plant capacity, generation, ownership, and fuel type. As of June 2018, the database includes around 28,500 power plants from 164 countries. The database is curated by the <a href="https://datasets.wri.org/dataset/globalpowerplantdatabase">World Resources Institude (WRI)</a>.</p>
|
||
<section id="applications-9" class="level3 unnumbered">
|
||
<h3 class="unnumbered anchored" data-anchor-id="applications-9">Applications:</h3>
|
||
<ul>
|
||
<li>Analyzing the impact of conflict on critical infrastructure.
|
||
<ul>
|
||
<li>e.g. fighting in Ukraine taking place around nuclear power facilities.</li>
|
||
</ul></li>
|
||
<li>Could be combined with the atmospheric measurements of different pollutants and the population estimates data to assess the impact of various forms of energy generation on air quality and public health.</li>
|
||
</ul>
|
||
</section>
|
||
<section id="datasets-9" class="level3 unnumbered">
|
||
<h3 class="unnumbered anchored" data-anchor-id="datasets-9">Datasets</h3>
|
||
<table class="table">
|
||
<thead>
|
||
<tr class="header">
|
||
<th>Dataset</th>
|
||
<th>Timeframe</th>
|
||
<th>Coverage</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr class="odd">
|
||
<td><a href="https://developers.google.com/earth-engine/datasets/catalog/WRI_GPPD_power_plants">GPPD</a></td>
|
||
<td>2018</td>
|
||
<td>Global</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
|
||
|
||
</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 disableStylesheet = (stylesheets) => {
|
||
for (let i=0; i < stylesheets.length; i++) {
|
||
const stylesheet = stylesheets[i];
|
||
stylesheet.rel = 'prefetch';
|
||
}
|
||
}
|
||
const enableStylesheet = (stylesheets) => {
|
||
for (let i=0; i < stylesheets.length; i++) {
|
||
const stylesheet = stylesheets[i];
|
||
stylesheet.rel = 'stylesheet';
|
||
}
|
||
}
|
||
const manageTransitions = (selector, allowTransitions) => {
|
||
const els = window.document.querySelectorAll(selector);
|
||
for (let i=0; i < els.length; i++) {
|
||
const el = els[i];
|
||
if (allowTransitions) {
|
||
el.classList.remove('notransition');
|
||
} else {
|
||
el.classList.add('notransition');
|
||
}
|
||
}
|
||
}
|
||
const toggleColorMode = (alternate) => {
|
||
// Switch the stylesheets
|
||
const alternateStylesheets = window.document.querySelectorAll('link.quarto-color-scheme.quarto-color-alternate');
|
||
manageTransitions('#quarto-margin-sidebar .nav-link', false);
|
||
if (alternate) {
|
||
enableStylesheet(alternateStylesheets);
|
||
for (const sheetNode of alternateStylesheets) {
|
||
if (sheetNode.id === "quarto-bootstrap") {
|
||
toggleBodyColorMode(sheetNode);
|
||
}
|
||
}
|
||
} else {
|
||
disableStylesheet(alternateStylesheets);
|
||
toggleBodyColorPrimary();
|
||
}
|
||
manageTransitions('#quarto-margin-sidebar .nav-link', true);
|
||
// Switch the toggles
|
||
const toggles = window.document.querySelectorAll('.quarto-color-scheme-toggle');
|
||
for (let i=0; i < toggles.length; i++) {
|
||
const toggle = toggles[i];
|
||
if (toggle) {
|
||
if (alternate) {
|
||
toggle.classList.add("alternate");
|
||
} else {
|
||
toggle.classList.remove("alternate");
|
||
}
|
||
}
|
||
}
|
||
// Hack to workaround the fact that safari doesn't
|
||
// properly recolor the scrollbar when toggling (#1455)
|
||
if (navigator.userAgent.indexOf('Safari') > 0 && navigator.userAgent.indexOf('Chrome') == -1) {
|
||
manageTransitions("body", false);
|
||
window.scrollTo(0, 1);
|
||
setTimeout(() => {
|
||
window.scrollTo(0, 0);
|
||
manageTransitions("body", true);
|
||
}, 40);
|
||
}
|
||
}
|
||
const isFileUrl = () => {
|
||
return window.location.protocol === 'file:';
|
||
}
|
||
const hasAlternateSentinel = () => {
|
||
let styleSentinel = getColorSchemeSentinel();
|
||
if (styleSentinel !== null) {
|
||
return styleSentinel === "alternate";
|
||
} else {
|
||
return false;
|
||
}
|
||
}
|
||
const setStyleSentinel = (alternate) => {
|
||
const value = alternate ? "alternate" : "default";
|
||
if (!isFileUrl()) {
|
||
window.localStorage.setItem("quarto-color-scheme", value);
|
||
} else {
|
||
localAlternateSentinel = value;
|
||
}
|
||
}
|
||
const getColorSchemeSentinel = () => {
|
||
if (!isFileUrl()) {
|
||
const storageValue = window.localStorage.getItem("quarto-color-scheme");
|
||
return storageValue != null ? storageValue : localAlternateSentinel;
|
||
} else {
|
||
return localAlternateSentinel;
|
||
}
|
||
}
|
||
let localAlternateSentinel = 'alternate';
|
||
// Dark / light mode switch
|
||
window.quartoToggleColorScheme = () => {
|
||
// Read the current dark / light value
|
||
let toAlternate = !hasAlternateSentinel();
|
||
toggleColorMode(toAlternate);
|
||
setStyleSentinel(toAlternate);
|
||
};
|
||
// Ensure there is a toggle, if there isn't float one in the top right
|
||
if (window.document.querySelector('.quarto-color-scheme-toggle') === null) {
|
||
const a = window.document.createElement('a');
|
||
a.classList.add('top-right');
|
||
a.classList.add('quarto-color-scheme-toggle');
|
||
a.href = "";
|
||
a.onclick = function() { try { window.quartoToggleColorScheme(); } catch {} return false; };
|
||
const i = window.document.createElement("i");
|
||
i.classList.add('bi');
|
||
a.appendChild(i);
|
||
window.document.body.appendChild(a);
|
||
}
|
||
// Switch to dark mode if need be
|
||
if (hasAlternateSentinel()) {
|
||
toggleColorMode(true);
|
||
}
|
||
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;
|
||
});
|
||
}
|
||
});
|
||
</script>
|
||
<nav class="page-navigation">
|
||
<div class="nav-page nav-page-previous">
|
||
<a href="./index.html" class="pagination-link">
|
||
<i class="bi bi-arrow-left-short"></i> <span class="nav-page-text">Introduction</span>
|
||
</a>
|
||
</div>
|
||
<div class="nav-page nav-page-next">
|
||
<a href="./ch2.html" class="pagination-link">
|
||
<span class="nav-page-text"><span class="chapter-number">2</span> <span class="chapter-title">Getting Started</span></span> <i class="bi bi-arrow-right-short"></i>
|
||
</a>
|
||
</div>
|
||
</nav>
|
||
</div> <!-- /content -->
|
||
|
||
|
||
|
||
</body></html> |