├── LICENSE └── README.md /LICENSE: -------------------------------------------------------------------------------- 1 | BSD 3-Clause License 2 | 3 | Copyright (c) 2017, Observations Data Model 2 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | * Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | 12 | * Redistributions in binary form must reproduce the above copyright notice, 13 | this list of conditions and the following disclaimer in the documentation 14 | and/or other materials provided with the distribution. 15 | 16 | * Neither the name of the copyright holder nor the names of its 17 | contributors may be used to endorse or promote products derived from 18 | this software without specific prior written permission. 19 | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 23 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 24 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 26 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 27 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 28 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Welcome to the ODM2 Organization 2 | This is a meta-repository to help navigate the many repositories under the [ODM2 GitHub Organization](https://github.com/ODM2). 3 | 4 | ODM2 is both an information model and a supporting software ecosystem. The ODM2 development team is a group of researchers working across geoscience disciplines to develop and implement the ODM2 information model and supporting software tools for collecting, storing, managing, and sharing feature-based Earth Observations in a way that extends interoperability, improves data sharing, and supports scientific research. 5 | 6 | * View primary [documentation](https://github.com/ODM2/ODM2/wiki/documentation) for the ODM2 Information Model* 7 | 8 | # ODM2 GitHub Repositories and Software Ecosystem 9 | The following are all active development repositories for different tools related to ODM2. 10 | 11 | **ODM2 Blank RDBMS Schemas**: SQL Scripts for generating blank ODM2 databases 12 | * Support for multiple RDBMS 13 | * MS SQL Server 14 | * MySQL 15 | * PostgreSQL 16 | * SQLite 17 | * SQL scripts to create blank instances of ODM2 databases 18 | * SQL script(s) to convert ODM 1.1.1 databases to ODM2 databases 19 | * [Python script to automatically load CV terms](https://github.com/ODM2/ODM2/tree/master/src/load_cvs) from the master lists at http://vocabulary.odm2.org into a blank instance of an ODM2 database. 20 | * [https://github.com/ODM2/ODM2](https://github.com/ODM2/ODM2) 21 | 22 | **ODM2 Controlled Vocabularies**: A Python/Django-based web application for managing the ODM2 controlled vocabularies 23 | * Online submittal and moderation of new terms and changes to existing terms 24 | * Views of all existing vocabularies and terms 25 | * REST-based web services exposing the vocabularies using SKOS 26 | * Application deployed at [http://vocabulary.odm2.org](http://vocabulary.odm2.org) 27 | * [https://github.com/ODM2/ODM2ControlledVocabularies](https://github.com/ODM2/ODM2ControlledVocabularies) 28 | 29 | **ODM2 Python API**: A Python API for ODM2 developers 30 | * SQL Alchemy based 31 | * Cross platform compatible 32 | * Interaction with an ODM2 database instance via Python 33 | * Supports objects and methods for ODM2 34 | * [https://github.com/ODM2/ODM2PythonAPI](https://github.com/ODM2/ODM2PythonAPI) 35 | 36 | **ODM Tools Python**: A Python-based desktop application for visualization, management, and quality control of environmental time series data stored in an ODM database 37 | * Releases are available for ODM 1.1.1 and ODM2 38 | * Based on the ODM2 Python API 39 | * Cross platform compatible 40 | * Time series selection and plotting 41 | * Summary statistics 42 | * Data export to text 43 | * Automated Python scripting of time series quality control 44 | * [https://github.com/ODM2/ODMToolsPython](https://github.com/ODM2/ODMToolsPython) 45 | 46 | **ODM2 YAML Observations Data Archive (YODA) Format and Excel Templates**: A text-based data exchange format for ODM2 Datasets based on YAML and Microsoft Excel data templates for preparing data to be loaded into an ODM2 database instance. 47 | * Multiple profiles for ODM2 Result types, 48 | * Time series 49 | * Specimen time series 50 | * Specimen datasets 51 | * Excel based template(s) for data entry and then export as YODA files or import to and ODM2 database using the ODM2 Data Loader 52 | * [https://github.com/ODM2/YODA-File](https://github.com/ODM2/YODA-File) 53 | 54 | **ODM2 Data Loader**: A Python-based desktop program for opening a YODA file or correctly formatted Microsoft Excel template and loading it into an ODM2 database. Also enables export of Excel template or YODA files. 55 | * Based on the ODM2 Python API 56 | * Opens YODA files, parses, validates, and then loads dataset to an ODM2 database 57 | * Opens Excel template files, parses, validates, and then loads dataset to an ODM2 database 58 | * Provides tools for converting between Excel templates and YODA files 59 | * Cross platform compatible 60 | * [https://github.com/ODM2/YODA-Tools](https://github.com/ODM2/YODA-Tools) 61 | 62 | **ODM2 Streaming Data Loader**: A Python-based desktop application for loading table-based datalogger files into an ODM2 database. 63 | * Based on the ODM2 Python API 64 | * Cross platform and cross database compatible (i.e., MSSQL, MySQL, PostgreSQL, SQLite) 65 | * Consists of a GUI for configuration and an executable for scheduled execution 66 | * Can be scheduled to automate data loading process for sensor data into an ODM2 database 67 | * [https://github.com/ODM2/ODM2StreamingDataLoader](https://github.com/ODM2/ODM2StreamingDataLoader) 68 | 69 | **ODM2 Equipment Management**: A Python/Django-based web application for managing field monitoring equipment 70 | * Manages metadata about site locations, site visits, field activities, instrument deployments/retrievals, calibrations, etc. 71 | * Uses the ODM2 Equipment extension 72 | * [https://github.com/UCHIC/ODM2Sensor](https://github.com/UCHIC/ODM2Sensor) 73 | 74 | **WaterOneFlow for ODM2**: A Python web service for publishing time series observations stored in an ODM2 database using standard CUAHSI WaterOneFlow interface and WaterML XML encoding. 75 | * Based on WOFPy 76 | * Currently limited to time series Results from ODM2 77 | * [https://github.com/ODM2/WOFpy](https://github.com/ODM2/WOFpy) 78 | 79 | **ODM2 RESTful Web Services**: A RESTful web service interface for delivering data from an ODM2 database 80 | * More extensive than WaterOneFlow 81 | * Capable of delivering multiple data/result types (not limited to time series) 82 | * [https://github.com/ODM2/ODM2RESTfulWebServices](https://github.com/ODM2/ODM2RESTfulWebServices) 83 | 84 | **Time Series Analyst**: A Python/Django-based web application for visualizing environmental time series data. 85 | * Retrieves data from a WaterOneFlow web service 86 | * Uses a simple catalog service built when the application is deployed 87 | * Visualizations developed using D3.js 88 | * [https://github.com/UCHIC/WEBTSA](https://github.com/UCHIC/WEBTSA) 89 | 90 | **HydroShare ODM2 Time Series**: An implementation of ODM2 in SQLite for storing hydrologic time series in HydroShare 91 | * Online import of time series as either an ODM2 SQLite database or simple CSV table 92 | * Online editing of ODM2/HydroShare metadata and syncing with the underlying SQLite database 93 | * Export of an ODM2 compliant SQLite database 94 | * Deployed in HydroShare at https://www.hydroshare.org 95 | * [https://github.com/hydroshare/hydroshare](https://github.com/hydroshare/hydroshare) 96 | 97 | **ODM2 Web Streaming Data Loader**: A Python/Django-based web application and web service for registering data collection devices and allowing them to stream sensor observations into an online instance of an ODM2 database. 98 | * Enabling citizen science with Stroud Water Research Center and Enviro DIY Arduino dataloggers 99 | * Implements simple REST web service for devices to POST data to the service and have it stored in an ODM2 database instance as the backend 100 | * Implements a front end website for users to register sites/data collection devices, list the observed variables, and create the metadata needed to enable data streaming. 101 | * Currently deployed at http://data.envirodiy.org 102 | * [https://github.com/ODM2/ODM2WebSDL](https://github.com/ODM2/ODM2WebSDL) 103 | 104 | **ODM2 Admin**: A web-based Django/Python admin app for an ODM2 database instance. 105 | * Provides data input capabilities 106 | * Includes simple data visualizations for time series and environmental specimens 107 | * Functionality for managing data derived from environmental specimens 108 | * [https://github.com/ODM2/ODM2-Admin](https://github.com/ODM2/ODM2-Admin) 109 | 110 | # Support and Credits 111 | ODM2 and related software have been developed under funding from several different sources. This work was supported by National Science Foundation Grants [EAR-1224638](http://www.nsf.gov/awardsearch/showAward?AWD_ID=1224638), [ACI-1339834](https://www.nsf.gov/awardsearch/showAward?AWD_ID=1339834)). Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation. 112 | 113 | ODM2 draws heavily from our prior work with the CUAHSI Hydrologic information system and ODM 1.1.1 (Horsburgh et al., 2008; Horsburgh and Tarboton, 2008), our experiences working on the Critical Zone Observatory Integrated Data Management System (CZOData), and our experiences with the EarthChem systems (e.g., Lehnert et al., 2007; 2009). It also extensively uses concepts from the Open Geospatial Consortium's Observations & Measurements standard (Cox, 2007a; 2007b; 2011a; 2011b; ISO, 2011). 114 | 115 | # References 116 | [See a full list of ODM2 related references](https://github.com/ODM2/ODM2/wiki/References) 117 | --------------------------------------------------------------------------------