Introduction
xcengine turns Python Jupyter notebooks into Earth Observation Application Packages and Docker images bundling an xcube Server and Viewer.
Jupyter notebooks
Jupyter notebooks provide a web-based interactive development environment which integrates code, documentation, and output visualization.
Application packages
The Earth Observation Application Package is an increasingly popular format for packaging and deploying EO software tools. It is defined in a Best Practice document published by the Open Geospatial Consortium. An Application Package consists of two parts:
- A Docker container image containing the processing code to be packaged.
- A Common Workflow Language (CWL) file which defines how the code in the container image should be run, and what its available parameters, inputs, and outputs are.
Application Packages are designed to be run on cloud processing platforms, but can also be tested locally. Application Packages provide a great deal of power and flexibility; partly because of this flexibility, they can be complex and challenging to build from scratch.
xcube Server and Viewer
xcube is a mature and powerful Python framework for EO data processing and visualization. Amongst other features, it includes an API server and web viewer which can serve and visualize data from a wide variety of sources, both statically stored and fetched or processed on demand.
xcengine
xcengine takes Python Jupyter notebooks as input, and produces a Docker image and a CWL file which encapsulate the code contained in the notebook. Together these constitute an Application Package. The Docker image can also be run in an interactive, stand-alone mode to start up an xcube API server and web viewer, allowing the notebook's data to be exported via a variety of standard interfaces or explored visually and interactively.