|
|
|
|
<!DOCTYPE html>
|
|
|
|
|
|
|
|
|
|
<html>
|
|
|
|
|
|
|
|
|
|
<head>
|
|
|
|
|
|
|
|
|
|
<meta charset="utf-8" />
|
|
|
|
|
<meta name="generator" content="pandoc" />
|
|
|
|
|
<meta http-equiv="X-UA-Compatible" content="IE=EDGE" />
|
|
|
|
|
|
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
|
|
|
|
|
|
|
|
<meta name="author" content="Norwin Roosen" />
|
|
|
|
|
|
|
|
|
|
<meta name="date" content="2023-02-23" />
|
|
|
|
|
|
|
|
|
|
<title>Exploring the openSenseMap Dataset</title>
|
|
|
|
|
|
|
|
|
|
<script>// Pandoc 2.9 adds attributes on both header and div. We remove the former (to
|
|
|
|
|
// be compatible with the behavior of Pandoc < 2.8).
|
|
|
|
|
document.addEventListener('DOMContentLoaded', function(e) {
|
|
|
|
|
var hs = document.querySelectorAll("div.section[class*='level'] > :first-child");
|
|
|
|
|
var i, h, a;
|
|
|
|
|
for (i = 0; i < hs.length; i++) {
|
|
|
|
|
h = hs[i];
|
|
|
|
|
if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6
|
|
|
|
|
a = h.attributes;
|
|
|
|
|
while (a.length > 0) h.removeAttribute(a[0].name);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style type="text/css">
|
|
|
|
|
code{white-space: pre-wrap;}
|
|
|
|
|
span.smallcaps{font-variant: small-caps;}
|
|
|
|
|
span.underline{text-decoration: underline;}
|
|
|
|
|
div.column{display: inline-block; vertical-align: top; width: 50%;}
|
|
|
|
|
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
|
|
|
|
|
ul.task-list{list-style: none;}
|
|
|
|
|
</style>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<style type="text/css">
|
|
|
|
|
code {
|
|
|
|
|
white-space: pre;
|
|
|
|
|
}
|
|
|
|
|
.sourceCode {
|
|
|
|
|
overflow: visible;
|
|
|
|
|
}
|
|
|
|
|
</style>
|
|
|
|
|
<style type="text/css" data-origin="pandoc">
|
|
|
|
|
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; }
|
|
|
|
|
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; }
|
|
|
|
|
code span.at { color: #7d9029; }
|
|
|
|
|
code span.bn { color: #40a070; }
|
|
|
|
|
code span.bu { color: #008000; }
|
|
|
|
|
code span.cf { color: #007020; font-weight: bold; }
|
|
|
|
|
code span.ch { color: #4070a0; }
|
|
|
|
|
code span.cn { color: #880000; }
|
|
|
|
|
code span.co { color: #60a0b0; font-style: italic; }
|
|
|
|
|
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; }
|
|
|
|
|
code span.do { color: #ba2121; font-style: italic; }
|
|
|
|
|
code span.dt { color: #902000; }
|
|
|
|
|
code span.dv { color: #40a070; }
|
|
|
|
|
code span.er { color: #ff0000; font-weight: bold; }
|
|
|
|
|
code span.ex { }
|
|
|
|
|
code span.fl { color: #40a070; }
|
|
|
|
|
code span.fu { color: #06287e; }
|
|
|
|
|
code span.im { color: #008000; font-weight: bold; }
|
|
|
|
|
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; }
|
|
|
|
|
code span.kw { color: #007020; font-weight: bold; }
|
|
|
|
|
code span.op { color: #666666; }
|
|
|
|
|
code span.ot { color: #007020; }
|
|
|
|
|
code span.pp { color: #bc7a00; }
|
|
|
|
|
code span.sc { color: #4070a0; }
|
|
|
|
|
code span.ss { color: #bb6688; }
|
|
|
|
|
code span.st { color: #4070a0; }
|
|
|
|
|
code span.va { color: #19177c; }
|
|
|
|
|
code span.vs { color: #4070a0; }
|
|
|
|
|
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; }
|
|
|
|
|
</style>
|
|
|
|
|
<script>
|
|
|
|
|
// apply pandoc div.sourceCode style to pre.sourceCode instead
|
|
|
|
|
(function() {
|
|
|
|
|
var sheets = document.styleSheets;
|
|
|
|
|
for (var i = 0; i < sheets.length; i++) {
|
|
|
|
|
if (sheets[i].ownerNode.dataset["origin"] !== "pandoc") continue;
|
|
|
|
|
try { var rules = sheets[i].cssRules; } catch (e) { continue; }
|
|
|
|
|
var j = 0;
|
|
|
|
|
while (j < rules.length) {
|
|
|
|
|
var rule = rules[j];
|
|
|
|
|
// check if there is a div.sourceCode rule
|
|
|
|
|
if (rule.type !== rule.STYLE_RULE || rule.selectorText !== "div.sourceCode") {
|
|
|
|
|
j++;
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
var style = rule.style.cssText;
|
|
|
|
|
// check if color or background-color is set
|
|
|
|
|
if (rule.style.color === '' && rule.style.backgroundColor === '') {
|
|
|
|
|
j++;
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
// replace div.sourceCode by a pre.sourceCode rule
|
|
|
|
|
sheets[i].deleteRule(j);
|
|
|
|
|
sheets[i].insertRule('pre.sourceCode{' + style + '}', j);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
})();
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<style type="text/css">body {
|
|
|
|
|
background-color: #fff;
|
|
|
|
|
margin: 1em auto;
|
|
|
|
|
max-width: 700px;
|
|
|
|
|
overflow: visible;
|
|
|
|
|
padding-left: 2em;
|
|
|
|
|
padding-right: 2em;
|
|
|
|
|
font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
|
|
|
font-size: 14px;
|
|
|
|
|
line-height: 1.35;
|
|
|
|
|
}
|
|
|
|
|
#TOC {
|
|
|
|
|
clear: both;
|
|
|
|
|
margin: 0 0 10px 10px;
|
|
|
|
|
padding: 4px;
|
|
|
|
|
width: 400px;
|
|
|
|
|
border: 1px solid #CCCCCC;
|
|
|
|
|
border-radius: 5px;
|
|
|
|
|
background-color: #f6f6f6;
|
|
|
|
|
font-size: 13px;
|
|
|
|
|
line-height: 1.3;
|
|
|
|
|
}
|
|
|
|
|
#TOC .toctitle {
|
|
|
|
|
font-weight: bold;
|
|
|
|
|
font-size: 15px;
|
|
|
|
|
margin-left: 5px;
|
|
|
|
|
}
|
|
|
|
|
#TOC ul {
|
|
|
|
|
padding-left: 40px;
|
|
|
|
|
margin-left: -1.5em;
|
|
|
|
|
margin-top: 5px;
|
|
|
|
|
margin-bottom: 5px;
|
|
|
|
|
}
|
|
|
|
|
#TOC ul ul {
|
|
|
|
|
margin-left: -2em;
|
|
|
|
|
}
|
|
|
|
|
#TOC li {
|
|
|
|
|
line-height: 16px;
|
|
|
|
|
}
|
|
|
|
|
table {
|
|
|
|
|
margin: 1em auto;
|
|
|
|
|
border-width: 1px;
|
|
|
|
|
border-color: #DDDDDD;
|
|
|
|
|
border-style: outset;
|
|
|
|
|
border-collapse: collapse;
|
|
|
|
|
}
|
|
|
|
|
table th {
|
|
|
|
|
border-width: 2px;
|
|
|
|
|
padding: 5px;
|
|
|
|
|
border-style: inset;
|
|
|
|
|
}
|
|
|
|
|
table td {
|
|
|
|
|
border-width: 1px;
|
|
|
|
|
border-style: inset;
|
|
|
|
|
line-height: 18px;
|
|
|
|
|
padding: 5px 5px;
|
|
|
|
|
}
|
|
|
|
|
table, table th, table td {
|
|
|
|
|
border-left-style: none;
|
|
|
|
|
border-right-style: none;
|
|
|
|
|
}
|
|
|
|
|
table thead, table tr.even {
|
|
|
|
|
background-color: #f7f7f7;
|
|
|
|
|
}
|
|
|
|
|
p {
|
|
|
|
|
margin: 0.5em 0;
|
|
|
|
|
}
|
|
|
|
|
blockquote {
|
|
|
|
|
background-color: #f6f6f6;
|
|
|
|
|
padding: 0.25em 0.75em;
|
|
|
|
|
}
|
|
|
|
|
hr {
|
|
|
|
|
border-style: solid;
|
|
|
|
|
border: none;
|
|
|
|
|
border-top: 1px solid #777;
|
|
|
|
|
margin: 28px 0;
|
|
|
|
|
}
|
|
|
|
|
dl {
|
|
|
|
|
margin-left: 0;
|
|
|
|
|
}
|
|
|
|
|
dl dd {
|
|
|
|
|
margin-bottom: 13px;
|
|
|
|
|
margin-left: 13px;
|
|
|
|
|
}
|
|
|
|
|
dl dt {
|
|
|
|
|
font-weight: bold;
|
|
|
|
|
}
|
|
|
|
|
ul {
|
|
|
|
|
margin-top: 0;
|
|
|
|
|
}
|
|
|
|
|
ul li {
|
|
|
|
|
list-style: circle outside;
|
|
|
|
|
}
|
|
|
|
|
ul ul {
|
|
|
|
|
margin-bottom: 0;
|
|
|
|
|
}
|
|
|
|
|
pre, code {
|
|
|
|
|
background-color: #f7f7f7;
|
|
|
|
|
border-radius: 3px;
|
|
|
|
|
color: #333;
|
|
|
|
|
white-space: pre-wrap;
|
|
|
|
|
}
|
|
|
|
|
pre {
|
|
|
|
|
border-radius: 3px;
|
|
|
|
|
margin: 5px 0px 10px 0px;
|
|
|
|
|
padding: 10px;
|
|
|
|
|
}
|
|
|
|
|
pre:not([class]) {
|
|
|
|
|
background-color: #f7f7f7;
|
|
|
|
|
}
|
|
|
|
|
code {
|
|
|
|
|
font-family: Consolas, Monaco, 'Courier New', monospace;
|
|
|
|
|
font-size: 85%;
|
|
|
|
|
}
|
|
|
|
|
p > code, li > code {
|
|
|
|
|
padding: 2px 0px;
|
|
|
|
|
}
|
|
|
|
|
div.figure {
|
|
|
|
|
text-align: center;
|
|
|
|
|
}
|
|
|
|
|
img {
|
|
|
|
|
background-color: #FFFFFF;
|
|
|
|
|
padding: 2px;
|
|
|
|
|
border: 1px solid #DDDDDD;
|
|
|
|
|
border-radius: 3px;
|
|
|
|
|
border: 1px solid #CCCCCC;
|
|
|
|
|
margin: 0 5px;
|
|
|
|
|
}
|
|
|
|
|
h1 {
|
|
|
|
|
margin-top: 0;
|
|
|
|
|
font-size: 35px;
|
|
|
|
|
line-height: 40px;
|
|
|
|
|
}
|
|
|
|
|
h2 {
|
|
|
|
|
border-bottom: 4px solid #f7f7f7;
|
|
|
|
|
padding-top: 10px;
|
|
|
|
|
padding-bottom: 2px;
|
|
|
|
|
font-size: 145%;
|
|
|
|
|
}
|
|
|
|
|
h3 {
|
|
|
|
|
border-bottom: 2px solid #f7f7f7;
|
|
|
|
|
padding-top: 10px;
|
|
|
|
|
font-size: 120%;
|
|
|
|
|
}
|
|
|
|
|
h4 {
|
|
|
|
|
border-bottom: 1px solid #f7f7f7;
|
|
|
|
|
margin-left: 8px;
|
|
|
|
|
font-size: 105%;
|
|
|
|
|
}
|
|
|
|
|
h5, h6 {
|
|
|
|
|
border-bottom: 1px solid #ccc;
|
|
|
|
|
font-size: 105%;
|
|
|
|
|
}
|
|
|
|
|
a {
|
|
|
|
|
color: #0033dd;
|
|
|
|
|
text-decoration: none;
|
|
|
|
|
}
|
|
|
|
|
a:hover {
|
|
|
|
|
color: #6666ff; }
|
|
|
|
|
a:visited {
|
|
|
|
|
color: #800080; }
|
|
|
|
|
a:visited:hover {
|
|
|
|
|
color: #BB00BB; }
|
|
|
|
|
a[href^="http:"] {
|
|
|
|
|
text-decoration: underline; }
|
|
|
|
|
a[href^="https:"] {
|
|
|
|
|
text-decoration: underline; }
|
|
|
|
|
|
|
|
|
|
code > span.kw { color: #555; font-weight: bold; }
|
|
|
|
|
code > span.dt { color: #902000; }
|
|
|
|
|
code > span.dv { color: #40a070; }
|
|
|
|
|
code > span.bn { color: #d14; }
|
|
|
|
|
code > span.fl { color: #d14; }
|
|
|
|
|
code > span.ch { color: #d14; }
|
|
|
|
|
code > span.st { color: #d14; }
|
|
|
|
|
code > span.co { color: #888888; font-style: italic; }
|
|
|
|
|
code > span.ot { color: #007020; }
|
|
|
|
|
code > span.al { color: #ff0000; font-weight: bold; }
|
|
|
|
|
code > span.fu { color: #900; font-weight: bold; }
|
|
|
|
|
code > span.er { color: #a61717; background-color: #e3d2d2; }
|
|
|
|
|
</style>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</head>
|
|
|
|
|
|
|
|
|
|
<body>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<h1 class="title toc-ignore">Exploring the openSenseMap Dataset</h1>
|
|
|
|
|
<h4 class="author">Norwin Roosen</h4>
|
|
|
|
|
<h4 class="date">2023-02-23</h4>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<p>This package provides data ingestion functions for almost any data
|
|
|
|
|
stored on the open data platform for environmental sensordata <a href="https://opensensemap.org" class="uri">https://opensensemap.org</a>. Its main goals are to provide
|
|
|
|
|
means for:</p>
|
|
|
|
|
<ul>
|
|
|
|
|
<li>big data analysis of the measurements stored on the platform</li>
|
|
|
|
|
<li>sensor metadata analysis (sensor counts, spatial distribution,
|
|
|
|
|
temporal trends)</li>
|
|
|
|
|
</ul>
|
|
|
|
|
<div id="exploring-the-dataset" class="section level3">
|
|
|
|
|
<h3>Exploring the dataset</h3>
|
|
|
|
|
<p>Before we look at actual observations, lets get a grasp of the
|
|
|
|
|
openSenseMap datasets’ structure.</p>
|
|
|
|
|
<div class="sourceCode" id="cb1"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="fu">library</span>(magrittr)</span>
|
|
|
|
|
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a><span class="fu">library</span>(opensensmapr)</span>
|
|
|
|
|
<span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a></span>
|
|
|
|
|
<span id="cb1-4"><a href="#cb1-4" aria-hidden="true" tabindex="-1"></a>all_sensors <span class="ot">=</span> <span class="fu">osem_boxes</span>()</span></code></pre></div>
|
|
|
|
|
<div class="sourceCode" id="cb2"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="fu">summary</span>(all_sensors)</span></code></pre></div>
|
|
|
|
|
<pre><code>## boxes total: 11367
|
|
|
|
|
##
|
|
|
|
|
## boxes by exposure:
|
|
|
|
|
## indoor mobile outdoor unknown
|
|
|
|
|
## 2344 591 8413 19
|
|
|
|
|
##
|
|
|
|
|
## boxes by model:
|
|
|
|
|
## custom hackair_home_v2 homeEthernet
|
|
|
|
|
## 2776 73 73
|
|
|
|
|
## homeEthernetFeinstaub homeV2Ethernet homeV2EthernetFeinstaub
|
|
|
|
|
## 55 21 40
|
|
|
|
|
## homeV2Lora homeV2Wifi homeV2WifiFeinstaub
|
|
|
|
|
## 246 578 743
|
|
|
|
|
## homeWifi homeWifiFeinstaub luftdaten_pms1003
|
|
|
|
|
## 215 222 9
|
|
|
|
|
## luftdaten_pms1003_bme280 luftdaten_pms3003 luftdaten_pms3003_bme280
|
|
|
|
|
## 10 1 7
|
|
|
|
|
## luftdaten_pms5003 luftdaten_pms5003_bme280 luftdaten_pms7003
|
|
|
|
|
## 7 60 6
|
|
|
|
|
## luftdaten_pms7003_bme280 luftdaten_sds011 luftdaten_sds011_bme280
|
|
|
|
|
## 78 285 3060
|
|
|
|
|
## luftdaten_sds011_bmp180 luftdaten_sds011_dht11 luftdaten_sds011_dht22
|
|
|
|
|
## 114 135 2553
|
|
|
|
|
##
|
|
|
|
|
## $last_measurement_within
|
|
|
|
|
## 1h 1d 30d 365d never
|
|
|
|
|
## 3601 3756 4252 5938 2052
|
|
|
|
|
##
|
|
|
|
|
## oldest box: 2016-08-09 19:34:42 (OBS Bohmte UK_02)
|
|
|
|
|
## newest box: 2023-02-23 07:56:59 (Steinbrink 29)
|
|
|
|
|
##
|
|
|
|
|
## sensors per box:
|
|
|
|
|
## Min. 1st Qu. Median Mean 3rd Qu. Max.
|
|
|
|
|
## 1.000 4.000 5.000 4.981 5.000 76.000</code></pre>
|
|
|
|
|
<p>This gives a good overview already: As of writing this, there are
|
|
|
|
|
more than 700 sensor stations, of which ~50% are currently running. Most
|
|
|
|
|
of them are placed outdoors and have around 5 sensors each. The oldest
|
|
|
|
|
station is from May 2014, while the latest station was registered a
|
|
|
|
|
couple of minutes ago.</p>
|
|
|
|
|
<p>Another feature of interest is the spatial distribution of the boxes:
|
|
|
|
|
<code>plot()</code> can help us out here. This function requires a bunch
|
|
|
|
|
of optional dependencies though.</p>
|
|
|
|
|
<div class="sourceCode" id="cb4"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a><span class="cf">if</span> (<span class="sc">!</span><span class="fu">require</span>(<span class="st">'maps'</span>)) <span class="fu">install.packages</span>(<span class="st">'maps'</span>)</span>
|
|
|
|
|
<span id="cb4-2"><a href="#cb4-2" aria-hidden="true" tabindex="-1"></a><span class="cf">if</span> (<span class="sc">!</span><span class="fu">require</span>(<span class="st">'maptools'</span>)) <span class="fu">install.packages</span>(<span class="st">'maptools'</span>)</span>
|
|
|
|
|
<span id="cb4-3"><a href="#cb4-3" aria-hidden="true" tabindex="-1"></a><span class="cf">if</span> (<span class="sc">!</span><span class="fu">require</span>(<span class="st">'rgeos'</span>)) <span class="fu">install.packages</span>(<span class="st">'rgeos'</span>)</span>
|
|
|
|
|
<span id="cb4-4"><a href="#cb4-4" aria-hidden="true" tabindex="-1"></a></span>
|
|
|
|
|
<span id="cb4-5"><a href="#cb4-5" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(all_sensors)</span></code></pre></div>
|
|
|
|
|
<p><img src="data:image/png;base64,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
|
|
|
|
|
<p>It seems we have to reduce our area of interest to Germany.</p>
|
|
|
|
|
<p>But what do these sensor stations actually measure? Lets find out.
|
|
|
|
|
<code>osem_phenomena()</code> gives us a named list of of the counts of
|
|
|
|
|
each observed phenomenon for the given set of sensor stations:</p>
|
|
|
|
|
<div class="sourceCode" id="cb5"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a>phenoms <span class="ot">=</span> <span class="fu">osem_phenomena</span>(all_sensors)</span>
|
|
|
|
|
<span id="cb5-2"><a href="#cb5-2" aria-hidden="true" tabindex="-1"></a><span class="fu">str</span>(phenoms)</span></code></pre></div>
|
|
|
|
|
<pre><code>## List of 3289
|
|
|
|
|
## $ Temperatur : int 9385
|
|
|
|
|
## $ rel. Luftfeuchte : int 8317
|
|
|
|
|
## $ PM10 : int 8147
|
|
|
|
|
## $ PM2.5 : int 8135
|
|
|
|
|
## $ Luftdruck : int 5667
|
|
|
|
|
## $ Beleuchtungsstärke : int 1674
|
|
|
|
|
## $ UV-Intensität : int 1665
|
|
|
|
|
## $ Temperature : int 643
|
|
|
|
|
## $ Humidity : int 473
|
|
|
|
|
## $ VOC : int 422
|
|
|
|
|
## $ Luftfeuchte : int 362
|
|
|
|
|
## $ Lufttemperatur : int 356
|
|
|
|
|
## $ CO₂ : int 304
|
|
|
|
|
## $ Pressure : int 293
|
|
|
|
|
## $ Bodenfeuchte : int 284
|
|
|
|
|
## $ Luftfeuchtigkeit : int 272
|
|
|
|
|
## $ atm. Luftdruck : int 245
|
|
|
|
|
## $ Lautstärke : int 240
|
|
|
|
|
## $ PM01 : int 206
|
|
|
|
|
## $ IAQ : int 162
|
|
|
|
|
## $ Kalibrierungswert : int 156
|
|
|
|
|
## $ rel. Luftfeuchte SCD30 : int 156
|
|
|
|
|
## $ Bodentemperatur : int 155
|
|
|
|
|
## $ Temperatur SCD30 : int 154
|
|
|
|
|
## $ CO2eq : int 153
|
|
|
|
|
## $ Windgeschwindigkeit : int 152
|
|
|
|
|
## $ pH-Wert : int 123
|
|
|
|
|
## $ Gesamthärte : int 122
|
|
|
|
|
## $ Blei : int 120
|
|
|
|
|
## $ Eisen : int 120
|
|
|
|
|
## $ GesamthaerteLabor : int 120
|
|
|
|
|
## $ Gesamthärte 2 : int 120
|
|
|
|
|
## $ Kupfer C : int 120
|
|
|
|
|
## $ Kupfer D : int 120
|
|
|
|
|
## $ Kupfer1 : int 120
|
|
|
|
|
## $ Kupfer2 : int 120
|
|
|
|
|
## $ Nitrat : int 120
|
|
|
|
|
## $ Nitrit : int 120
|
|
|
|
|
## $ CO2 : int 112
|
|
|
|
|
## $ Feinstaub PM10 : int 98
|
|
|
|
|
## $ Windrichtung : int 82
|
|
|
|
|
## $ rel. Luftfeuchte (HECA) : int 74
|
|
|
|
|
## $ Temperatur (HECA) : int 72
|
|
|
|
|
## $ Temperatura : int 69
|
|
|
|
|
## $ Helligkeit : int 67
|
|
|
|
|
## $ Feinstaub PM2.5 : int 65
|
|
|
|
|
## $ Taupunkt : int 62
|
|
|
|
|
## $ Latitude : int 61
|
|
|
|
|
## $ Longtitude : int 58
|
|
|
|
|
## $ Durchschnitt Umgebungslautstärke : int 51
|
|
|
|
|
## $ Minimum Umgebungslautstärke : int 51
|
|
|
|
|
## $ UV-Index : int 49
|
|
|
|
|
## $ temperature : int 46
|
|
|
|
|
## $ Batterie : int 45
|
|
|
|
|
## $ Feinstaub PM1.0 : int 41
|
|
|
|
|
## $ Umgebungslautstärke : int 41
|
|
|
|
|
## $ UV : int 40
|
|
|
|
|
## $ humidity : int 38
|
|
|
|
|
## $ Abstand nach links : int 34
|
|
|
|
|
## $ Beschleunigung Z-Achse : int 34
|
|
|
|
|
## $ Beschleunigung X-Achse : int 33
|
|
|
|
|
## $ Beschleunigung Y-Achse : int 33
|
|
|
|
|
## $ Geschwindigkeit : int 33
|
|
|
|
|
## $ Niederschlag : int 33
|
|
|
|
|
## $ Feinstaub PM25 : int 32
|
|
|
|
|
## $ PM1 : int 32
|
|
|
|
|
## $ Abstand nach rechts : int 31
|
|
|
|
|
## $ PM1.0 : int 30
|
|
|
|
|
## $ rel. Luftfeuchtigkeit : int 30
|
|
|
|
|
## $ Relative Humidity : int 29
|
|
|
|
|
## $ Sonnenstrahlung : int 29
|
|
|
|
|
## $ Luftdruck relativ : int 28
|
|
|
|
|
## $ Luftdruck absolut : int 26
|
|
|
|
|
## $ Rain : int 26
|
|
|
|
|
## $ Regenrate : int 26
|
|
|
|
|
## $ CO2 Konzentration : int 25
|
|
|
|
|
## $ RSSI : int 22
|
|
|
|
|
## $ gefühlte Temperatur : int 22
|
|
|
|
|
## $ PM 2.5 : int 21
|
|
|
|
|
## $ Battery : int 20
|
|
|
|
|
## $ Ciśnienie : int 20
|
|
|
|
|
## $ Air Pressure : int 19
|
|
|
|
|
## $ Regen : int 19
|
|
|
|
|
## $ Schall : int 19
|
|
|
|
|
## $ Signal : int 19
|
|
|
|
|
## $ Ilmanpaine : int 18
|
|
|
|
|
## $ Lämpötila : int 18
|
|
|
|
|
## $ UV Index : int 18
|
|
|
|
|
## $ Wind speed : int 18
|
|
|
|
|
## $ PM 10 : int 17
|
|
|
|
|
## $ PM4 : int 17
|
|
|
|
|
## $ Air pressure : int 16
|
|
|
|
|
## $ Temperatur DHT22 : int 16
|
|
|
|
|
## $ Wind Direction : int 16
|
|
|
|
|
## $ Altitude : int 15
|
|
|
|
|
## $ Illuminance : int 15
|
|
|
|
|
## $ Speed : int 15
|
|
|
|
|
## $ Wind Speed : int 15
|
|
|
|
|
## $ pressure : int 15
|
|
|
|
|
## [list output truncated]</code></pre>
|
|
|
|
|
<p>Thats quite some noise there, with many phenomena being measured by a
|
|
|
|
|
single sensor only, or many duplicated phenomena due to slightly
|
|
|
|
|
different spellings. We should clean that up, but for now let’s just
|
|
|
|
|
filter out the noise and find those phenomena with high sensor
|
|
|
|
|
numbers:</p>
|
|
|
|
|
<div class="sourceCode" id="cb7"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true" tabindex="-1"></a>phenoms[phenoms <span class="sc">></span> <span class="dv">20</span>]</span></code></pre></div>
|
|
|
|
|
<pre><code>## $Temperatur
|
|
|
|
|
## [1] 9385
|
|
|
|
|
##
|
|
|
|
|
## $`rel. Luftfeuchte`
|
|
|
|
|
## [1] 8317
|
|
|
|
|
##
|
|
|
|
|
## $PM10
|
|
|
|
|
## [1] 8147
|
|
|
|
|
##
|
|
|
|
|
## $PM2.5
|
|
|
|
|
## [1] 8135
|
|
|
|
|
##
|
|
|
|
|
## $Luftdruck
|
|
|
|
|
## [1] 5667
|
|
|
|
|
##
|
|
|
|
|
## $Beleuchtungsstärke
|
|
|
|
|
## [1] 1674
|
|
|
|
|
##
|
|
|
|
|
## $`UV-Intensität`
|
|
|
|
|
## [1] 1665
|
|
|
|
|
##
|
|
|
|
|
## $Temperature
|
|
|
|
|
## [1] 643
|
|
|
|
|
##
|
|
|
|
|
## $Humidity
|
|
|
|
|
## [1] 473
|
|
|
|
|
##
|
|
|
|
|
## $VOC
|
|
|
|
|
## [1] 422
|
|
|
|
|
##
|
|
|
|
|
## $Luftfeuchte
|
|
|
|
|
## [1] 362
|
|
|
|
|
##
|
|
|
|
|
## $Lufttemperatur
|
|
|
|
|
## [1] 356
|
|
|
|
|
##
|
|
|
|
|
## $`CO₂`
|
|
|
|
|
## [1] 304
|
|
|
|
|
##
|
|
|
|
|
## $Pressure
|
|
|
|
|
## [1] 293
|
|
|
|
|
##
|
|
|
|
|
## $Bodenfeuchte
|
|
|
|
|
## [1] 284
|
|
|
|
|
##
|
|
|
|
|
## $Luftfeuchtigkeit
|
|
|
|
|
## [1] 272
|
|
|
|
|
##
|
|
|
|
|
## $`atm. Luftdruck`
|
|
|
|
|
## [1] 245
|
|
|
|
|
##
|
|
|
|
|
## $Lautstärke
|
|
|
|
|
## [1] 240
|
|
|
|
|
##
|
|
|
|
|
## $PM01
|
|
|
|
|
## [1] 206
|
|
|
|
|
##
|
|
|
|
|
## $IAQ
|
|
|
|
|
## [1] 162
|
|
|
|
|
##
|
|
|
|
|
## $Kalibrierungswert
|
|
|
|
|
## [1] 156
|
|
|
|
|
##
|
|
|
|
|
## $`rel. Luftfeuchte SCD30`
|
|
|
|
|
## [1] 156
|
|
|
|
|
##
|
|
|
|
|
## $Bodentemperatur
|
|
|
|
|
## [1] 155
|
|
|
|
|
##
|
|
|
|
|
## $`Temperatur SCD30`
|
|
|
|
|
## [1] 154
|
|
|
|
|
##
|
|
|
|
|
## $CO2eq
|
|
|
|
|
## [1] 153
|
|
|
|
|
##
|
|
|
|
|
## $Windgeschwindigkeit
|
|
|
|
|
## [1] 152
|
|
|
|
|
##
|
|
|
|
|
## $`pH-Wert`
|
|
|
|
|
## [1] 123
|
|
|
|
|
##
|
|
|
|
|
## $Gesamthärte
|
|
|
|
|
## [1] 122
|
|
|
|
|
##
|
|
|
|
|
## $Blei
|
|
|
|
|
## [1] 120
|
|
|
|
|
##
|
|
|
|
|
## $Eisen
|
|
|
|
|
## [1] 120
|
|
|
|
|
##
|
|
|
|
|
## $GesamthaerteLabor
|
|
|
|
|
## [1] 120
|
|
|
|
|
##
|
|
|
|
|
## $`Gesamthärte 2`
|
|
|
|
|
## [1] 120
|
|
|
|
|
##
|
|
|
|
|
## $`Kupfer C`
|
|
|
|
|
## [1] 120
|
|
|
|
|
##
|
|
|
|
|
## $`Kupfer D`
|
|
|
|
|
## [1] 120
|
|
|
|
|
##
|
|
|
|
|
## $Kupfer1
|
|
|
|
|
## [1] 120
|
|
|
|
|
##
|
|
|
|
|
## $Kupfer2
|
|
|
|
|
## [1] 120
|
|
|
|
|
##
|
|
|
|
|
## $Nitrat
|
|
|
|
|
## [1] 120
|
|
|
|
|
##
|
|
|
|
|
## $Nitrit
|
|
|
|
|
## [1] 120
|
|
|
|
|
##
|
|
|
|
|
## $CO2
|
|
|
|
|
## [1] 112
|
|
|
|
|
##
|
|
|
|
|
## $`Feinstaub PM10`
|
|
|
|
|
## [1] 98
|
|
|
|
|
##
|
|
|
|
|
## $Windrichtung
|
|
|
|
|
## [1] 82
|
|
|
|
|
##
|
|
|
|
|
## $`rel. Luftfeuchte (HECA)`
|
|
|
|
|
## [1] 74
|
|
|
|
|
##
|
|
|
|
|
## $`Temperatur (HECA)`
|
|
|
|
|
## [1] 72
|
|
|
|
|
##
|
|
|
|
|
## $Temperatura
|
|
|
|
|
## [1] 69
|
|
|
|
|
##
|
|
|
|
|
## $Helligkeit
|
|
|
|
|
## [1] 67
|
|
|
|
|
##
|
|
|
|
|
## $`Feinstaub PM2.5`
|
|
|
|
|
## [1] 65
|
|
|
|
|
##
|
|
|
|
|
## $Taupunkt
|
|
|
|
|
## [1] 62
|
|
|
|
|
##
|
|
|
|
|
## $Latitude
|
|
|
|
|
## [1] 61
|
|
|
|
|
##
|
|
|
|
|
## $Longtitude
|
|
|
|
|
## [1] 58
|
|
|
|
|
##
|
|
|
|
|
## $`Durchschnitt Umgebungslautstärke`
|
|
|
|
|
## [1] 51
|
|
|
|
|
##
|
|
|
|
|
## $`Minimum Umgebungslautstärke`
|
|
|
|
|
## [1] 51
|
|
|
|
|
##
|
|
|
|
|
## $`UV-Index`
|
|
|
|
|
## [1] 49
|
|
|
|
|
##
|
|
|
|
|
## $temperature
|
|
|
|
|
## [1] 46
|
|
|
|
|
##
|
|
|
|
|
## $Batterie
|
|
|
|
|
## [1] 45
|
|
|
|
|
##
|
|
|
|
|
## $`Feinstaub PM1.0`
|
|
|
|
|
## [1] 41
|
|
|
|
|
##
|
|
|
|
|
## $Umgebungslautstärke
|
|
|
|
|
## [1] 41
|
|
|
|
|
##
|
|
|
|
|
## $UV
|
|
|
|
|
## [1] 40
|
|
|
|
|
##
|
|
|
|
|
## $humidity
|
|
|
|
|
## [1] 38
|
|
|
|
|
##
|
|
|
|
|
## $`Abstand nach links`
|
|
|
|
|
## [1] 34
|
|
|
|
|
##
|
|
|
|
|
## $`Beschleunigung Z-Achse`
|
|
|
|
|
## [1] 34
|
|
|
|
|
##
|
|
|
|
|
## $`Beschleunigung X-Achse`
|
|
|
|
|
## [1] 33
|
|
|
|
|
##
|
|
|
|
|
## $`Beschleunigung Y-Achse`
|
|
|
|
|
## [1] 33
|
|
|
|
|
##
|
|
|
|
|
## $Geschwindigkeit
|
|
|
|
|
## [1] 33
|
|
|
|
|
##
|
|
|
|
|
## $Niederschlag
|
|
|
|
|
## [1] 33
|
|
|
|
|
##
|
|
|
|
|
## $`Feinstaub PM25`
|
|
|
|
|
## [1] 32
|
|
|
|
|
##
|
|
|
|
|
## $PM1
|
|
|
|
|
## [1] 32
|
|
|
|
|
##
|
|
|
|
|
## $`Abstand nach rechts`
|
|
|
|
|
## [1] 31
|
|
|
|
|
##
|
|
|
|
|
## $PM1.0
|
|
|
|
|
## [1] 30
|
|
|
|
|
##
|
|
|
|
|
## $`rel. Luftfeuchtigkeit`
|
|
|
|
|
## [1] 30
|
|
|
|
|
##
|
|
|
|
|
## $`Relative Humidity`
|
|
|
|
|
## [1] 29
|
|
|
|
|
##
|
|
|
|
|
## $Sonnenstrahlung
|
|
|
|
|
## [1] 29
|
|
|
|
|
##
|
|
|
|
|
## $`Luftdruck relativ`
|
|
|
|
|
## [1] 28
|
|
|
|
|
##
|
|
|
|
|
## $`Luftdruck absolut`
|
|
|
|
|
## [1] 26
|
|
|
|
|
##
|
|
|
|
|
## $Rain
|
|
|
|
|
## [1] 26
|
|
|
|
|
##
|
|
|
|
|
## $Regenrate
|
|
|
|
|
## [1] 26
|
|
|
|
|
##
|
|
|
|
|
## $`CO2 Konzentration`
|
|
|
|
|
## [1] 25
|
|
|
|
|
##
|
|
|
|
|
## $RSSI
|
|
|
|
|
## [1] 22
|
|
|
|
|
##
|
|
|
|
|
## $`gefühlte Temperatur`
|
|
|
|
|
## [1] 22
|
|
|
|
|
##
|
|
|
|
|
## $`PM 2.5`
|
|
|
|
|
## [1] 21</code></pre>
|
|
|
|
|
<p>Alright, temperature it is! Fine particulate matter (PM2.5) seems to
|
|
|
|
|
be more interesting to analyze though. We should check how many sensor
|
|
|
|
|
stations provide useful data: We want only those boxes with a PM2.5
|
|
|
|
|
sensor, that are placed outdoors and are currently submitting
|
|
|
|
|
measurements:</p>
|
|
|
|
|
<div class="sourceCode" id="cb9"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true" tabindex="-1"></a>pm25_sensors <span class="ot">=</span> <span class="fu">osem_boxes</span>(</span>
|
|
|
|
|
<span id="cb9-2"><a href="#cb9-2" aria-hidden="true" tabindex="-1"></a> <span class="at">exposure =</span> <span class="st">'outdoor'</span>,</span>
|
|
|
|
|
<span id="cb9-3"><a href="#cb9-3" aria-hidden="true" tabindex="-1"></a> <span class="at">date =</span> <span class="fu">Sys.time</span>(), <span class="co"># ±4 hours</span></span>
|
|
|
|
|
<span id="cb9-4"><a href="#cb9-4" aria-hidden="true" tabindex="-1"></a> <span class="at">phenomenon =</span> <span class="st">'PM2.5'</span></span>
|
|
|
|
|
<span id="cb9-5"><a href="#cb9-5" aria-hidden="true" tabindex="-1"></a>)</span></code></pre></div>
|
|
|
|
|
<div class="sourceCode" id="cb10"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a><span class="fu">summary</span>(pm25_sensors)</span></code></pre></div>
|
|
|
|
|
<pre><code>## boxes total: 3002
|
|
|
|
|
##
|
|
|
|
|
## boxes by exposure:
|
|
|
|
|
## outdoor
|
|
|
|
|
## 3002
|
|
|
|
|
##
|
|
|
|
|
## boxes by model:
|
|
|
|
|
## custom hackair_home_v2 homeEthernetFeinstaub
|
|
|
|
|
## 174 8 12
|
|
|
|
|
## homeV2EthernetFeinstaub homeV2Lora homeV2Wifi
|
|
|
|
|
## 10 21 2
|
|
|
|
|
## homeV2WifiFeinstaub homeWifi homeWifiFeinstaub
|
|
|
|
|
## 126 3 30
|
|
|
|
|
## luftdaten_pms1003 luftdaten_pms1003_bme280 luftdaten_pms5003
|
|
|
|
|
## 1 2 3
|
|
|
|
|
## luftdaten_pms5003_bme280 luftdaten_pms7003 luftdaten_pms7003_bme280
|
|
|
|
|
## 11 2 26
|
|
|
|
|
## luftdaten_sds011 luftdaten_sds011_bme280 luftdaten_sds011_bmp180
|
|
|
|
|
## 115 1365 59
|
|
|
|
|
## luftdaten_sds011_dht11 luftdaten_sds011_dht22
|
|
|
|
|
## 45 987
|
|
|
|
|
##
|
|
|
|
|
## $last_measurement_within
|
|
|
|
|
## 1h 1d 30d 365d never
|
|
|
|
|
## 2977 3002 3002 3002 0
|
|
|
|
|
##
|
|
|
|
|
## oldest box: 2017-03-03 18:20:43 (Witten Heven Dorf)
|
|
|
|
|
## newest box: 2023-02-23 07:56:59 (Steinbrink 29)
|
|
|
|
|
##
|
|
|
|
|
## sensors per box:
|
|
|
|
|
## Min. 1st Qu. Median Mean 3rd Qu. Max.
|
|
|
|
|
## 2.000 4.000 5.000 4.838 5.000 26.000</code></pre>
|
|
|
|
|
<div class="sourceCode" id="cb12"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(pm25_sensors)</span></code></pre></div>
|
|
|
|
|
<p><img src="data:image/png;base64,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
|
|
|
|
|
<p>Thats still more than 200 measuring stations, we can work with
|
|
|
|
|
that.</p>
|
|
|
|
|
</div>
|
|
|
|
|
<div id="analyzing-sensor-data" class="section level3">
|
|
|
|
|
<h3>Analyzing sensor data</h3>
|
|
|
|
|
<p>Having analyzed the available data sources, let’s finally get some
|
|
|
|
|
measurements. We could call <code>osem_measurements(pm25_sensors)</code>
|
|
|
|
|
now, however we are focusing on a restricted area of interest, the city
|
|
|
|
|
of Berlin. Luckily we can get the measurements filtered by a bounding
|
|
|
|
|
box:</p>
|
|
|
|
|
<div class="sourceCode" id="cb13"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb13-1"><a href="#cb13-1" aria-hidden="true" tabindex="-1"></a><span class="fu">library</span>(sf)</span></code></pre></div>
|
|
|
|
|
<pre><code>## Linking to GEOS 3.9.3, GDAL 3.5.2, PROJ 8.2.1; sf_use_s2() is TRUE</code></pre>
|
|
|
|
|
<div class="sourceCode" id="cb15"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb15-1"><a href="#cb15-1" aria-hidden="true" tabindex="-1"></a><span class="fu">library</span>(units)</span></code></pre></div>
|
|
|
|
|
<pre><code>## udunits database from C:/Software/RPackages/units/share/udunits/udunits2.xml</code></pre>
|
|
|
|
|
<div class="sourceCode" id="cb17"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb17-1"><a href="#cb17-1" aria-hidden="true" tabindex="-1"></a><span class="fu">library</span>(lubridate)</span>
|
|
|
|
|
<span id="cb17-2"><a href="#cb17-2" aria-hidden="true" tabindex="-1"></a><span class="fu">library</span>(dplyr)</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="co"># construct a bounding box: 12 kilometers around Berlin</span></span>
|
|
|
|
|
<span id="cb17-5"><a href="#cb17-5" aria-hidden="true" tabindex="-1"></a>berlin <span class="ot">=</span> <span class="fu">st_point</span>(<span class="fu">c</span>(<span class="fl">13.4034</span>, <span class="fl">52.5120</span>)) <span class="sc">%>%</span></span>
|
|
|
|
|
<span id="cb17-6"><a href="#cb17-6" aria-hidden="true" tabindex="-1"></a> <span class="fu">st_sfc</span>(<span class="at">crs =</span> <span class="dv">4326</span>) <span class="sc">%>%</span></span>
|
|
|
|
|
<span id="cb17-7"><a href="#cb17-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">st_transform</span>(<span class="dv">3857</span>) <span class="sc">%>%</span> <span class="co"># allow setting a buffer in meters</span></span>
|
|
|
|
|
<span id="cb17-8"><a href="#cb17-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">st_buffer</span>(<span class="fu">set_units</span>(<span class="dv">12</span>, km)) <span class="sc">%>%</span></span>
|
|
|
|
|
<span id="cb17-9"><a href="#cb17-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">st_transform</span>(<span class="dv">4326</span>) <span class="sc">%>%</span> <span class="co"># the opensensemap expects WGS 84</span></span>
|
|
|
|
|
<span id="cb17-10"><a href="#cb17-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">st_bbox</span>()</span></code></pre></div>
|
|
|
|
|
<div class="sourceCode" id="cb18"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb18-1"><a href="#cb18-1" aria-hidden="true" tabindex="-1"></a>pm25 <span class="ot">=</span> <span class="fu">osem_measurements</span>(</span>
|
|
|
|
|
<span id="cb18-2"><a href="#cb18-2" aria-hidden="true" tabindex="-1"></a> berlin,</span>
|
|
|
|
|
<span id="cb18-3"><a href="#cb18-3" aria-hidden="true" tabindex="-1"></a> <span class="at">phenomenon =</span> <span class="st">'PM2.5'</span>,</span>
|
|
|
|
|
<span id="cb18-4"><a href="#cb18-4" aria-hidden="true" tabindex="-1"></a> <span class="at">from =</span> <span class="fu">now</span>() <span class="sc">-</span> <span class="fu">days</span>(<span class="dv">3</span>), <span class="co"># defaults to 2 days</span></span>
|
|
|
|
|
<span id="cb18-5"><a href="#cb18-5" aria-hidden="true" tabindex="-1"></a> <span class="at">to =</span> <span class="fu">now</span>()</span>
|
|
|
|
|
<span id="cb18-6"><a href="#cb18-6" aria-hidden="true" tabindex="-1"></a>)</span>
|
|
|
|
|
<span id="cb18-7"><a href="#cb18-7" aria-hidden="true" tabindex="-1"></a></span>
|
|
|
|
|
<span id="cb18-8"><a href="#cb18-8" aria-hidden="true" tabindex="-1"></a><span class="fu">plot</span>(pm25)</span></code></pre></div>
|
|
|
|
|
<p><img src="data:image/png;base64,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
|
|
|
|
|
<p>Now we can get started with actual spatiotemporal data analysis.
|
|
|
|
|
First, lets mask the seemingly uncalibrated sensors:</p>
|
|
|
|
|
<div class="sourceCode" id="cb19"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb19-1"><a href="#cb19-1" aria-hidden="true" tabindex="-1"></a>outliers <span class="ot">=</span> <span class="fu">filter</span>(pm25, value <span class="sc">></span> <span class="dv">100</span>)<span class="sc">$</span>sensorId</span>
|
|
|
|
|
<span id="cb19-2"><a href="#cb19-2" aria-hidden="true" tabindex="-1"></a>bad_sensors <span class="ot">=</span> outliers[, drop <span class="ot">=</span> T] <span class="sc">%>%</span> <span class="fu">levels</span>()</span>
|
|
|
|
|
<span id="cb19-3"><a href="#cb19-3" aria-hidden="true" tabindex="-1"></a></span>
|
|
|
|
|
<span id="cb19-4"><a href="#cb19-4" aria-hidden="true" tabindex="-1"></a>pm25 <span class="ot">=</span> <span class="fu">mutate</span>(pm25, <span class="at">invalid =</span> sensorId <span class="sc">%in%</span> bad_sensors)</span></code></pre></div>
|
|
|
|
|
<p>Then plot the measuring locations, flagging the outliers:</p>
|
|
|
|
|
<div class="sourceCode" id="cb20"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb20-1"><a href="#cb20-1" aria-hidden="true" tabindex="-1"></a><span class="fu">st_as_sf</span>(pm25) <span class="sc">%>%</span> <span class="fu">st_geometry</span>() <span class="sc">%>%</span> <span class="fu">plot</span>(<span class="at">col =</span> <span class="fu">factor</span>(pm25<span class="sc">$</span>invalid), <span class="at">axes =</span> T)</span></code></pre></div>
|
|
|
|
|
<p><img src="data:image/png;base64,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
|
|
|
|
|
<p>Removing these sensors yields a nicer time series plot:</p>
|
|
|
|
|
<div class="sourceCode" id="cb21"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb21-1"><a href="#cb21-1" aria-hidden="true" tabindex="-1"></a>pm25 <span class="sc">%>%</span> <span class="fu">filter</span>(invalid <span class="sc">==</span> <span class="cn">FALSE</span>) <span class="sc">%>%</span> <span class="fu">plot</span>()</span></code></pre></div>
|
|
|
|
|
<p><img src="data:image/png;base64,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
|
|
|
|
|
<p>Further analysis: comparison with LANUV data <code>TODO</code></p>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- code folding -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- dynamically load mathjax for compatibility with self-contained -->
|
|
|
|
|
<script>
|
|
|
|
|
(function () {
|
|
|
|
|
var script = document.createElement("script");
|
|
|
|
|
script.type = "text/javascript";
|
|
|
|
|
script.src = "https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML";
|
|
|
|
|
document.getElementsByTagName("head")[0].appendChild(script);
|
|
|
|
|
})();
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|