Learn R Programming

⚠️There's a newer version (0.4.4) of this package.Take me there.

MazamaLocationUtils

A suite of utility functions for discovering and managaing metadata associated
with sets of spatially unique "known locations".

Background

This package is intended to be used in support of data management activities associated with fixed locations in space. The motivating fields include both air and water quality monitoring where fixed sensors report at regular time intervals.

When working with environmental monitoring time series, one of the first things you have to do is create unique identifiers for each individual time series. In an ideal world, each environmental time series would have both a locationID and a sensorID that uniquely identify the spatial location and specific instrument making measurements. A unique timeseriesID could be produced as locationID_sensorID. Metadata associated with each timeseries would contain basic information needed for downstream analysis including at least:

timeseriesID, locationID, sensorID, longitude, latitude, ...

  • Multiple sensors placed at a single location could be associated based on their shared locationID.
  • An extended time series for a single, potentially redeployed sensor would be associated with a single sensorID.
  • Maps could be created using longitude, latitude fields.
  • Time series data for a sensor would be accessed from a secondary data table with timeseriesID column names.

Unfortunately, we are rarely supplied with a truly unique and truly spatial locationID. Instead we often use sensorID or an associated non-spatial identifier as a stand-in for locationID.

Complications we have seen include:

  • GPS-reported longitude and latitude can have jitter in the fourth or fifth

decimal place making it challenging to use them to create a unique locationID.

  • Sensors are sometimes repositioned in what the scientist considers the "same

location".

  • Data for a single sensor goes through different processing pipelines using

different identifiers and is later brought together as two separate timeseries.

  • The spatial scale of what constitutes a "single location" depends on the

instrumentation and scientific question being asked.

  • Deriving location-based metadata from spatial datasets is computationally

intensive unless saved and identified with a unique locationID.

  • Automated searches for spatial metadata occasionally produce incorrect results

because of the non-infinite resolution of spatial datasets and must be manually corrected.

A Solution

A solution to all these problems is possible if we store spatial metadata in simple tables in a standard directory. These tables will be referred to as collections. Location lookups can be performed with geodesic distance calculations where a location is assigned to a pre-existing known location if it is within distanceThreshold meters. These will be extremely fast.

If no previously known location is found, the relatively slow (seconds) creation of a new known location metadata record can be performed and then added to the growing collection.

For collections of stationary environmental monitors that only number in the thousands, an entire collection can be stored as either an .rda or .csv file and will be under a megabyte in size making it fast to load. This small size also makes it possible to store multiple known location files, each created with different locations and different distance thresholds to address the needs of different instruments or scientific studies.

Immediate Advantages

Working in this manner will solve the problems initially mentioned but also provides further useful functionality:

  • Administrators can correct entries in an individual collection. (e.g.

locations in river bends that even high resolution spatial datasets mis-assign)

  • Additional, non-automatable metadata can be added to a collection. (e.g.

commonly used location names within a community of practice)

  • Different field campaigns can maintain separate collections.
  • .csv or .rda versions of well populated tables can be downloaded from a

URL and used locally, giving scientists and analysts working with known locations instant access to location-specifc spatial metadata data that otherwise requires special skills, large datasets and many compute cycles to generate.


This project is supported by Mazama Science.

Copy Link

Version

Install

install.packages('MazamaLocationUtils')

Monthly Downloads

272

Version

0.2.0

License

GPL-3

Issues

Pull Requests

Stars

Forks

Maintainer

Jonathan Callahan

Last Published

October 5th, 2021

Functions in MazamaLocationUtils (0.2.0)

location_createID

Create one or more unique locationIDs
getLocationDataDir

Get location data directory
location_getSingleAddress_Photon

Get address data from the Photon API to OpenStreetMap
location_getCensusBlock

Get census block data from the FCC API
MazamaLocationUtils

Manage Spatial Metadata for Known Locations
LocationDataDir

Directory for location data
apiKeys

API keys for reverse geocoding services.
getAPIKey

Get API key
coreMetadataNames

Names of standard spatial metadata columns
id_monitors_500

Idaho monitor locations dataset
or_monitors_500

Oregon monitor locations dataset
mazama_initialize

Initialize with MazamaScience standard directories
%>%

Pipe operator
location_initialize

Create known location record with core metadata
setAPIKey

Set APIKey
table_getRecordIndex

Return indexes of known location records
table_initialize

Create an empty known location table
table_export

Export a known location table
table_findAdjacentDistances

Find distances between adjacent locations in a known locations table
table_leafletAdd

Add to a leaflet interactive map for known locations
setLocationDataDir

Set location data directory
table_load

Load a known location table
table_getNearestDistance

Return distances to nearest known locations
table_getNearestLocation

Return known locations
table_initializeExisting

Converts an existing table into a known location table
table_removeRecord

Remove location records from a table
table_removeColumn

Remove a column of metadata in a table
location_getSingleElevation_USGS

Get elevation data from a USGS web service
location_getSingleAddress_TexasAM

Get an address from a Texas A&M web service
wa_monitors_500

Wshington monitor locations dataset
table_addCoreMetadata

Addes missing metadata columns a known location table
table_getLocationID

Return IDs of known locations
table_addColumn

Add a new column of metadata to a table
table_findAdjacentLocations

Finds adjacent locations in a known locations table.
table_updateSingleRecord

Update a single known location record in a table
table_addSingleLocation

Add a single new known location record to a table
table_addLocation

Add new known location records to a table
validateLocationTbl

Validate a location table
validateLonLat

Validate longitude and latitude values
table_leaflet

Leaflet interactive map for known locations
table_save

Save a known location table
table_updateColumn

Update a column of metadata in a table
validateLonsLats

Validate longitude and latitude vectors
wa_airfire_meta

Washington monitor metadata dataset
validateMazamaSpatialUtils

Validate proper setup of MazamaSpatialUtils