Skip to main content

A light WMS server to visualise your NetCDf and Grib data

Project description

The skinny WMS is a small WMS server that will help you to visualise your NetCDF and Grib Data. The principle is simple: skinny will browse the directory, or the single file passed as argument, and try to interpret each NetCDF or GRIB files. From the metadata, it will be built the getCapabilities document, and find a relevant style to plot the data.

build Docker Build Status Docker PullsPyPI version Anaconda-Server Badge Anaconda-Server Badge

Features:

SkinnyWMS implements 3 of the WMS endpoints:

  • getCapabilities: Discover the data, build an XML Document presenting each identified parameter in the file(s) as a layer with the list of their predefined styles. (There is always a default style)
  • getMap : Return the selected layer suing the selected style.
  • getLegendGraphic: Return the legend.

Usage:

There are 2 ways to start using it, they both will start a small Flask server. Once running, a small leaflet client is accessible [http://127.0.0.1:5000/]

  • The demo:
python demo.py --path /path/to/mydata
  • The command line:
skinny-wms --path /path/to/mydata
  • Or with uwsgi:
uwsgi --http localhost:5000 --master --process 20 --mount /=skinnywms.wmssvr:application --env SKINNYWMS_DATA_PATH=/path/to/mydata

Run using Docker

By default the docker image will start the application using uwsgi and will load and display some demo data.

  • Run the demo:
docker run --rm -p 5000:5000 -it ecmwf/skinnywms 

Now you can try the leaflet demo at http://localhost:5000/

  • Run using data on your machine:
docker run --rm -p 5000:5000 -it \
    --volume=/path/to/my/data:/path/inside/the/container \
    --env SKINNYWMS_DATA_PATH=/path/inside/the/container \
      ecmwf/skinnywms

Now you can access the leaflet demo with your data at http://localhost:5000/

  • Configure different options by setting environment variables accordingly:
docker run --rm -p 5000:5000 -it \
    --volume=/path/to/my/data:/path/inside/the/container \
    --env SKINNYWMS_DATA_PATH=/path/inside/the/container \
    --env SKINNYWMS_HOST=0.0.0.0 \
    --env SKINNYWMS_PORT=5000 \
    --env SKINNYWMS_MOUNT=/mymodel/ \
    --env SKINNYWMS_UWSGI_WORKERS=4 \
    --env SKINNYWMS_ENABLE_DIMENSION_GROUPING=1 \
      ecmwf/skinnywms

Now you can access the ```GetCapabilities`` document for your data at http://localhost:5000/mymodel/wms?request=GetCapabilities

Installation

SkinnyWMS depends on the ECMWF Magics library.

If you do not have Magics installed on your platform, skinnywms is available on conda forge https://conda-forge.org/

conda config --add channels conda-forge
conda install skinnywms

If you have Magics already installed you can use pip:

pip install skinnywms

Limitations:

  • SkinnyWMS will perform better on well formatted and documented NetCDF and GRIB.

  • grib fields containing corresponding wind components u,v need to be placed together in a single grib file in order to be displayed as vectors/wind barbs in SkinnyWMS. You can combine multiple grib files into a single file using ecCodes grib_copy (included in the docker image), e.g.:

grib_copy input_wind_u_component.grb2 input_wind_v_component.grib2 output_wind_u_v_combined.grb2

Add your own styles:

Multi-process

Cache

How to install Magics

that must be installed on the system and accessible as a shared library. Some Linux distributions ship a binary version that may be installed with the standard package manager.

As an alternative you may install the official source distribution by following the instructions at https://software.ecmwf.int/magics/Installation+Guide Magics is available on github https://github.com/ecmwf/magics

Note that Magics support for the Windows operating system is experimental.

Start up a local development environment (Docker)

Make sure you have Docker and docker-compose installed. Then run:

docker-compose up

This will build a dev image and start up a local flask development server (with automatic reload on code changes) at http://localhost:5000 based on the configuration stored in docker-compose.yml and .env and by default try to load all GRIB and NetCDF data stored in skinnywms/testdata.

Contributing

The main repository is hosted on GitHub, testing, bug reports and contributions are highly welcomed and appreciated:

https://github.com/ecmwf/skinnywms https://github.com/ecmwf/magics-python https://github.com/ecmwf/magics

Please see the CONTRIBUTING.rst document for the best way to help.

Lead developers:

  • Sylvie Lamy-Thepaut <https://github.com/sylvielamythepaut>_ - ECMWF
  • Baudouin Raoult <https://github.com/b8raoult> - ECMWF
  • Eduard Rosert <https://github.com/eduardRosert> - ECMWF

Main contributors:

  • Stephan Siemen <https://github.com/stephansiemen>_ - ECMWF
  • Milana Vuckovic <https://github.com/milanavuckovic> - ECMWF

License

Copyright 2017-2019 European Centre for Medium-Range Weather Forecasts (ECMWF).

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at: http://www.apache.org/licenses/LICENSE-2.0. Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

skinnywms-0.9.0.tar.gz (12.6 MB view details)

Uploaded Source

Built Distribution

skinnywms-0.9.0-py3-none-any.whl (12.6 MB view details)

Uploaded Python 3

File details

Details for the file skinnywms-0.9.0.tar.gz.

File metadata

  • Download URL: skinnywms-0.9.0.tar.gz
  • Upload date:
  • Size: 12.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.4

File hashes

Hashes for skinnywms-0.9.0.tar.gz
Algorithm Hash digest
SHA256 0b02cd9f6bc9d24ee11693cef545e46461ec967dbb79600d1d1ef034278632e2
MD5 a426a36f3acc1c47e4ff8129ef1904b6
BLAKE2b-256 d3afe745d18e4e3e3af7c61a8f4df6a92d1974734d7dcf1d1d3b5807f9ce0214

See more details on using hashes here.

File details

Details for the file skinnywms-0.9.0-py3-none-any.whl.

File metadata

  • Download URL: skinnywms-0.9.0-py3-none-any.whl
  • Upload date:
  • Size: 12.6 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.4

File hashes

Hashes for skinnywms-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fb7d5a27261c6bd94c986d60990feb12daf37a791da8dc83368f52d58b3e12da
MD5 daed96ccb7e74243df469c176babfebb
BLAKE2b-256 58f84fffc43c6b060a6e26cec15d7ff0a81b11eebc5875f546b80d968b8270e0

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page