Package: skinnywms
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.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:pythondemo.py--path/path/to/mydataThe command line:skinny-wms--path/path/to/mydataOr with uwsgi:uwsgi--httplocalhost:5000--master--process20--mount/=skinnywms.wmssvr:application--envSKINNYWMS_DATA_PATH=/path/to/mydataRun using DockerBy default the docker image will start the application using uwsgi and will load and display some demo data.Run the demo:dockerrun--rm-p5000:5000-itecmwf/skinnywmsNow you can try the leaflet demo athttp://localhost:5000/Run using data on your machine:dockerrun--rm-p5000:5000-it\--volume=/path/to/my/data:/path/inside/the/container\--envSKINNYWMS_DATA_PATH=/path/inside/the/container\ecmwf/skinnywmsNow you can access the leaflet demo with your data athttp://localhost:5000/Configure different options by setting environment variables accordingly:dockerrun--rm-p5000:5000-it\--volume=/path/to/my/data:/path/inside/the/container\--envSKINNYWMS_DATA_PATH=/path/inside/the/container\--envSKINNYWMS_HOST=0.0.0.0\--envSKINNYWMS_PORT=5000\--envSKINNYWMS_MOUNT=/mymodel/\--envSKINNYWMS_UWSGI_WORKERS=4\--envSKINNYWMS_ENABLE_DIMENSION_GROUPING=1\ecmwf/skinnywmsNow you can access the ```GetCapabilities`` document for your data athttp://localhost:5000/mymodel/wms?request=GetCapabilitiesInstallationSkinnyWMS  depends on the ECMWFMagicslibrary.If you do not haveMagicsinstalled on your platform, skinnywms is available on conda forgehttps://conda-forge.org/condaconfig--addchannelsconda-forge
condainstallskinnywmsIf you haveMagicsalready installed you can use pip:pipinstallskinnywmsLimitations: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 ecCodesgrib_copy(included in the docker image), e.g.:grib_copyinput_wind_u_component.grb2input_wind_v_component.grib2output_wind_u_v_combined.grb2The time and elevation dimension implementations followOGC Met Ocean DWG WMS 1.3 Best Practice for using Web Map Services (WMS) with Time-Dependent or Elevation-Dependent Data. To enable dimension grouping (disabled by default) set the environment variableSKINNYWMS_ENABLE_DIMENSION_GROUPING=1development stage:Alpha,Add your own stylesMulti-processCacheHow to install Magicsthat 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 athttps://software.ecmwf.int/magics/Installation+GuideMagics is available on githubhttps://github.com/ecmwf/magicsNote thatMagicssupport for the Windows operating system is experimental.Alternatively you can use theecmwflibs package(currently inAlphadevelopment stage) to install magics and eccodes libraries:pip install ecmwflibsStart up a local development environment (Docker)Make sure you haveDockeranddocker-composeinstalled. Then run:docker-composeupThis will build a dev image and start up a local flask development server (with automatic reload on code changes) athttp://localhost:5000based on the configuration stored indocker-compose.ymland.envand by default try to load all GRIB and NetCDF data stored inskinnywms/testdata.ContributingThe main repository, as well as related projects are hosted on GitHub.
Testing, bug reports and contributions to all our projects are highly welcomed and appreciated:https://github.com/ecmwf/skinnywmshttps://github.com/ecmwf/magics-pythonhttps://github.com/ecmwf/magicshttps://github.com/ecmwf/eccodeshttps://github.com/ecmwf/ecmwflibsLead developers:Sylvie Lamy-Thepaut <https://github.com/sylvielamythepaut>_ - ECMWFBaudouin Raoult <https://github.com/b8raoult>- ECMWFEduard Rosert <https://github.com/EduardRosert>- ECMWFMain contributors:Stephan Siemen <https://github.com/stephansiemen>_ - ECMWFMilana Vuckovic <https://github.com/milanavuckovic>- ECMWFLicenseCopyright 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.