2017-08-23 02:07:56 +02:00
<!DOCTYPE html>
2018-05-26 12:52:02 +02:00
< html xmlns = "http://www.w3.org/1999/xhtml" >
2017-08-23 02:07:56 +02:00
2018-05-26 12:52:02 +02:00
< head >
2017-08-23 02:07:56 +02:00
2018-05-26 12:52:02 +02:00
< meta charset = "utf-8" / >
< meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" / >
< meta name = "generator" content = "pandoc" / >
2017-08-23 02:07:56 +02:00
2018-05-26 12:52:02 +02:00
< meta name = "viewport" content = "width=device-width, initial-scale=1" >
2018-05-25 17:17:29 +02:00
2018-05-26 12:52:02 +02:00
< meta name = "author" content = "Norwin Roosen" / >
2018-05-25 17:17:29 +02:00
2018-05-26 12:52:02 +02:00
< meta name = "date" content = "2018-05-26" / >
2018-05-25 17:17:29 +02:00
2018-05-26 12:52:02 +02:00
< title > Exploring the openSenseMap Dataset< / title >
2017-08-23 02:07:56 +02:00
2018-05-26 12:52:02 +02:00
< style type = "text/css" > code { white-space : pre ; } < / style >
2017-08-23 02:07:56 +02:00
< style type = "text/css" >
2018-05-26 12:52:02 +02:00
div.sourceCode { overflow-x: auto; }
table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode {
margin: 0; padding: 0; vertical-align: baseline; border: none; }
table.sourceCode { width: 100%; line-height: 100%; }
td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; color: #aaaaaa; border-right: 1px solid #aaaaaa; }
td.sourceCode { padding-left: 5px; }
code > span.kw { color: #007020; font-weight: bold; } /* Keyword */
code > span.dt { color: #902000; } /* DataType */
code > span.dv { color: #40a070; } /* DecVal */
code > span.bn { color: #40a070; } /* BaseN */
code > span.fl { color: #40a070; } /* Float */
code > span.ch { color: #4070a0; } /* Char */
code > span.st { color: #4070a0; } /* String */
code > span.co { color: #60a0b0; font-style: italic; } /* Comment */
code > span.ot { color: #007020; } /* Other */
code > span.al { color: #ff0000; font-weight: bold; } /* Alert */
code > span.fu { color: #06287e; } /* Function */
code > span.er { color: #ff0000; font-weight: bold; } /* Error */
code > span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
code > span.cn { color: #880000; } /* Constant */
code > span.sc { color: #4070a0; } /* SpecialChar */
code > span.vs { color: #4070a0; } /* VerbatimString */
code > span.ss { color: #bb6688; } /* SpecialString */
code > span.im { } /* Import */
code > span.va { color: #19177c; } /* Variable */
code > span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
code > span.op { color: #666666; } /* Operator */
code > span.bu { } /* BuiltIn */
code > span.ex { } /* Extension */
code > span.pp { color: #bc7a00; } /* Preprocessor */
code > span.at { color: #7d9029; } /* Attribute */
code > span.do { color: #ba2121; font-style: italic; } /* Documentation */
code > span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
code > span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
< / style >
2017-08-23 02:07:56 +02:00
2018-05-26 12:52:02 +02:00
< link href = "data:text/css;charset=utf-8,body%20%7B%0Abackground%2Dcolor%3A%20%23fff%3B%0Amargin%3A%201em%20auto%3B%0Amax%2Dwidth%3A%20700px%3B%0Aoverflow%3A%20visible%3B%0Apadding%2Dleft%3A%202em%3B%0Apadding%2Dright%3A%202em%3B%0Afont%2Dfamily%3A%20%22Open%20Sans%22%2C%20%22Helvetica%20Neue%22%2C%20Helvetica%2C%20Arial%2C%20sans%2Dserif%3B%0Afont%2Dsize%3A%2014px%3B%0Aline%2Dheight%3A%201%2E35%3B%0A%7D%0A%23header%20%7B%0Atext%2Dalign%3A%20center%3B%0A%7D%0A%23TOC%20%7B%0Aclear%3A%20both%3B%0Amargin%3A%200%200%2010px%2010px%3B%0Apadding%3A%204px%3B%0Awidth%3A%20400px%3B%0Aborder%3A%201px%20solid%20%23CCCCCC%3B%0Aborder%2Dradius%3A%205px%3B%0Abackground%2Dcolor%3A%20%23f6f6f6%3B%0Afont%2Dsize%3A%2013px%3B%0Aline%2Dheight%3A%201%2E3%3B%0A%7D%0A%23TOC%20%2Etoctitle%20%7B%0Afont%2Dweight%3A%20bold%3B%0Afont%2Dsize%3A%2015px%3B%0Amargin%2Dleft%3A%205px%3B%0A%7D%0A%23TOC%20ul%20%7B%0Apadding%2Dleft%3A%2040px%3B%0Amargin%2Dleft%3A%20%2D1%2E5em%3B%0Amargin%2Dtop%3A%205px%3B%0Amargin%2Dbottom%3A%205px%3B%0A%7D%0A%23TOC%20ul%20ul%20%7B%0Amargin%2Dleft%3A%20%2D2em%3B%0A%7D%0A%23TOC%20li%20%7B%0Aline%2Dheight%3A%2016px%3B%0A%7D%0Atable%20%7B%0Amargin%3A%201em%20auto%3B%0Aborder%2Dwidth%3A%201px%3B%0Aborder%2Dcolor%3A%20%23DDDDDD%3B%0Aborder%2Dstyle%3A%20outset%3B%0Aborder%2Dcollapse%3A%20collapse%3B%0A%7D%0Atable%20th%20%7B%0Aborder%2Dwidth%3A%202px%3B%0Apadding%3A%205px%3B%0Aborder%2Dstyle%3A%20inset%3B%0A%7D%0Atable%20td%20%7B%0Aborder%2Dwidth%3A%201px%3B%0Aborder%2Dstyle%3A%20inset%3B%0Aline%2Dheight%3A%2018px%3B%0Apadding%3A%205px%205px%3B%0A%7D%0Atable%2C%20table%20th%2C%20table%20td%20%7B%0Aborder%2Dleft%2Dstyle%3A%20none%3B%0Aborder%2Dright%2Dstyle%3A%20none%3B%0A%7D%0Atable%20thead%2C%20table%20tr%2Eeven%20%7B%0Abackground%2Dcolor%3A%20%23f7f7f7%3B%0A%7D%0Ap%20%7B%0Amargin%3A%200%2E5em%200%3B%0A%7D%0Ablockquote%20%7B%0Abackground%2Dcolor%3A%20%23f6f6f6%3B%0Apadding%3A%200%2E25em%200%2E75em%3B%0A%7D%0Ahr%20%7B%0Aborder%2Dstyle%3A%20solid%3B%0Aborder%3A%20none%3B%0Aborder%2Dtop%3A%201px%20solid%20%23777%3B%0Amargin%3A%2028px%200%3B%0A%7D%0Adl%20%7B%0Amargin%2Dleft%3A%200%3B%0A%7D%0Adl%20dd%20%7B%0Amargin%2Dbottom%3A%2013px%3B%0Amargin%2Dleft%3A%2013px%3B%0A%7D%0Adl%20dt%20%7B%0Afont%2Dweight%3A%20bold%3B%0A%7D%0Aul%20%7B%0Amargin%2Dtop%3A%200%3B%0A%7D%0Aul%20li%20%7B%0Alist%2Dstyle%3A%20circle%20outside%3B%0A%7D%0Aul%20ul%20%7B%0Amargin%2Dbottom%3A%200%3B%0A%7D%0Apre%2C%20code%20%7B%0Abackground%2Dcolor%3A%20%23f7f7f7%3B%0Aborder%2Dradius%3A%203px%3B%0Acolor%3A%20%23333%3B%0Awhite%2Dspace%3A%20pre%2Dwrap%3B%20%0A%7D%0Apre%20%7B%0Aborder%2Dradius%3A%203px%3B%0Amargin%3A%205px%200px%2010px%200px%3B%0Apadding%3A%2010px%3B%0A%7D%0Apre%3Anot%28%5Bclass%5D%29%20%7B%0Abackground%2Dcolor%3A%20%23f7f7f7%3B%0A%7D%0Acode%20%7B%0Afont%2Dfamily%3A%20Consolas%2C%20Monaco%2C%20%27Courier%20New%27%2C%20monospace%3B%0Afont%2Dsize%3A%2085%25%3B%0A%7D%0Ap%20%3E%20code%2C%20li%20%3E%20code%20%7B%0Apadding%3A%202px%200px%3B%0A%7D%0Adiv%2Efigure%20%7B%0Atext%2Dalign%3A%20center%3B%0A%7D%0Aimg%20%7B%0Abackground%2Dcolor%3A%20%23FFFFFF%3B%0Apadding%3A%202px%3B%0Aborder%3A%201px%20solid%20%23DDDDDD%3B%0Aborder%2Dradius%3A%203px%3B%0Aborder%3A%201px%20solid%20%23CCCCCC%3B%0Amargin%3A%200%205px%3B%0A%7D%0Ah1%20%7B%0Amargin%2Dtop%3A%200%3B%0Afont%2Dsize%3A%2035px%3B%0Aline%2Dheight%3A%2040px%3B%0A%7D%0Ah2%20%7B%0Aborder%2Dbottom%3A%204px%20solid%20%23f7f7f7%3B%0Apadding%2Dtop%3A%2010px%3B%0Apadding%2Dbottom%3A%202px%3B%0Afont%2Dsize%3A%20145%25%3B%0A%7D%0Ah3%20%7B%0Aborder%2Dbottom%3A%202px%20solid%20%23f7f7f7%3B%0Apadding%2Dtop%3A%2010px%3B%0Afont%2Dsize%3A%20120%25%3B%0A%7D%0Ah4%20%7B%0Aborder%2Dbottom%3A%201px%20solid%20%23f7f7f7%3B%0Amargin%2Dleft%3A%208px%3B%0Afont%2Dsize%3A%20105%25%3B%0A%7D%0Ah5%2C%20h6%20%7B%0Aborder%2Dbottom%3A%201px%20solid%20%23ccc%3B%0Afont%2Dsize%3A%20105%25%3B%0A%7D%0Aa%20%7B%0Acolor%3A%20%230033dd%3B%0Atext%2Ddecoration%3A%20none%3B%0A%7D%0Aa%3Ahover%20%7B%0Acolor%3A%20%236666ff%3B%20%7D%0Aa%3Avisited%20%7B%0Acolor%3A%20%23800080%3B%20%7D%0Aa%3Avisited%3Ahover%20%7B%0Acolor%3A%20%23BB00BB%3B%20%7D%0Aa%5Bhref%5E%3D%22http
2017-08-23 02:07:56 +02:00
2018-05-26 12:52:02 +02:00
< / head >
2018-05-25 17:17:29 +02:00
2018-05-26 12:52:02 +02:00
< body >
2018-05-25 17:17:29 +02:00
2018-05-26 12:52:02 +02:00
< h1 class = "title toc-ignore" > Exploring the openSenseMap Dataset< / h1 >
< h4 class = "author" > < em > Norwin Roosen< / em > < / h4 >
< h4 class = "date" > < em > 2018-05-26< / em > < / h4 >
2018-05-25 17:17:29 +02:00
2018-05-26 12:52:02 +02:00
< p > This package provides data ingestion functions for almost any data stored on the open data platform for environemental sensordata < a href = "https://opensensemap.org" class = "uri" > https://opensensemap.org< / a > . Its main goals are to provide means for:< / p >
2017-08-23 02:07:56 +02:00
< 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 >
2018-05-26 12:52:02 +02:00
< div id = "exploring-the-dataset" class = "section level3" >
2017-08-23 02:07:56 +02:00
< h3 > Exploring the dataset< / h3 >
2018-05-26 12:52:02 +02:00
< p > Before we look at actual observations, lets get a grasp of the openSenseMap datasets’ structure.< / p >
< div class = "sourceCode" > < pre class = "sourceCode r" > < code class = "sourceCode r" > < span class = "kw" > library< / span > (magrittr)
< span class = "kw" > library< / span > (opensensmapr)
2017-08-23 02:07:56 +02:00
2018-05-26 12:52:02 +02:00
all_sensors =< span class = "st" > < / span > < span class = "kw" > osem_boxes< / span > ()< / code > < / pre > < / div >
< div class = "sourceCode" > < pre class = "sourceCode r" > < code class = "sourceCode r" > < span class = "kw" > summary< / span > (all_sensors)< / code > < / pre > < / div >
< pre > < code > ## boxes total: 1781
2017-08-23 02:07:56 +02:00
##
## boxes by exposure:
2018-05-25 17:17:29 +02:00
## indoor mobile outdoor unknown
2018-05-26 12:52:02 +02:00
## 290 55 1416 20
2017-08-23 02:07:56 +02:00
##
## boxes by model:
2018-05-25 17:17:29 +02:00
## custom homeEthernet homeEthernetFeinstaub
2018-05-26 12:52:02 +02:00
## 336 92 49
2018-05-25 17:17:29 +02:00
## homeWifi homeWifiFeinstaub luftdaten_pms1003
2018-05-26 12:52:02 +02:00
## 193 144 1
2018-05-25 17:17:29 +02:00
## luftdaten_pms1003_bme280 luftdaten_pms5003_bme280 luftdaten_pms7003_bme280
## 1 5 2
## luftdaten_sds011 luftdaten_sds011_bme280 luftdaten_sds011_bmp180
## 57 197 19
## luftdaten_sds011_dht11 luftdaten_sds011_dht22
## 46 639
2017-08-23 02:07:56 +02:00
##
## $last_measurement_within
## 1h 1d 30d 365d never
2018-05-26 12:52:02 +02:00
## 929 954 1091 1428 235
2017-08-23 02:07:56 +02:00
##
## oldest box: 2014-05-28 15:36:14 (CALIMERO)
2018-05-26 12:52:02 +02:00
## newest box: 2018-05-26 10:29:27 (UOS_DDI)
2017-08-23 02:07:56 +02:00
##
## sensors per box:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
2018-05-26 12:52:02 +02:00
## 1.0 4.0 4.0 4.6 5.0 33.0< / 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" > < pre class = "sourceCode r" > < code class = "sourceCode r" > if (!< span class = "kw" > require< / span > (< span class = "st" > 'maps'< / span > )) < span class = "kw" > install.packages< / span > (< span class = "st" > 'maps'< / span > )
if (!< span class = "kw" > require< / span > (< span class = "st" > 'maptools'< / span > )) < span class = "kw" > install.packages< / span > (< span class = "st" > 'maptools'< / span > )
if (!< span class = "kw" > require< / span > (< span class = "st" > 'rgeos'< / span > )) < span class = "kw" > install.packages< / span > (< span class = "st" > 'rgeos'< / span > )
< span class = "kw" > plot< / span > (all_sensors)< / code > < / pre > < / div >
< p > < img src = "data:image/png;base64,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
2017-08-23 02:07:56 +02:00
< p > It seems we have to reduce our area of interest to Germany.< / p >
2018-05-26 12:52:02 +02:00
< 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" > < pre class = "sourceCode r" > < code class = "sourceCode r" > phenoms =< span class = "st" > < / span > < span class = "kw" > osem_phenomena< / span > (all_sensors)
< span class = "kw" > str< / span > (phenoms)< / code > < / pre > < / div >
< pre > < code > ## List of 433
## $ Temperatur : int 1608
## $ rel. Luftfeuchte : int 1422
2018-05-25 17:17:29 +02:00
## $ PM10 : int 1200
## $ PM2.5 : int 1198
2018-05-26 12:52:02 +02:00
## $ Luftdruck : int 825
## $ Beleuchtungsstärke : int 481
## $ UV-Intensität : int 472
2018-05-25 17:17:29 +02:00
## $ Luftfeuchtigkeit : int 84
## $ Temperature : int 49
## $ Humidity : int 42
## $ Helligkeit : int 25
## $ Lautstärke : int 21
## $ Schall : int 20
## $ UV : int 20
## $ Pressure : int 19
## $ Licht : int 18
## $ Luftfeuchte : int 14
## $ Umgebungslautstärke : int 14
## $ Lämpötila : int 13
## $ Ilmanpaine : int 12
## $ Signal : int 12
## $ Feinstaub PM10 : int 10
## $ Feinstaub PM2.5 : int 9
## $ Kosteus : int 8
2018-05-26 12:52:02 +02:00
## $ Temperatur DHT22 : int 8
2018-05-25 17:17:29 +02:00
## $ Valonmäärä : int 8
## $ temperature : int 8
## $ PM01 : int 7
## $ UV-säteily : int 7
## $ Niederschlag : int 6
## $ UV-Strahlung : int 6
## $ Wind speed : int 6
## $ Windgeschwindigkeit : int 6
## $ humidity : int 6
## $ Ilmankosteus : int 5
## $ Wassertemperatur : int 5
## $ Windrichtung : int 5
## $ rel. Luftfeuchtigkeit : int 5
## $ Druck : int 4
## $ Light : int 4
## $ Temperature 1 : int 4
## $ UV Index : int 4
## $ UV-Säteily : int 4
## $ lautstärke : int 4
## $ rel. Luftfeuchte 1 : int 4
2018-05-26 12:52:02 +02:00
## $ rel. Luftfeuchte DHT22 : int 4
2018-05-25 17:17:29 +02:00
## $ relative Luftfeuchtigkeit : int 4
## $ Air pressure : int 3
## $ Batterie : int 3
## $ Battery : int 3
## $ DS18B20_Probe01 : int 3
## $ DS18B20_Probe02 : int 3
## $ DS18B20_Probe03 : int 3
## $ DS18B20_Probe04 : int 3
## $ DS18B20_Probe05 : int 3
## $ Licht (digital) : int 3
## $ Luftdruck (BME280) : int 3
## $ PM 10 : int 3
## $ PM 2.5 : int 3
## $ Temp : int 3
## $ Temperatur (BME280) : int 3
## $ Temperatur HDC1008 : int 3
## $ Temperatura : int 3
## $ Temperature 2 : int 3
## $ UV-Index : int 3
## $ Valoisuus : int 3
## $ Wind Gust : int 3
## $ pressure : int 3
## $ 1 : int 2
## $ 10 : int 2
## $ 2 : int 2
## $ 3 : int 2
## $ 4 : int 2
## $ 5 : int 2
## $ 6 : int 2
## $ 7 : int 2
## $ 8 : int 2
## $ 9 : int 2
## $ Air Pressure : int 2
## $ Anderer : int 2
## $ Battery voltage : int 2
## $ CO2 : int 2
## $ Feuchte : int 2
## $ Illuminance : int 2
## $ Intensity : int 2
## $ Leitfähigkeit : int 2
## $ Lichtintensität : int 2
## $ Luftdruck BMP180 : int 2
## $ Luftfeuchte (BME280) : int 2
## $ Luftqualität : int 2
## $ Lufttemperatur : int 2
## $ PM25 : int 2
## $ Radioactivity : int 2
## $ Radioaktivität : int 2
## $ Regen : int 2
## $ Relative Humidity : int 2
## $ Sound : int 2
## $ Temperatur (DHT22) : int 2
## $ Temperatur BMP180 : int 2
2018-05-26 12:52:02 +02:00
## [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" > < pre class = "sourceCode r" > < code class = "sourceCode r" > phenoms[phenoms > < span class = "st" > < / span > < span class = "dv" > 20< / span > ]< / code > < / pre > < / div >
2017-08-23 02:07:56 +02:00
< pre > < code > ## $Temperatur
2018-05-26 12:52:02 +02:00
## [1] 1608
2017-08-23 02:07:56 +02:00
##
## $`rel. Luftfeuchte`
2018-05-26 12:52:02 +02:00
## [1] 1422
2017-08-23 02:07:56 +02:00
##
## $PM10
2018-05-25 17:17:29 +02:00
## [1] 1200
2017-08-23 02:07:56 +02:00
##
## $PM2.5
2018-05-25 17:17:29 +02:00
## [1] 1198
2017-08-23 02:07:56 +02:00
##
2018-05-25 17:17:29 +02:00
## $Luftdruck
2018-05-26 12:52:02 +02:00
## [1] 825
2017-08-23 02:07:56 +02:00
##
## $Beleuchtungsstärke
2018-05-26 12:52:02 +02:00
## [1] 481
2018-05-25 17:17:29 +02:00
##
## $`UV-Intensität`
2018-05-26 12:52:02 +02:00
## [1] 472
2017-08-23 02:07:56 +02:00
##
## $Luftfeuchtigkeit
2018-05-25 17:17:29 +02:00
## [1] 84
##
## $Temperature
## [1] 49
2017-08-23 02:07:56 +02:00
##
2018-05-25 17:17:29 +02:00
## $Humidity
## [1] 42
##
## $Helligkeit
## [1] 25
##
## $Lautstärke
2018-05-26 12:52:02 +02:00
## [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" > < pre class = "sourceCode r" > < code class = "sourceCode r" > pm25_sensors =< span class = "st" > < / span > < span class = "kw" > osem_boxes< / span > (
< span class = "dt" > exposure =< / span > < span class = "st" > 'outdoor'< / span > ,
< span class = "dt" > date =< / span > < span class = "kw" > Sys.time< / span > (), < span class = "co" > # ±4 hours< / span >
< span class = "dt" > phenomenon =< / span > < span class = "st" > 'PM2.5'< / span >
)< / code > < / pre > < / div >
< div class = "sourceCode" > < pre class = "sourceCode r" > < code class = "sourceCode r" > < span class = "kw" > summary< / span > (pm25_sensors)< / code > < / pre > < / div >
< pre > < code > ## boxes total: 791
2017-08-23 02:07:56 +02:00
##
## boxes by exposure:
## outdoor
2018-05-26 12:52:02 +02:00
## 791
2017-08-23 02:07:56 +02:00
##
## boxes by model:
2018-05-25 17:17:29 +02:00
## custom homeEthernetFeinstaub homeWifi
2018-05-26 12:52:02 +02:00
## 29 37 6
2018-05-25 17:17:29 +02:00
## homeWifiFeinstaub luftdaten_pms1003_bme280 luftdaten_pms5003_bme280
2018-05-26 12:52:02 +02:00
## 57 1 1
2018-05-25 17:17:29 +02:00
## luftdaten_pms7003_bme280 luftdaten_sds011 luftdaten_sds011_bme280
2018-05-26 12:52:02 +02:00
## 2 32 137
2018-05-25 17:17:29 +02:00
## luftdaten_sds011_bmp180 luftdaten_sds011_dht11 luftdaten_sds011_dht22
2018-05-26 12:52:02 +02:00
## 14 32 443
2017-08-23 02:07:56 +02:00
##
## $last_measurement_within
## 1h 1d 30d 365d never
2018-05-26 12:52:02 +02:00
## 771 780 784 789 2
2017-08-23 02:07:56 +02:00
##
2018-05-25 17:17:29 +02:00
## oldest box: 2016-06-02 12:09:47 (BalkonBox Mindener Str.)
## newest box: 2018-05-24 20:29:50 (Stadthalle)
2017-08-23 02:07:56 +02:00
##
## sensors per box:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
2018-05-26 12:52:02 +02:00
## 2.000 4.000 4.000 4.617 5.000 12.000< / code > < / pre >
< div class = "sourceCode" > < pre class = "sourceCode r" > < code class = "sourceCode r" > < span class = "kw" > plot< / span > (pm25_sensors)< / code > < / pre > < / div >
< p > < img src = "data:image/png;base64,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
2017-08-23 02:07:56 +02:00
< p > Thats still more than 200 measuring stations, we can work with that.< / p >
2018-05-26 12:52:02 +02:00
< / div >
< div id = "analyzing-sensor-data" class = "section level3" >
2017-08-23 02:07:56 +02:00
< h3 > Analyzing sensor data< / h3 >
2018-05-26 12:52:02 +02:00
< 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 focussing 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" > < pre class = "sourceCode r" > < code class = "sourceCode r" > < span class = "kw" > library< / span > (sf)< / code > < / pre > < / div >
< pre > < code > ## Linking to GEOS 3.5.1, GDAL 2.2.2, proj.4 4.9.2< / code > < / pre >
< div class = "sourceCode" > < pre class = "sourceCode r" > < code class = "sourceCode r" > < span class = "kw" > library< / span > (units)< / code > < / pre > < / div >
2018-05-25 17:17:29 +02:00
< pre > < code > ##
2018-05-26 12:52:02 +02:00
## Attaching package: 'units'< / code > < / pre >
< pre > < code > ## The following object is masked from 'package:base':
2018-05-25 17:17:29 +02:00
##
2018-05-26 12:52:02 +02:00
## %*%< / code > < / pre >
< div class = "sourceCode" > < pre class = "sourceCode r" > < code class = "sourceCode r" > < span class = "kw" > library< / span > (lubridate)
< span class = "kw" > library< / span > (dplyr)
< span class = "co" > # construct a bounding box: 12 kilometers around Berlin< / span >
berlin =< span class = "st" > < / span > < span class = "kw" > st_point< / span > (< span class = "kw" > c< / span > (< span class = "fl" > 13.4034< / span > , < span class = "fl" > 52.5120< / span > )) %> %
< span class = "st" > < / span > < span class = "kw" > st_sfc< / span > (< span class = "dt" > crs =< / span > < span class = "dv" > 4326< / span > ) %> %
< span class = "st" > < / span > < span class = "kw" > st_transform< / span > (< span class = "dv" > 3857< / span > ) %> %< span class = "st" > < / span > < span class = "co" > # allow setting a buffer in meters< / span >
< span class = "st" > < / span > < span class = "kw" > st_buffer< / span > (< span class = "kw" > set_units< / span > (< span class = "dv" > 12< / span > , km)) %> %
< span class = "st" > < / span > < span class = "kw" > st_transform< / span > (< span class = "dv" > 4326< / span > ) %> %< span class = "st" > < / span > < span class = "co" > # the opensensemap expects WGS 84< / span >
< span class = "st" > < / span > < span class = "kw" > st_bbox< / span > ()< / code > < / pre > < / div >
< div class = "sourceCode" > < pre class = "sourceCode r" > < code class = "sourceCode r" > pm25 =< span class = "st" > < / span > < span class = "kw" > osem_measurements< / span > (
2017-08-23 02:07:56 +02:00
berlin,
2018-05-26 12:52:02 +02:00
< span class = "dt" > phenomenon =< / span > < span class = "st" > 'PM2.5'< / span > ,
< span class = "dt" > from =< / span > < span class = "kw" > now< / span > () -< span class = "st" > < / span > < span class = "kw" > days< / span > (< span class = "dv" > 20< / span > ), < span class = "co" > # defaults to 2 days< / span >
< span class = "dt" > to =< / span > < span class = "kw" > now< / span > ()
2017-08-23 16:07:05 +02:00
)
2018-05-26 12:52:02 +02:00
< span class = "kw" > plot< / span > (pm25)< / 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" > < pre class = "sourceCode r" > < code class = "sourceCode r" > outliers =< span class = "st" > < / span > < span class = "kw" > filter< / span > (pm25, value > < span class = "st" > < / span > < span class = "dv" > 100< / span > )$sensorId
bad_sensors =< span class = "st" > < / span > outliers[, drop =< span class = "st" > < / span > T] %> %< span class = "st" > < / span > < span class = "kw" > levels< / span > ()
2017-08-24 21:45:38 +02:00
2018-05-26 12:52:02 +02:00
pm25 =< span class = "st" > < / span > < span class = "kw" > mutate< / span > (pm25, < span class = "dt" > invalid =< / span > sensorId %in%< span class = "st" > < / span > bad_sensors)< / code > < / pre > < / div >
2017-08-24 21:45:38 +02:00
< p > Then plot the measuring locations, flagging the outliers:< / p >
2018-05-26 12:52:02 +02:00
< div class = "sourceCode" > < pre class = "sourceCode r" > < code class = "sourceCode r" > < span class = "kw" > st_as_sf< / span > (pm25) %> %< span class = "st" > < / span > < span class = "kw" > st_geometry< / span > () %> %< span class = "st" > < / span > < span class = "kw" > plot< / span > (< span class = "dt" > col =< / span > < span class = "kw" > factor< / span > (pm25$invalid), < span class = "dt" > axes =< / span > T)< / code > < / pre > < / div >
< p > < img src = "data:image/png;base64,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
2017-08-24 21:45:38 +02:00
< p > Removing these sensors yields a nicer time series plot:< / p >
2018-05-26 12:52:02 +02:00
< div class = "sourceCode" > < pre class = "sourceCode r" > < code class = "sourceCode r" > pm25 %> %< span class = "st" > < / span > < span class = "kw" > filter< / span > (invalid ==< span class = "st" > < / span > < span class = "ot" > FALSE< / span > ) %> %< span class = "st" > < / span > < span class = "kw" > plot< / 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 >
2017-08-23 02:07:56 +02:00
2018-05-26 12:52:02 +02:00
<!-- 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 >
2017-08-23 02:07:56 +02:00
< / body >
< / html >