{"id":28393762,"url":"https://github.com/mazamascience/mazamalocationutils","last_synced_at":"2026-02-05T06:03:57.458Z","repository":{"id":56934111,"uuid":"215816820","full_name":"MazamaScience/MazamaLocationUtils","owner":"MazamaScience","description":"A system for managing spatial metadata associated with known locations","archived":false,"fork":false,"pushed_at":"2024-12-03T20:15:01.000Z","size":1456,"stargazers_count":0,"open_issues_count":1,"forks_count":1,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-06-01T04:14:42.275Z","etag":null,"topics":["r"],"latest_commit_sha":null,"homepage":"https://mazamascience.github.io/MazamaLocationUtils/","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MazamaScience.png","metadata":{"files":{"readme":"README.md","changelog":"NEWS.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-10-17T14:45:10.000Z","updated_at":"2024-12-03T20:15:05.000Z","dependencies_parsed_at":"2022-08-21T00:40:28.499Z","dependency_job_id":"bcaa859a-d540-41a5-9379-540df39766bd","html_url":"https://github.com/MazamaScience/MazamaLocationUtils","commit_stats":{"total_commits":104,"total_committers":5,"mean_commits":20.8,"dds":"0.13461538461538458","last_synced_commit":"2deed08ef6335c73a544468e7e374543dcbc1138"},"previous_names":[],"tags_count":26,"template":false,"template_full_name":null,"purl":"pkg:github/MazamaScience/MazamaLocationUtils","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MazamaScience%2FMazamaLocationUtils","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MazamaScience%2FMazamaLocationUtils/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MazamaScience%2FMazamaLocationUtils/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MazamaScience%2FMazamaLocationUtils/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MazamaScience","download_url":"https://codeload.github.com/MazamaScience/MazamaLocationUtils/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MazamaScience%2FMazamaLocationUtils/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262056191,"owners_count":23251618,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["r"],"created_at":"2025-05-31T17:08:05.748Z","updated_at":"2026-02-05T06:03:57.420Z","avatar_url":"https://github.com/MazamaScience.png","language":"R","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![CRAN\\_Status\\_Badge](https://www.r-pkg.org/badges/version/MazamaLocationUtils)](https://cran.r-project.org/package=MazamaLocationUtils)\n[![Downloads](https://cranlogs.r-pkg.org/badges/MazamaLocationUtils)](https://cran.r-project.org/package=MazamaLocationUtils)\n[![DOI](https://zenodo.org/badge/215816820.svg)](https://zenodo.org/badge/latestdoi/215816820)\n\nA dedicated Slack channel has been created for announcements, support and to \nhelp build a community of practice around this open source package. You may \nrequest an invitation to join from \u003cjonathan.s.callahan@gmail.com\u003e.\n\n# MazamaLocationUtils\n\n```\nUtility functions for discovering and managing metadata associated \nwith spatially unique \"known locations\". Applications include all \nfields of environmental monitoring (e.g. air and water quality) where \ndata are collected at stationary sites.\n```\n\n## Background\n\nThis package is intended for use in data management activities\nassociated with fixed locations in space. The motivating fields include \nair and water quality monitoring where fixed sensors report at regular time \nintervals.\n\nWhen working with environmental monitoring time series, one of the first things\nyou have to do is create unique identifiers for each individual time series. In \nan ideal world, each environmental time series would have both a \n`locationID` and a `deviceID` that uniquely identify the specific instrument \nmaking measurements and the physical location where measurements are made. A \nunique `timeseriesID` could\nbe produced as `locationID_deviceID`. Metadata associated with each\n`timeseriesID` would contain basic information needed for downstream analysis\nincluding at least:\n\n`timeseriesID, locationID, deviceID, longitude, latitude, ...`\n\n* An extended time series for an occasionally repositioned sensor would group by `deviceID`.\n* Multiple sensors placed at a single location could be be grouped by `locationID`.\n* Maps would be created using `longitude, latitude`.\n* Time series measurements would be accessed from a secondary `data` table with \n`timeseriesID` column names.\n\nUnfortunately, we are rarely supplied with a truly unique and truly spatial \n`locationID`. Instead we often use `deviceID` or an associated non-spatial\nidentifier as a stand-in for `locationID`.\n\nComplications we have seen include:\n\n* GPS-reported longitude and latitude can have _jitter_ in the fourth or fifth \ndecimal place making it challenging to use them to create a unique `locationID`.\n* Sensors are sometimes _re-positioned_ in what the scientist considers the \"same \nlocation\".\n* Data from a single sensor goes through different processing pipelines using\ndifferent identifiers and is later brought together as two separate time series.\n* The spatial scale of what constitutes a \"single location\" depends on the \ninstrumentation and scientific question being asked.\n* Deriving location-based metadata from spatial datasets is computationally \nintensive unless saved and identified with a unique `locationID`.\n* Automated searches for spatial metadata occasionally produce incorrect results\nbecause of the non-infinite resolution of spatial datasets and must be corrected\nby hand.\n\n## A Solution\n\nA solution to all these problems is possible if we store spatial metadata in\nsimple tables in a standard directory. These tables will be referred to as \n_collections_. Location lookups can be performed with\ngeodesic distance calculations where a longitude-latitude pair is assigned to a pre-existing\n_known location_ if it is within `distanceThreshold` meters of that location. \nThese lookups will be extremely fast.\n\nIf no previously _known location_ is found, the relatively slow (seconds)\ncreation of a new _known location_ metadata record can be performed and then \nadded to the growing collection.\n\nFor collections of stationary environmental monitors that only number in the \nthousands, this entire _collection_ can be stored as either a \n`.rda` or `.csv` file and will be under a megabyte in size making it fast to \nload. This small size also makes it possible to save multiple _collections_ \nfiles, each created with different locations and/or different distance thresholds\nto address the needs of different scientific studies.\n\n## Immediate Advantages\n\nWorking in this manner solves the problems initially mentioned but also \nprovides further useful functionality:\n\n* Administrators can correct entries in an individual _collection_.  (_e.g._ \nlocations in river bends that even high resolution spatial datasets mis-assign)\n* Additional, non-automatable metadata can be added to a _collection_. (_e.g._\ncommonly used location names within a community of practice)\n* Different field campaigns can maintain separate _collections_.\n* `.csv` or `.rda` versions of well populated tables can be downloaded from a\nURL and used locally, giving scientists and analysts working with known locations \ninstant access to location-specific spatial metadata data that otherwise requires \nspecial software and skills, large datasets and many compute cycles to generate.\n\n----\n\nDevelopment of this R package has been supported with funding from the \nfollowing institutions:\n\n* USFS [AirFire Research Team](https://www.airfire.org)\n\nQuestions regarding further development of the package should be directed to \n\u003cjonathan.callahan@dri.edu\u003e.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmazamascience%2Fmazamalocationutils","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmazamascience%2Fmazamalocationutils","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmazamascience%2Fmazamalocationutils/lists"}