With the release of version 1.0 (opens new window) of the EOxServer (opens new window) achieved it is a good time to shed some light on this workhorse software more than ten years in active development. Even before this milestone, EOxServer was and is used in quite a number of operational deployments, most notably in the VirES line of projects and others like the Copernicus Space Component Data Access system (CSCDA) (opens new window) (shown in the images below), Mundi Web Services (opens new window), EO-CAT (opens new window), or more recently Earth Observation Exploitation Platform Common Architecture (opens new window).
# What is EOxServer?
In simple terms: EOxServer is an EO Raster Data server that catalogs EO Products and provides access to stored data via open interfaces. The most simple case would be to have a couple of TIFF files on the local disk which shall be made accessible, but EOxServer can provide much more functionality and is very flexible in terms of storage back-ends, processing, and structure.
For example, in a cloud native setup, the data is likely stored on an Object Storage. EOxServer provides both S3 and OpenStack Swift support, which means the files can be indexed from there and do not need to be stored locally. Alternatively, files can be accessed from pure HTTP as well and for some retro-enthusiasts even FTP back-ends. The benefits from that flexibility are quite obvious: EOxServer can adapt to existing storage solutions, but can also benefit from more modern architectures.
In order to structure the incoming data, EOxServer provides a refined data model to both keep integrity, but also provide additional functionality on top of a pure data access. For example, an application operator may want to expose their Red-Green-Blue-Near Infrared data in a raw fashion, but also may want to provide dynamic renderings on top of that. This may be a simple true color visualization using the Red, Green, and Blue bands, but for these kinds of files often a false color composite using the Near Infrared, Red, and Green bands is also very common. Such dynamic views on the data can easily be made available using EOxServer, without the necessity to duplicate any file or pre-generate the visualizations.
# Serviced with a smile
On the front side, EOxServer supports various protocols out of the box. This includes the Open Geospatial Consortium's Web Services (OGC OWS) family of protocols Web Coverage Service, Web Map Service, and Web Processing Service. The former provides access to the raw values, which is especially useful for multi-spectral or higher bit-depth data such as Digital Elevation Models (DEM). WMS provides rendered maps that can very easily be integrated in a variety of clients to provide layers of mapping applications. Here the visualizations detailed earlier come into play: each stored collection can be accessed as a layer for each rendering method available. For visualizations that produce only a single channel output, one of various color-scales can be used to colorize the output.
When visualizing longer time periods resulting in more intersecting products, it may be needed to filter the resulting products based on their metadata. For this reason, the WMS interface supports the optional non-standard
cql parameter, where filter parameters in CQL syntax can be passed. For example, this can be used to only include images that have a lower cloud coverage than a certain value:
...&cql=cloudCover < 10.
It is also possible to create custom processes and expose them via the integrated WPS. This allows to specify various kinds of parameters, synchronous or asynchronous processing and single or multiple outputs in custom formats.
When dealing with large collections of EO data often a search interface is required to allow for a suitable dissemination. For this reason EOxServer provides an OpenSearch interface including its time, geo, and EO extensions to allow for fine grained filters over the indexed metadata. If even that filtering method is too crude, it is possible to pass custom filters using the same
CQL syntax as with WMS.
# Ready-to-go Setup
By providing open interfaces it is easy to integrate offered data into a user client interface application such as QGIS. But that may not even be necessary, as EOxServer ships with a client of its own: an instance of EOxC (opens new window), always configured and up to date with the contents of the service. With that client, users can browse the contents of the service, inspect the data and its various configured visualizations and download specific scenes or subsets as shown in the image above and the two below.
On top of the already existing functionality EOxServer is built with extensibility in mind. It is quite easy to extend its capabilities at any point in the software architecture. This is demonstrated by its usage in very specific fields, such as magnetospheric or atmospheric missions with data from the Swarm or Aeolus missions respectively. Even in planetary sciences EOxServer was successfully deployed.
# What's next? - View Server
We are currently dedicating quite a lot of efforts into the View Server (opens new window) which in its heart is relying on EOxServer and is adding cloud native configuration and deployment. We'll introduce the View Server in a future post but please get in touch if you're already interested to use it.