osem_measurements: Fetch the Measurements of a Phenomenon on opensensemap.org

osem_measurementsR Documentation

Fetch the Measurements of a Phenomenon on opensensemap.org

Description

Measurements can be retrieved either for a set of boxes, or through a spatial bounding box filter. To get all measurements, the default function applies a bounding box spanning the whole world.

Usage

osem_measurements(x, ...)

## Default S3 method:
osem_measurements(x, ...)

## S3 method for class 'bbox'
osem_measurements(
  x,
  phenomenon,
  exposure = NA,
  from = NA,
  to = NA,
  columns = NA,
  ...,
  endpoint = osem_endpoint(),
  progress = TRUE,
  cache = NA
)

## S3 method for class 'sensebox'
osem_measurements(
  x,
  phenomenon,
  exposure = NA,
  from = NA,
  to = NA,
  columns = NA,
  ...,
  endpoint = osem_endpoint(),
  progress = TRUE,
  cache = NA
)

Arguments

x

Depending on the method, either

  1. a chr specifying the phenomenon, see phenomenon

  2. a st_bbox to select sensors spatially,

  3. a sensebox data.frame to select boxes from which measurements will be retrieved,

...

see parameters below

phenomenon

The phenomenon to retrieve measurements for

exposure

Filter sensors by their exposure ('indoor', 'outdoor', 'mobile')

from

A POSIXt like object to select a time interval

to

A POSIXt like object to select a time interval

columns

Select specific column in the output (see openSenseMap API documentation)

endpoint

The URL of the openSenseMap API

progress

Whether to print download progress information

cache

Whether to cache the result, defaults to false. If a valid path to a directory is given, the response will be cached there. Subsequent identical requests will return the cached data instead.

Value

An osem_measurements data.frame containing the requested measurements

Methods (by class)

  • osem_measurements(default): Get measurements from all senseBoxes.

  • osem_measurements(bbox): Get measurements by a spatial filter.

  • osem_measurements(sensebox): Get measurements from a set of senseBoxes.

See Also

openSenseMap API documentation (web)

osem_box

osem_boxes

osem_clear_cache

Examples

## Not run: 
  # get measurements from all boxes on the phenomenon 'PM10' from the last 48h
  m = osem_measurements('PM10')

  # get measurements from all mobile boxes on the phenomenon 'PM10' from the last 48h
  m = osem_measurements('PM10', exposure = 'mobile')

  # get measurements and cache them locally in the working directory.
  # subsequent identical requests will load from the cache instead, ensuring
  # reproducibility and saving time and bandwidth!
  m = osem_measurements('PM10', exposure = 'mobile', cache = getwd())
  m = osem_measurements('PM10', exposure = 'mobile', cache = getwd())

  # get measurements returning a custom selection of columns
  m = osem_measurements('PM10', exposure = 'mobile', columns = c(
    'value',
    'boxId',
    'sensorType',
    'lat',
    'lon',
    'height'
  ))

## End(Not run)
## Not run: 
  # get measurements from sensors within a custom WGS84 bounding box
  bbox = structure(c(7, 51, 8, 52), class = 'bbox')
  m = osem_measurements(bbox, 'Temperatur')

  # construct a bounding box 12km around berlin using the sf package,
  # and get measurements from stations within that box
  library(sf)
  library(units)
  bbox2 = st_point(c(13.4034, 52.5120)) %>%
    st_sfc(crs = 4326) %>%
    st_transform(3857) %>% # allow setting a buffer in meters
    st_buffer(set_units(12, km)) %>%
    st_transform(4326) %>% # the opensensemap expects WGS 84
    st_bbox()
  m = osem_measurements(bbox2, 'Temperatur', exposure = 'outdoor')

  # construct a bounding box from two points,
  # and get measurements from stations within that box
  points = st_multipoint(matrix(c(7.5, 7.8, 51.7, 52), 2, 2))
  bbox3 = st_bbox(points)
  m = osem_measurements(bbox2, 'Temperatur', exposure = 'outdoor')

## End(Not run)

  # get measurements from a set of boxes
  b = osem_boxes(grouptag = 'ifgi')
  m4 = osem_measurements(b, phenomenon = 'Temperatur')

  # ...or a single box
  b = osem_box('57000b8745fd40c8196ad04c')
  m5 = osem_measurements(b, phenomenon = 'Temperatur')

  # get measurements from a single box on the from the last 40 days.
  # requests are paged for long time frames, so the APIs limitation
  # does not apply!
  library(lubridate)
  m1 = osem_measurements(
    b,
    'Temperatur',
    to = now(),
    from = now() - days(40)
  )


sensebox/opensensmapR documentation built on March 12, 2023, 8:09 a.m.