The opencdms.process
package is intended to contain wrappers around capabilities from other (external) projects.
opencdms.process
has dependencies on external R libraries. The development may also include dependencies running on FreePascal and Node.JS. The use of Node.JS is intended to allow the same JavaScript validation code to be executed by the browser and also on the server. If a user does not have the necessary dependencies then useful error messages should be provided.
These instructions are for Debian/Ubuntu Linux. At the time of writing (October 2020) only Ubuntu 18.04 is supported. If you run into problems then please raise a new issue.
# Create a directory for the project from user's home directory (~)
mkdir -p ~/opencdms/processes
cd ~/opencdms/processes
# Clone opencdms-process, pyopencdms and opencdms-test-data
git clone https://github.com/opencdms/opencdms-process.git
git clone https://github.com/opencdms/pyopencdms.git
git clone https://github.com/opencdms/opencdms-test-data.git
# Create a virtual environment for installing Python dependencies
python3 -m venv opencdms-env
# Activate the virtual environment (the leading `.` is equivalent to `source`)
. opencdms-env/bin/activate
# Install dependencies used by `opencdms-process` and `pyopencdms`
pip3 install -r ~/opencdms/processes/opencdms-process/requirements.txt
pip3 install -r ~/opencdms/processes/pyopencdms/requirements.txt
pip3 install -r ~/opencdms/processes/pyopencdms/requirements_dev.txt
# Add `opencdms` to the virtual environment's python path
# If you used the system's `python3` to create the virtualenv then this will likely
# be `python3.6` on Ubuntu 18.04 and `python3.7` on Ubunutu 20.04
echo $HOME"/opencdms/processes/pyopencdms/" > opencdms-env/lib/python3.6/site-packages/opencdms.pth
import os
from pathlib import Path
from opencdms import MidasOpen
# Instead of using a database connection string, the MIDAS Open
# provider requires the root directory for the MIDAS Open data.
connection = os.path.join(
Path.home(), 'opencdms-dev', 'git', 'opencdms-test-data')
# All instances of CDMS Providers act as an active session
session = MidasOpen(connection)
filters = {
'src_id': 838,
'period': 'hourly',
'year': 1991,
'elements': ['wind_speed', 'wind_direction'],
}
# Get observations using filters
obs = session.obs(**filters)
# Save observations to CSV file
obs.to_csv('example_observations.csv')
process
from opencdms_process
can be used in pygeoapi
as process type
plugin.
Here is an example of how to use it in pygeoapi
config:
resources:
....
other resources
....
windrose-generator:
type: process
processor:
name: opencdms_process.process.climatol.windrose_generator.WindroseProcessor
On the pygeoapi
server, when you execute the process, you will get a base64
encoded string which is an PNG image containing a windrose chart.
You can display this base64 string in javascript as following:
var image = new Image();
image.src = BASE64_STRING_FROM_PYGEOAPI_SERVER;
document.body.appendChild(image);