1
0
Fork 0
mirror of https://github.com/sensebox/opensensmapr synced 2025-02-22 14:53:57 +01:00
opensensmapR/inst/doc/intro-deutsch.html

661 lines
73 KiB
HTML
Raw Normal View History

<!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="Jan Stenkamp" />
<meta name="date" content="2023-03-30" />
<title>Einführung in opensensmapR</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">Einführung in opensensmapR</h1>
<h4 class="author">Jan Stenkamp</h4>
<h4 class="date">2023-03-30</h4>
<p>Das package opensensmapR kann dazu genutzt werden Daten von der <a href="https://opensensemap.org">openSenseMap</a> in R abzufragen und zu
analysieren. Damit lassen sich sowohl die Daten einzelner senseBoxen,
aber vor allem auch mehrere senseBoxen gleichzeitig analysieren.</p>
<div id="installation" class="section level3">
<h3>Installation</h3>
<p>Um das package in R zu nutzen, muss dieses zuerst installiert werden.
Das ist möglich mit dem Befehl
<code>install.packages(&#39;opensensmapr&#39;)</code>. Danach kann das package
geladen werden durch den Befehl <code>library(opensensmapr)</code>.</p>
</div>
<div id="alle-boxen-abfragen" class="section level3">
<h3>Alle Boxen abfragen</h3>
<p>Um einen Überblick über alle auf der openSenseMap registrierten Boxen
zu bekommen, kann man diese mit dem Befehl <code>osem_boxes()</code>
über die API beziehen. Außerdem werden die Boxen dabei automatisch
vorbereitet, um sie für weitere Analysen zu nutzen. Die Daten werden
dann in der Variablen <code>all_sensors</code> gespeichert, um diese
weiter zu verwenden.</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>(opensensmapr)</span>
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a>all_sensors <span class="ot">=</span> <span class="fu">osem_boxes</span>()</span></code></pre></div>
<p>Daraufhin ermöglicht die Funktion <code>summary(boxes)</code>, eine
Zusammenfassung der Metadaten aller Boxen anzuzeigen:</p>
<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: 11589
##
## boxes by exposure:
## indoor mobile outdoor unknown
## 2435 598 8537 19
##
## boxes by model:
## custom hackair_home_v2 homeEthernet
## 2917 75 73
## homeEthernetFeinstaub homeV2Ethernet homeV2EthernetFeinstaub
## 55 20 40
## homeV2Lora homeV2Wifi homeV2WifiFeinstaub
## 248 595 751
## homeWifi homeWifiFeinstaub luftdaten_pms1003
## 214 223 9
## luftdaten_pms1003_bme280 luftdaten_pms3003 luftdaten_pms3003_bme280
## 10 1 7
## luftdaten_pms5003 luftdaten_pms5003_bme280 luftdaten_pms7003
## 7 61 6
## luftdaten_pms7003_bme280 luftdaten_sds011 luftdaten_sds011_bme280
## 81 287 3103
## luftdaten_sds011_bmp180 luftdaten_sds011_dht11 luftdaten_sds011_dht22
## 116 135 2555
##
## $last_measurement_within
## 1h 1d 30d 365d never
## 3659 3778 4319 6029 2094
##
## oldest box: 2016-08-09 19:34:42 (OBS Bohmte UK_02)
## newest box: 2023-03-29 17:40:59 (Test Nr.1)
##
## sensors per box:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.00 4.00 5.00 5.02 5.00 76.00</code></pre>
<p>So werden hier unter anderem die Anzahl aller Boxen in dem Datensatz
(<code>boxes total</code>), die Anzahl der Boxen die Messungen in
verschiedenen Zeitintervallen durchgeführt haben
(<code>$last_measurement_within</code>) und die zuletzt erstellte Box
dargestellt (<code>newest_box</code>).</p>
<p>Mit der Funktion <code>plot(boxes)</code> können wir dann auch noch
alle Stationen auf einer Karte anzeigen.</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="fu">plot</span>(all_sensors)</span></code></pre></div>
<p><img src="data:image/png;base64,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
<p>Die Funktion <code>osem_phenomena(boxes)</code> gibt uns außerdem
Informationen darüber, welche Phänomene von den Stationen gemessen
werden.</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 3640
## $ Temperatur : int 9560
## $ rel. Luftfeuchte : int 8436
## $ PM10 : int 8239
## $ PM2.5 : int 8224
## $ Luftdruck : int 5776
## $ Beleuchtungsstärke : int 1712
## $ UV-Intensität : int 1700
## $ Temperature : int 663
## $ Humidity : int 489
## $ VOC : int 432
## $ Lufttemperatur : int 373
## $ Luftfeuchte : int 371
## $ CO₂ : int 325
## $ Pressure : int 308
## $ Bodenfeuchte : int 302
## $ Luftfeuchtigkeit : int 275
## $ Lautstärke : int 255
## $ atm. Luftdruck : int 251
## $ PM01 : int 213
## $ Bodentemperatur : int 163
## $ IAQ : int 162
## $ Kalibrierungswert : int 156
## $ rel. Luftfeuchte SCD30 : int 156
## $ Temperatur SCD30 : int 154
## $ CO2eq : int 153
## $ Windgeschwindigkeit : int 153
## $ pH-Wert : int 143
## $ Gesamthärte : int 142
## $ Blei : int 140
## $ Eisen : int 140
## $ Gesamthärte 2 : int 140
## $ Kupfer C : int 140
## $ Kupfer D : int 140
## $ Kupfer1 : int 140
## $ Kupfer2 : int 140
## $ Nitrat : int 140
## $ Nitrit : int 140
## $ GesamthaerteLabor : int 120
## $ CO2 : int 118
## $ Feinstaub PM10 : int 101
## $ Windrichtung : int 82
## $ rel. Luftfeuchte (HECA) : int 78
## $ Temperatur (HECA) : int 76
## $ Helligkeit : int 70
## $ Temperatura : int 69
## $ Feinstaub PM2.5 : int 68
## $ 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 49
## $ Batterie : int 46
## $ Feinstaub PM1.0 : int 44
## $ Umgebungslautstärke : int 41
## $ humidity : int 41
## $ UV : int 40
## $ 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
## $ PM1 : int 33
## $ Feinstaub PM25 : int 32
## $ PM1.0 : int 32
## $ Relative Humidity : int 32
## $ Abstand nach rechts : int 31
## $ rel. Luftfeuchtigkeit : int 30
## $ 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
## $ Battery : int 21
## $ PM 2.5 : int 21
## $ Ciśnienie : int 20
## $ EisenLabor : int 20
## $ Air Pressure : int 19
## $ PM4 : int 19
## $ Regen : int 19
## $ Schall : int 19
## $ Signal : int 19
## $ UV Index : int 19
## $ Ilmanpaine : int 18
## $ Lämpötila : int 18
## $ Wind Direction : int 18
## $ Wind speed : int 18
## $ PM 10 : int 17
## $ Air pressure : int 16
## $ Altitude : int 16
## $ Illuminance : int 16
## $ Power Supply : int 16
## $ Temperatur DHT22 : int 16
## $ Wind Speed : int 16
## [list output truncated]</code></pre>
</div>
<div id="daten-filtern" class="section level3">
<h3>Daten filtern</h3>
<p>Mit PM10 als einem der am häufigsten gemessenen Phänomene, wollen wir
nun weiterarbeiten. Dazu können wir zum Beispiel mit den folgenden
Parametern, nur die Boxen abfragen, die PM10 gemessen haben. Dabei wird
die Abfrage durch das setzen der Parameter in der Klammer wie folgt
gefiltert:</p>
<ul>
<li><code>exposure = &#39;outdoor&#39;</code> : gib nur Boxen zurück die draußen
stehen.</li>
<li><code>date = Sys.time()</code> : gib nur Boxen zurück, die zum Datum
Sys.time() (+-4 Stunden) eine Messung geschickt haben. Sys.time() steht
dabei für die aktuelle Zeit.</li>
<li><code>phenomenon = &#39;PM10&#39;</code> : gib nur Boxen zurück, die einen
PM10 Sensor haben.</li>
</ul>
<p>Die Abfrage der gefilterten Boxen kann ggfs. ein paar Minuten dauern,
da die openSenseMap API zuerst die prall gefüllte Datenbank entsprechend
filtern muss.</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>pm10_sensors <span class="ot">=</span> <span class="fu">osem_boxes</span>(</span>
<span id="cb7-2"><a href="#cb7-2" aria-hidden="true" tabindex="-1"></a> <span class="at">exposure =</span> <span class="st">&#39;outdoor&#39;</span>,</span>
<span id="cb7-3"><a href="#cb7-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="cb7-4"><a href="#cb7-4" aria-hidden="true" tabindex="-1"></a> <span class="at">phenomenon =</span> <span class="st">&#39;PM10&#39;</span></span>
<span id="cb7-5"><a href="#cb7-5" aria-hidden="true" tabindex="-1"></a>)</span></code></pre></div>
<p>Auch von den gefilterten Daten können wir uns wieder die
Zusammenfassung und eine Karte anschauen:</p>
<div class="sourceCode" id="cb8"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a><span class="fu">summary</span>(pm10_sensors)</span></code></pre></div>
<pre><code>## boxes total: 3009
##
## boxes by exposure:
## outdoor
## 3009
##
## boxes by model:
## custom hackair_home_v2 homeEthernetFeinstaub
## 172 7 13
## homeV2EthernetFeinstaub homeV2Lora homeV2Wifi
## 7 23 2
## homeV2WifiFeinstaub homeWifi homeWifiFeinstaub
## 125 2 30
## luftdaten_pms1003 luftdaten_pms1003_bme280 luftdaten_pms5003
## 1 4 3
## luftdaten_pms5003_bme280 luftdaten_pms7003 luftdaten_pms7003_bme280
## 11 2 30
## luftdaten_sds011 luftdaten_sds011_bme280 luftdaten_sds011_bmp180
## 110 1382 60
## luftdaten_sds011_dht11 luftdaten_sds011_dht22
## 40 985
##
## $last_measurement_within
## 1h 1d 30d 365d never
## 2985 3009 3009 3009 0
##
## oldest box: 2017-03-03 18:20:43 (Witten Heven Dorf)
## newest box: 2023-03-26 17:59:20 (airRohr)
##
## sensors per box:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 2.000 4.000 5.000 4.849 5.000 29.000</code></pre>
<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">plot</span>(pm10_sensors)</span></code></pre></div>
<p><img src="data:image/png;base64,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
<p>Wie man sieht, sind jetzt alle Stationen outdoor und es gibt keine
Station mehr, die noch nie eine Messung durchgeführt hat. Das liegt an
den Parametern, die wir bei der Abfrage der Daten in der Funktion
gesetzt haben; alle Stationen sollten draußen sein und vor kurzem eine
Messung geschickt haben.</p>
</div>
<div id="daten-analysieren" class="section level3">
<h3>Daten analysieren</h3>
<p>Bis jetzt haben wir uns ja nur die Stationen angeschaut. Nun wollen
wir auch einen genaueren Blick auf die eigentlichen Messungen werfen.
Die Messungen die an die openSenseMap geschickt werden, können wir mit
der Funktion <code>osem_measurements()</code> abfragen.</p>
<p>Auch dabei können wir verschiedene Filter setzen. Unter anderem
wollen wir nur Messungen von Stationen in der Nähe von Münster erhalten.
Dazu erstellen wir zunächst ein Objekt, dass die Koordinaten von Münster
enthält:</p>
<div class="sourceCode" id="cb11"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true" tabindex="-1"></a><span class="co"># Zunächst werden ein paar Pakete geladen, die es uns ermöglichen mit den räumlichen Daten zu arbeiten</span></span>
<span id="cb11-2"><a href="#cb11-2" aria-hidden="true" tabindex="-1"></a><span class="fu">library</span>(sf)</span>
<span id="cb11-3"><a href="#cb11-3" aria-hidden="true" tabindex="-1"></a><span class="fu">library</span>(units)</span>
<span id="cb11-4"><a href="#cb11-4" aria-hidden="true" tabindex="-1"></a><span class="fu">library</span>(lubridate)</span>
<span id="cb11-5"><a href="#cb11-5" aria-hidden="true" tabindex="-1"></a><span class="fu">library</span>(dplyr)</span>
<span id="cb11-6"><a href="#cb11-6" aria-hidden="true" tabindex="-1"></a><span class="co"># Dann erstellen wir eine sogenannte Boundingbox, in unserem Fall ein 20 km x 20 km Quadrat um das Zentrum von Münster.</span></span>
<span id="cb11-7"><a href="#cb11-7" aria-hidden="true" tabindex="-1"></a>muenster <span class="ot">=</span> <span class="fu">st_point</span>(<span class="fu">c</span>(<span class="fl">7.63</span>, <span class="fl">51.95</span>)) <span class="sc">%&gt;%</span> <span class="co"># Koordinate Münster Zentrum</span></span>
<span id="cb11-8"><a href="#cb11-8" 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">%&gt;%</span> <span class="co"># Koordinatensystem für geographische Koordinaten</span></span>
<span id="cb11-9"><a href="#cb11-9" aria-hidden="true" tabindex="-1"></a> <span class="fu">st_transform</span>(<span class="dv">3857</span>) <span class="sc">%&gt;%</span> <span class="co"># Koordinatensystem das Meter versteht</span></span>
<span id="cb11-10"><a href="#cb11-10" aria-hidden="true" tabindex="-1"></a> <span class="fu">st_buffer</span>(<span class="fu">set_units</span>(<span class="dv">10</span>, km)) <span class="sc">%&gt;%</span> <span class="co"># 10 km Radius um Münster</span></span>
<span id="cb11-11"><a href="#cb11-11" aria-hidden="true" tabindex="-1"></a> <span class="fu">st_transform</span>(<span class="dv">4326</span>) <span class="sc">%&gt;%</span> <span class="co"># Wieder Umwandlung in geographische Koordinaten, welche die openSenseMap API erwartet</span></span>
<span id="cb11-12"><a href="#cb11-12" aria-hidden="true" tabindex="-1"></a> <span class="fu">st_bbox</span>() <span class="co"># erstellen eines boundingbox objektes</span></span></code></pre></div>
<p><code>osem_measurements()</code> nimmt ähnliche Parameter wie
<code>osem_boxes()</code> entgegen.</p>
<ul>
<li><code>bbox = muenster</code> : Gib nur Messungen von Boxen zurück,
die innerhalb unserer boundingbox liegen.</li>
<li><code>phenomenon = &#39;PM10&#39;</code> : Gib nur PM10 Messungen
zurück.</li>
<li><code>from = now() - days(3)</code>: Gib Messungen zurück, die nicht
älter als drei Tage sind.</li>
<li><code>to = now()</code> : Gib nur Messungen zurück, die bis jetzt
gemessen wurden.</li>
</ul>
<p>Hierbei ersetzen die Parameter <code>from</code> und <code>to</code>,
den Parameter <code>date</code>, den wir zuvor in der Funktion
<code>osem_boxes()</code> benutzt haben. Beide Arten von Datumsfilter,
können in beiden Funktionen genutzt werden.</p>
<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>pm10_muenster <span class="ot">=</span> <span class="fu">osem_measurements</span>(</span>
<span id="cb12-2"><a href="#cb12-2" aria-hidden="true" tabindex="-1"></a> muenster, </span>
<span id="cb12-3"><a href="#cb12-3" aria-hidden="true" tabindex="-1"></a> <span class="at">phenomenon =</span> <span class="st">&#39;PM10&#39;</span>,</span>
<span id="cb12-4"><a href="#cb12-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="cb12-5"><a href="#cb12-5" aria-hidden="true" tabindex="-1"></a> <span class="at">to =</span> <span class="fu">now</span>()</span>
<span id="cb12-6"><a href="#cb12-6" aria-hidden="true" tabindex="-1"></a>)</span></code></pre></div>
<p>Die PM10-Messungen können wir nun einfach als Zeitreihe
darstellen:</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">plot</span>(pm10_muenster)</span></code></pre></div>
<p><img src="data:image/png;base64,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
<p>Jeder Punkt stellt hier eine Messung dar und jede Box hat eine andere
Farbe. Wie man sieht sind die meisten Messungen unter einem Wert von 50,
jedoch gibt es auch ein paar Ausreißer und eine Station die dauerhaft
Werte um 150 misst.</p>
<p>Für weitere Beispiele lohnt sich ein Blick in die folgenden
Dokumente: - <a href="https://github.com/sensebox/opensensmapR/blob/master/inst/doc/osem-history_revised.html" class="uri">https://github.com/sensebox/opensensmapR/blob/master/inst/doc/osem-history_revised.html</a>
- <a href="https://sensebox.github.io/opensensmapR/inst/doc/osem-intro.html" class="uri">https://sensebox.github.io/opensensmapR/inst/doc/osem-intro.html</a></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>