diff --git a/notebooks/attenuation/wradlib_attenuation.ipynb b/notebooks/attenuation/wradlib_attenuation.ipynb index d41a6fc2..f1b433b4 100644 --- a/notebooks/attenuation/wradlib_attenuation.ipynb +++ b/notebooks/attenuation/wradlib_attenuation.ipynb @@ -56,7 +56,7 @@ } }, "source": [ - "Rainfall-induced attenuation is a major source of underestimation for radar-based precipitation estimation at C-band and X-band. Unconstrained forward gate-by-gate correction is known to be inherently unstable and thus not suited for unsupervised quality control procedures. Ideally, reference measurements (e.g. from microwave links) should be used to constrain gate-by-gate procedures. However, such attenuation references are usually not available. $\\omega radlib$ provides a pragmatic approach to constrain gate-by-gate correction procedures, inspired by the work of [Kraemer et al., 2008](http://docs.wradlib.org/en/latest/zreferences.html#kraemer2008). It turned out that these procedures can effectively reduce the error introduced by attenuation, and, at the same time, minimize instability issues [(Jacobi et al., 2016)](http://docs.wradlib.org/en/latest/zreferences.html#jacobi2015)." + "Rainfall-induced attenuation is a major source of underestimation for radar-based precipitation estimation at C-band and X-band. Unconstrained forward gate-by-gate correction is known to be inherently unstable and thus not suited for unsupervised quality control procedures. Ideally, reference measurements (e.g. from microwave links) should be used to constrain gate-by-gate procedures. However, such attenuation references are usually not available. $\\omega radlib$ provides a pragmatic approach to constrain gate-by-gate correction procedures, inspired by the work of [Kraemer et al., 2008](http://docs.wradlib.org/en/latest/zreferences.html#kraemer2008). It turned out that these procedures can effectively reduce the error introduced by attenuation, and, at the same time, minimize instability issues [(Jacobi et al., 2016)](http://docs.wradlib.org/en/latest/zreferences.html#jacobi2016)." ] }, { @@ -131,7 +131,7 @@ "outputs": [], "source": [ "pl.figure(figsize=(10,8))\n", - "ax, cf = wrl.vis.plot_ppi(data, cmap=\"nipy_spectral\")\n", + "ax, cf = wrl.vis.plot_ppi(data, cmap=\"viridis\")\n", "pl.xlabel(\"Easting from radar (km)\")\n", "pl.ylabel(\"Northing from radar (km)\")\n", "pl.title(\"Radar Feldberg, 2008-06-02 16:55 UTC\")\n", diff --git a/notebooks/basics/wradlib_get_rainfall.ipynb b/notebooks/basics/wradlib_get_rainfall.ipynb index f2578a3e..eadbb330 100644 --- a/notebooks/basics/wradlib_get_rainfall.ipynb +++ b/notebooks/basics/wradlib_get_rainfall.ipynb @@ -137,7 +137,7 @@ "The figure shows a 15 minute accumulation of rainfall which was produced from three consecutive radar\n", "scans at 5 minute intervals between 17:30 and 17:45 on June 8, 2008.\n", "\n", - "The radar data are read using [wradlib.io.read_dx](http://docs.wradlib.org/en/latest/generated/wradlib.io.read_dx.html) function which returns an array of dBZ values and a metadata dictionary (see also [Reading-DX-Data](../fileio/wradlib_reading_dx.ipynb#Reading-DX-Data)). The conversion is carried out the same way as in the example above. The plot is produced using\n", + "The radar data are read using [wradlib.io.read_dx](http://docs.wradlib.org/en/latest/generated/wradlib.io.radolan.read_dx.html) function which returns an array of dBZ values and a metadata dictionary (see also [Reading-DX-Data](../fileio/wradlib_reading_dx.ipynb#Reading-DX-Data)). The conversion is carried out the same way as in the example above. The plot is produced using\n", "the function [wradlib.vis.plot_ppi](http://docs.wradlib.org/en/latest/generated/wradlib.vis.plot_ppi.html)." ] }, @@ -202,7 +202,7 @@ "outputs": [], "source": [ "pl.figure(figsize=(10,8))\n", - "ax, cf = wrl.vis.plot_ppi(accum, cmap=\"nipy_spectral\")\n", + "ax, cf = wrl.vis.plot_ppi(accum, cmap=\"viridis\")\n", "pl.xlabel(\"Easting from radar (km)\")\n", "pl.ylabel(\"Northing from radar (km)\")\n", "pl.title(\"Radar Feldberg\\n15 min. rainfall depth, 2008-06-02 17:30-17:45 UTC\")\n", diff --git a/notebooks/basics/wradlib_workflow.ipynb b/notebooks/basics/wradlib_workflow.ipynb index 86629fe3..dd569117 100644 --- a/notebooks/basics/wradlib_workflow.ipynb +++ b/notebooks/basics/wradlib_workflow.ipynb @@ -497,7 +497,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Second, you can provide a string which represents the projection - based on the [PROJ.4 library](https://trac.osgeo.org/proj/). You can [look up projection strings](http://www.spatialreference.org/), but for some projections, $\\omega radlib$ helps you to define a projection string. In the following example, the target projection is 'dwd-radolan':" + "Second, you can provide a string which represents the projection - based on the [PROJ.4 library](http://proj4.org/). You can [look up projection strings](http://www.spatialreference.org/), but for some projections, $\\omega radlib$ helps you to define a projection string. In the following example, the target projection is 'dwd-radolan':" ] }, { diff --git a/notebooks/beamblockage/wradlib_beamblock.ipynb b/notebooks/beamblockage/wradlib_beamblock.ipynb index 9ca24de5..ec1d518a 100644 --- a/notebooks/beamblockage/wradlib_beamblock.ipynb +++ b/notebooks/beamblockage/wradlib_beamblock.ipynb @@ -49,7 +49,7 @@ "- the local radar setup (sitecoords, number of rays, number of bins, antenna elevation, beamwidth, and the range resolution);\n", "- a **DEM** with a adequate resolution. \n", "\n", - "Here we use pre-processed data from the [GTOPO30](https://lta.cr.usgs.gov/GTOPO30) and [SRTM](http://www2.jpl.nasa.gov/srtm) missions." + "Here we use pre-processed data from the [GTOPO30](https://lta.cr.usgs.gov/GTOPO30) and [SRTM](https://www2.jpl.nasa.gov/srtm/) missions." ] }, { diff --git a/notebooks/classify/wradlib_fuzzy_echo_classify.ipynb b/notebooks/classify/wradlib_fuzzy_echo_classify.ipynb index 3a7af17b..4537be3e 100644 --- a/notebooks/classify/wradlib_fuzzy_echo_classify.ipynb +++ b/notebooks/classify/wradlib_fuzzy_echo_classify.ipynb @@ -130,7 +130,7 @@ } }, "source": [ - "See [Crisologo et al. (2015)](http://link.springer.com/article/10.1007/s13143-014-0049-y) and [Vulpiani et al. (2012)](http://journals.ametsoc.org/doi/abs/10.1175/JAMC-D-10-05024.1) for details." + "See [Crisologo et al. (2015)](https://link.springer.com/article/10.1007/s13143-014-0049-y) and [Vulpiani et al. (2012)](https://journals.ametsoc.org/doi/abs/10.1175/JAMC-D-10-05024.1) for details." ] }, { diff --git a/notebooks/fileio/wradlib_radar_formats.ipynb b/notebooks/fileio/wradlib_radar_formats.ipynb index 2e34e98e..ae308a13 100644 --- a/notebooks/fileio/wradlib_radar_formats.ipynb +++ b/notebooks/fileio/wradlib_radar_formats.ipynb @@ -171,7 +171,7 @@ } }, "source": [ - "The quantitative composite format of the DWD (German Weather Service) was established in the course of the [RADOLAN project](https://www.dwd.de/RADOLAN). Most quantitative composite products from the DWD are distributed in this format, e.g. the R-series (RX, RY, RH, RW, ...), the S-series (SQ, SH, SF, ...), and the E-series (European quantitative composite, e.g. EZ, EH, EB). Please see the [composite format description](https://www.dwd.de/DE/leistungen/radolan/radolan_info/radolan_radvor_op_komposit_format_pdf.pdf?__blob=publicationFile&v=5) for a full reference and a full table of products (unfortunately only in German language). An extensive section covering many RADOLAN aspects is here: [RADOLAN](../radolan.ipynb)\n", + "The quantitative composite format of the DWD (German Weather Service) was established in the course of the [RADOLAN project](https://www.dwd.de/DE/leistungen/radolan/radolan.html). Most quantitative composite products from the DWD are distributed in this format, e.g. the R-series (RX, RY, RH, RW, ...), the S-series (SQ, SH, SF, ...), and the E-series (European quantitative composite, e.g. EZ, EH, EB). Please see the [composite format description](https://www.dwd.de/DE/leistungen/radolan/radolan_info/radolan_radvor_op_komposit_format_pdf.pdf?__blob=publicationFile&v=5) for a full reference and a full table of products (unfortunately only in German language). An extensive section covering many RADOLAN aspects is here: [RADOLAN](../radolan.ipynb)\n", "\n", "Currently, the RADOLAN composites have a spatial resolution of 1km x 1km, with the national composits (R- and S-series) being 900 x 900 grids, and the European composits 1500 x 1400 grids. The projection is [polar-stereographic](../radolan/radolan-grid.ipynb#Polar-Stereographic-Projection). The products can be read by the following function:" ] @@ -293,7 +293,7 @@ } }, "source": [ - "[HDF5](https://www.hdfgroup.org/HDF5/) is a data model, library, and file format for storing and managing data. The [OPERA 3 program](http://www.eumetnet.eu/opera) developed a convention (or information model) on how to store and exchange radar data in hdf5 format. It is based on the work of [COST Action 717](http://www.smhi.se/hfa_coord/cost717) and is used e.g. in real-time operations in the Nordic European countries. The OPERA Data and Information Model (ODIM) is documented e.g. in this [report](https://www.eol.ucar.edu/system/files/OPERA_2008_03_WP2.1b_ODIM_H5_v2.1.pdf) and in a [UML representation](http://www.eumetnet.eu/sites/default/files/OPERA_2008_18_WP2.1b_ODIM_UML.pdf). Make use of these documents in order to understand the organization of OPERA hdf5 files!\n", + "[HDF5](https://www.hdfgroup.org/HDF5/) is a data model, library, and file format for storing and managing data. The [OPERA 3 program](http://www.eumetnet.eu/opera) developed a convention (or information model) on how to store and exchange radar data in hdf5 format. It is based on the work of [COST Action 717](https://e-services.cost.eu/files/domain_files/METEO/Action_717/final_report/final_report-717.pdf) and is used e.g. in real-time operations in the Nordic European countries. The OPERA Data and Information Model (ODIM) is documented e.g. in this [report](https://www.eol.ucar.edu/system/files/OPERA_2008_03_WP2.1b_ODIM_H5_v2.1.pdf). Make use of these documents in order to understand the organization of OPERA hdf5 files!\n", "\n", "The hierarchical nature of HDF5 can be described as being similar to directories, files, and links on a hard-drive. Actual metadata are stored as so-called *attributes*, and these attributes are organized together in so-called *groups*. Binary data are stored as so-called *datasets*. As for ODIM_H5, the ``root`` (or top level) group contains three groups of metadata: these are called ``what`` (object, information model version, and date/time information), ``where`` (geographical information), and ``how`` (quality and optional/recommended metadata). For a very simple product, e.g. a CAPPI, the data is organized in a group called ``dataset1`` which contains another group called ``data1`` where the actual binary data are found in ``data``. In analogy with a file system on a hard-disk, the HDF5 file containing this simple product is organized like this:\n", "\n", @@ -361,7 +361,7 @@ } }, "source": [ - "Please note that in order to experiment with such datasets, you can download hdf5 sample data from the [Odyssey page](http://www.eumetnet.eu/odyssey-opera-data-centre) of the [OPERA 3 homepage](http://www.eumetnet.eu/opera) or use the example data provided with the [wradlib-data](https://github.com/wradlib/wradlib-data/) repository." + "Please note that in order to experiment with such datasets, you can download hdf5 sample data from the [OPERA](http://eumetnet.eu/activities/observations-programme/current-activities/opera/) or use the example data provided with the [wradlib-data](https://github.com/wradlib/wradlib-data/) repository." ] }, { @@ -571,7 +571,7 @@ } }, "source": [ - "The NetCDF format also claims to be self-describing. However, as for all such formats, the developers of netCDF also admit that \"[...] the mere use of netCDF is not sufficient to make data self-describing and meaningful to both humans and machines [...]\" (see [here](http://www.unidata.ucar.edu/software/netcdf/documentation/historic/netcdf/Conventions.html). Different radar operators or data distributors will use different naming conventions and data hierarchies (i.e. \"data models\") that the reading program might need to know about.\n", + "The NetCDF format also claims to be self-describing. However, as for all such formats, the developers of netCDF also admit that \"[...] the mere use of netCDF is not sufficient to make data self-describing and meaningful to both humans and machines [...]\" (see [here](https://www.unidata.ucar.edu/software/netcdf/documentation/historic/netcdf/Conventions.html). Different radar operators or data distributors will use different naming conventions and data hierarchies (i.e. \"data models\") that the reading program might need to know about.\n", "\n", "$\\omega radlib$ provides two solutions to address this challenge. The first one ignores the concept of data models and just pulls all data and metadata from a NetCDF file ([wradlib.io.read_generic_netcdf()](http://docs.wradlib.org/en/latest/generated/wradlib.io.netcdf.read_generic_netcdf.html). The second is designed for a specific data model used by the EDGE software ([wradlib.io.read_edge_netcdf()](http://docs.wradlib.org/en/latest/generated/wradlib.io.netcdf.read_edge_netcdf.html))." ] @@ -755,7 +755,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "[IRIS](http://www.vaisala.com/en/defense/products/weatherradar/Pages/IRIS.aspx) refers to the commercial Vaisala Sigmet **I**nteractive **R**adar **I**nformation **S**ystem. The Vaisala Sigmet Digital Receivers export data in a [well documented](ftp://ftp.sigmet.com/outgoing/manuals/IRIS_Programmers_Manual.pdf) binary format.\n", + "[IRIS](https://www.vaisala.com/en/products/instruments-sensors-and-other-measurement-devices/weather-radar-products/iris-focus) refers to the commercial Vaisala Sigmet **I**nteractive **R**adar **I**nformation **S**ystem. The Vaisala Sigmet Digital Receivers export data in a [well documented](ftp://ftp.sigmet.com/outgoing/manuals/IRIS_Programmers_Manual.pdf) binary format.\n", "\n", "The philosophy behind the $\\omega radlib$ interface to the IRIS data model is very straightforward: $\\omega radlib$ simply translates the complete binary file structure to *one* dictionary and returns this dictionary to the user. Thus, the potential complexity of the stored data is kept and it is left to the user how to proceed with this data. The keys of the output dictionary are strings that correspond to the Sigmet Data Structures. \n", "\n", @@ -814,11 +814,11 @@ "\n", "The Binary Universal Form for the Representation of meteorological data (BUFR) is a binary data format maintained by the World Meteorological Organization (WMO).\n", "\n", - "The BUFR format was adopted by [OPERA](https://www.eumetnet.eu/opera) for the representation of weather radar data.\n", + "The BUFR format was adopted by [OPERA](http://eumetnet.eu/activities/observations-programme/current-activities/opera/) for the representation of weather radar data.\n", "A BUFR file consists of a set of *descriptors* which contain all the relevant metadata and a data section. \n", "The *descriptors* are identified as a tuple of three integers. The meaning of these tupels is described in the so-called BUFR tables. There are generic BUFR tables provided by the WMO, but it is also possible to define so called *local tables* - which was done by the OPERA consortium for the purpose of radar data representation.\n", " \n", - "If you want to use BUFR files together with $\\omega radlib$, we recommend that you check out the [OPERA software webpage](http://www.eumetnet.eu/opera-software) where you will find software for BUFR decoding. In particular, you might want to check out [this tool](http://www.eumetnet.eu/sites/default/files/bufr-opera-mf-1.21.tar_.gz) which seems to support the conversion of OPERA BUFR files to ODIM_H5 (which is supported by $\\omega radlib$). However, you have to build it yourself.\n", + "If you want to use BUFR files together with $\\omega radlib$, we recommend that you check out the [OPERA webpage](http://eumetnet.eu/activities/observations-programme/current-activities/opera/) where you will find software for BUFR decoding. In particular, you might want to check out [this tool](http://eumetnet.eu/wp-content/uploads/2017/04/bufr_opera_mf.zip) which seems to support the conversion of OPERA BUFR files to ODIM_H5 (which is supported by $\\omega radlib$). However, you have to build it yourself.\n", "\n", "It would be great if someone could add a tutorial on how to use OPERA BUFR software together with $\\omega radlib$!" ] diff --git a/notebooks/fileio/wradlib_reading_dx.ipynb b/notebooks/fileio/wradlib_reading_dx.ipynb index ec91d31f..3f047861 100644 --- a/notebooks/fileio/wradlib_reading_dx.ipynb +++ b/notebooks/fileio/wradlib_reading_dx.ipynb @@ -200,7 +200,7 @@ "source": [ "pl.figure(figsize=(10,8))\n", "# Plot PPI,\n", - "ax, pm = wrl.vis.plot_ppi(two_scans[0], cmap=\"nipy_spectral\")\n", + "ax, pm = wrl.vis.plot_ppi(two_scans[0], cmap=\"viridis\")\n", "# add crosshair,\n", "ax = wrl.vis.plot_ppi_crosshair((0,0), ranges=[40,80,128])\n", "# add colorbar,\n", @@ -232,7 +232,7 @@ "# Add first subplot (stratiform)\n", "ax = pl.subplot(121, aspect=\"equal\")\n", "# Plot PPI,\n", - "ax, pm = wrl.vis.plot_ppi(one_scan, cmap=\"nipy_spectral\", vmin=20, vmax=60)\n", + "ax, pm = wrl.vis.plot_ppi(one_scan, cmap=\"viridis\", vmin=20, vmax=60)\n", "# add crosshair,\n", "ax = wrl.vis.plot_ppi_crosshair((0,0), ranges=[40,80,128])\n", "# add colorbar,\n", @@ -246,7 +246,7 @@ "# Add second subplot (convective)\n", "ax = pl.subplot(122, aspect=\"equal\")\n", "# Plot PPI,\n", - "ax, pm = wrl.vis.plot_ppi(two_scans[0], cmap=\"nipy_spectral\", vmin=20, vmax=60)\n", + "ax, pm = wrl.vis.plot_ppi(two_scans[0], cmap=\"viridis\", vmin=20, vmax=60)\n", "# add crosshair,\n", "ax = wrl.vis.plot_ppi_crosshair((0,0), ranges=[40,80,128])\n", "# add colorbar,\n", diff --git a/notebooks/match3d/wradlib_match_workflow.ipynb b/notebooks/match3d/wradlib_match_workflow.ipynb index 604f2a2d..88dd83fc 100644 --- a/notebooks/match3d/wradlib_match_workflow.ipynb +++ b/notebooks/match3d/wradlib_match_workflow.ipynb @@ -1107,13 +1107,13 @@ "source": [ "fig = pl.figure(figsize=(12,8))\n", "ax = fig.add_subplot(121, aspect=\"equal\")\n", - "pl.scatter(xyz[..., 0], xyz[...,1], c=refsr1a, cmap=pl.cm.jet, vmin=10, vmax=50, edgecolor=\"None\")\n", + "pl.scatter(xyz[..., 0], xyz[...,1], c=refsr1a, cmap=pl.cm.viridis, vmin=10, vmax=50, edgecolor=\"None\")\n", "pl.title(\"SR reflectivity\")\n", "pl.xlim(-100000, 150000)\n", "pl.ylim(-150000, 150000)\n", "pl.grid()\n", "ax = fig.add_subplot(122, aspect=\"equal\")\n", - "pl.scatter(xyz[..., 0], xyz[...,1], c=refgr1a, cmap=pl.cm.jet, vmin=10, vmax=50, edgecolor=\"None\")\n", + "pl.scatter(xyz[..., 0], xyz[...,1], c=refgr1a, cmap=pl.cm.viridis, vmin=10, vmax=50, edgecolor=\"None\")\n", "pl.title(\"GR reflectivity\")\n", "pl.xlim(-100000, 150000)\n", "pl.ylim(-150000, 150000)\n", @@ -1338,13 +1338,13 @@ "source": [ "fig = pl.figure(figsize=(12,8))\n", "ax = fig.add_subplot(121, aspect=\"equal\")\n", - "pl.scatter(x, y, c=refsr1, cmap=pl.cm.jet, vmin=10, vmax=50, edgecolor=\"None\")\n", + "pl.scatter(x, y, c=refsr1, cmap=pl.cm.viridis, vmin=10, vmax=50, edgecolor=\"None\")\n", "pl.title(\"SR reflectivity\")\n", "pl.xlim(-100000, 150000)\n", "pl.ylim(-150000, 150000)\n", "pl.grid()\n", "ax = fig.add_subplot(122, aspect=\"equal\")\n", - "pl.scatter(x, y, c=refgr1, cmap=pl.cm.jet, vmin=10, vmax=50, edgecolor=\"None\")\n", + "pl.scatter(x, y, c=refgr1, cmap=pl.cm.viridis, vmin=10, vmax=50, edgecolor=\"None\")\n", "pl.title(\"GR reflectivity\")\n", "pl.xlim(-100000, 150000)\n", "pl.ylim(-150000, 150000)\n", diff --git a/notebooks/python/mplintro.ipynb b/notebooks/python/mplintro.ipynb index 8978a7d2..fdb73dbf 100644 --- a/notebooks/python/mplintro.ipynb +++ b/notebooks/python/mplintro.ipynb @@ -109,7 +109,7 @@ "source": [ "If you want to enable `inline plotting` \n", "\n", - "(**mandatory if you use the** [Virtual Machine for Cross-Platform Weather Radar Science](http://openradar.github.io))\n", + "(**mandatory if you use the** [Virtual Machine for Cross-Platform Weather Radar Science](http://openradarscience.org/vm-docs/))\n", "\n", "```python\n", "# This magic just sets up matplotlib's interactive mode \n", diff --git a/notebooks/python/quickstart.ipynb b/notebooks/python/quickstart.ipynb index 7ed920fe..c087e025 100644 --- a/notebooks/python/quickstart.ipynb +++ b/notebooks/python/quickstart.ipynb @@ -616,7 +616,7 @@ } }, "source": [ - "For most applications, you will need to use `functions` that are available in `modules`. Just think of a module as a collection (or library) of functions. Some are shipped with the Python interpreter ([Python Standard Library](https://docs.python.org/2/library/)), others (such as wradlib) need to be installed (e.g. from the [Python Package Index](https://pypi.python.org/pypi)) or using the [Anaconda](https://www.continuum.io/downloads) Package Manager (`conda`).\n", + "For most applications, you will need to use `functions` that are available in `modules`. Just think of a module as a collection (or library) of functions. Some are shipped with the Python interpreter ([Python Standard Library](https://docs.python.org/2/library/)), others (such as wradlib) need to be installed (e.g. from the [Python Package Index](https://pypi.python.org/pypi)) or using the [Anaconda](https://www.anaconda.com/download/) Package Manager (`conda`).\n", "\n", "In order to use a function from a module, you need to `import` the module. See e.g. how to import the `os` module and use its `getcwd` function (which retruns the path to the current working directory):" ] @@ -985,7 +985,7 @@ "\n", "* **Matplotlib** : visualization and \"publication-ready\" plots, see related intro [here](../python/mplintro.ipynb)\n", "\n", - "* **Scipy**: high-level data processing routines - e.g. optimization, regression, interpolation, etc (http://www.scipy.org)" + "* **Scipy**: high-level data processing routines - e.g. optimization, regression, interpolation, etc (https://www.scipy.org)" ] }, { @@ -997,7 +997,7 @@ }, "source": [ "Please also check out further in-depth courses such as\n", - "- the [SciPy Lecture Notes](http://www.scipy-lectures.org/index.html) or \n", + "- the [SciPy Lecture Notes](https://www.scipy-lectures.org/index.html) or \n", "- the [Dive into Python](http://www.diveintopython3.net/) book." ] } diff --git a/notebooks/radolan.ipynb b/notebooks/radolan.ipynb index cd568cc8..af705d7b 100644 --- a/notebooks/radolan.ipynb +++ b/notebooks/radolan.ipynb @@ -25,7 +25,7 @@ "source": [ "RADOLAN is abbreviated from the german **RA**dar-**O**n**L**ine-**AN**eichung, which means Radar-Online-Adjustment.\n", "\n", - "Using it's [network of 17 weather radar](https://www.dwd.de/SharedDocs/broschueren/DE/presse/Wetterradar_PDF.pdf?__blob=publicationFile&v=5>) the German Weather Service provides many products for high resolution precipitation analysis and forecast. A comprehensive product list can be found in chapter [RADOLAN Product Showcase](radolan/radolan_showcase.ipynb).\n", + "Using it's [network of 17 weather radar](https://www.dwd.de/SharedDocs/broschueren/DE/presse/Wetterradar_PDF.pdf?__blob=publicationFile&v=5) the German Weather Service provides many products for high resolution precipitation analysis and forecast. A comprehensive product list can be found in chapter [RADOLAN Product Showcase](radolan/radolan_showcase.ipynb).\n", "\n", "These composite products are distributed in the [RADOLAN Binary Data Format](radolan/radolan_format.ipynb) with an ASCII header. All composites are available in [Polar Stereographic Projection](radolan/radolan_grid.ipynb#Polar-Stereographic-Projection) which will be discussed in the chapter [RADOLAN Grid](radolan/radolan_grid.ipynb)." ] @@ -49,7 +49,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "This notebook tutorial was prepared with material from the [DWD RADOLAN/RADVOR-OP Kompositformat](http://www.dwd.de/DE/leistungen/radolan/radolan_info/radolan_radvor_op_komposit_format_pdf.pdf?__blob=publicationFile&v=5>).\n", + "This notebook tutorial was prepared with material from the [DWD RADOLAN/RADVOR-OP Kompositformat](https://www.dwd.de/DE/leistungen/radolan/radolan_info/radolan_radvor_op_komposit_format_pdf.pdf?__blob=publicationFile&v=5).\n", "We also wish to thank Elmar Weigl, German Weather Service, for providing the extensive set of example data and his valuable information about the RADOLAN products." ] } diff --git a/notebooks/radolan/radolan_network.ipynb b/notebooks/radolan/radolan_network.ipynb index 36deff61..680f96c0 100644 --- a/notebooks/radolan/radolan_network.ipynb +++ b/notebooks/radolan/radolan_network.ipynb @@ -246,7 +246,7 @@ "# plot two projections side by side\n", "fig1 = pl.figure(figsize=(10,8))\n", "ax1 = fig1.add_subplot(111, aspect='equal')\n", - "pm = ax1.pcolormesh(lon1, lat1, rwdata, cmap='nipy_spectral')\n", + "pm = ax1.pcolormesh(lon1, lat1, rwdata, cmap='viridis')\n", "cb = fig1.colorbar(pm, shrink=0.75)\n", "cb.set_label(\"mm/h\")\n", "pl.xlabel(\"Longitude \")\n", @@ -273,7 +273,7 @@ "source": [ "fig2 = pl.figure(figsize=(10,8))\n", "ax2 = fig2.add_subplot(111, aspect='equal')\n", - "pm = ax2.pcolormesh(x1, y1, rwdata, cmap='nipy_spectral')\n", + "pm = ax2.pcolormesh(x1, y1, rwdata, cmap='viridis')\n", "cb = fig2.colorbar(pm, shrink=0.75)\n", "cb.set_label(\"mm/h\")\n", "pl.xlabel(\"x [km]\")\n", diff --git a/notebooks/radolan/radolan_quickstart.ipynb b/notebooks/radolan/radolan_quickstart.ipynb index 6ec0a278..2a57c30c 100644 --- a/notebooks/radolan/radolan_quickstart.ipynb +++ b/notebooks/radolan/radolan_quickstart.ipynb @@ -114,7 +114,7 @@ "outputs": [], "source": [ "# plot function\n", - "pl.pcolormesh(x, y, rwdata, cmap=\"nipy_spectral\")\n", + "pl.pcolormesh(x, y, rwdata, cmap=\"viridis\")\n", "cb = pl.colorbar(shrink=0.75)\n", "cb.set_label(\"mm/h\")\n", "pl.title('RADOLAN RW Product Polar Stereo \\n' + rwattrs['datetime'].isoformat())\n", diff --git a/notebooks/radolan/radolan_showcase.ipynb b/notebooks/radolan/radolan_showcase.ipynb index 46840360..6bb7f7b9 100644 --- a/notebooks/radolan/radolan_showcase.ipynb +++ b/notebooks/radolan/radolan_showcase.ipynb @@ -124,7 +124,7 @@ " ax = fig.add_subplot(111, aspect='equal')\n", " x = grid[:,:,0]\n", " y = grid[:,:,1]\n", - " pm = ax.pcolormesh(x, y, data, cmap='nipy_spectral')\n", + " pm = ax.pcolormesh(x, y, data, cmap='viridis')\n", " cb = fig.colorbar(pm, shrink=0.75)\n", " cb.set_label(clabel)\n", " pl.xlabel(\"x [km]\")\n", diff --git a/notebooks/radolan/simple_plot.ipynb b/notebooks/radolan/simple_plot.ipynb index c0bc92b1..7d86d21d 100644 --- a/notebooks/radolan/simple_plot.ipynb +++ b/notebooks/radolan/simple_plot.ipynb @@ -86,7 +86,7 @@ "\n", "# create quick plot with colorbar and title\n", "pl.figure(figsize=(10,8))\n", - "pl.pcolormesh(x, y, rwdata, cmap=\"nipy_spectral\")\n", + "pl.pcolormesh(x, y, rwdata, cmap=\"viridis\")\n", "cb = pl.colorbar(shrink=0.75)\n", "cb.set_label(\"mm/h\")\n", "pl.figaspect(1)\n", diff --git a/notebooks/visualisation/wradlib_overlay.ipynb b/notebooks/visualisation/wradlib_overlay.ipynb index 7bfc6fac..df28f2c1 100644 --- a/notebooks/visualisation/wradlib_overlay.ipynb +++ b/notebooks/visualisation/wradlib_overlay.ipynb @@ -94,7 +94,7 @@ } }, "source": [ - "We use a preprocessed geotiff which was created from [**SRTM**](http://www2.jpl.nasa.gov/srtm) data via `gdal`\n", + "We use a preprocessed geotiff which was created from [**SRTM**](https://www2.jpl.nasa.gov/srtm/) data via `gdal`\n", "\n", "```bash\n", "gdalwarp -te 88. 20. 93. 27. srtm_54_07.tif srtm_55_07.tif srtm_54_08.tif srtm_55_08.tif bangladesh.tif\n", @@ -547,7 +547,7 @@ " # why comes the US in here?\n", " if name in countries:\n", " wrl.vis.add_patches(ax, patch, facecolor=colors[i],\n", - " cmap=pl.cm.jet, alpha=0.4)\n", + " cmap=pl.cm.viridis, alpha=0.4)\n", " i += 1\n", " ax.autoscale(True)\n", " ax.set_aspect('equal')\n", diff --git a/notebooks/visualisation/wradlib_plot_curvelinear_grids.ipynb b/notebooks/visualisation/wradlib_plot_curvelinear_grids.ipynb index 8b9fb4bf..de4afe24 100644 --- a/notebooks/visualisation/wradlib_plot_curvelinear_grids.ipynb +++ b/notebooks/visualisation/wradlib_plot_curvelinear_grids.ipynb @@ -98,9 +98,9 @@ "
\n", "If you want to learn more about the matplotlib features used with [wradlib.vis.create_cg()](http://docs.wradlib.org/en/latest/generated/wradlib.vis.create_cg.html), have a look into
\n", "
\n", - "- [Matplotlib AXISARTIST namespace](http://matplotlib.org/mpl_toolkits/axes_grid/users/axisartist.html)
\n", - "- [Matplotlib AxesGrid Toolkit](http://matplotlib.org/mpl_toolkits/axes_grid/index.html)
\n", - "- [The Matplotlib AxesGrid Toolkit User’s Guide](http://matplotlib.org/mpl_toolkits/axes_grid/users/index.html)
\n", + "- [Matplotlib AXISARTIST namespace](https://matplotlib.org/mpl_toolkits/axes_grid/users/axisartist.html)
\n", + "- [Matplotlib AxesGrid Toolkit](https://matplotlib.org/mpl_toolkits/axes_grid/index.html)
\n", + "- [The Matplotlib AxesGrid Toolkit User’s Guide](https://matplotlib.org/mpl_toolkits/axes_grid/users/index.html)
\n", "" ] }, @@ -664,7 +664,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Here the abilities of [Matplotlib GridSpec](http://matplotlib.org/users/gridspec.html) are used.\n", + "Here the abilities of [Matplotlib GridSpec](https://matplotlib.org/users/gridspec.html) are used.\n", "Now we can also plot on irregular grids. Just create your grid and take the GridSpec object as an input to the parameter ``subplot`` as follows (some padding has to be adjusted to get a nice plot):" ] }, @@ -710,7 +710,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Here the capabilities of [Matplotlib AxesGrid1](http://matplotlib.org/mpl_toolkits/axes_grid/users/overview.html#axes-grid1) are used.\n", + "Here the capabilities of [Matplotlib AxesGrid1](https://matplotlib.org/mpl_toolkits/axes_grid/users/overview.html#axes-grid1) are used.\n", "\n", "We make a **PPI** now, it matches much better. Just plot your **PPI** data and create an axes divider:\n", "\n", diff --git a/notebooks/workflow/recipe1.ipynb b/notebooks/workflow/recipe1.ipynb index df9111d2..5fbced60 100644 --- a/notebooks/workflow/recipe1.ipynb +++ b/notebooks/workflow/recipe1.ipynb @@ -232,7 +232,7 @@ "pl.figure(figsize=(10,8))\n", "pl.subplot(111, aspect=\"equal\")\n", "pm = pl.pcolormesh(x, y, composite.reshape((len(x), len(y))),\n", - " cmap=\"nipy_spectral\")\n", + " cmap=\"viridis\")\n", "pl.grid()\n", "pl.xlim(min(x), max(x))\n", "pl.ylim(min(y), max(y))\n", diff --git a/notebooks/wradlib_in_an_hour.ipynb b/notebooks/wradlib_in_an_hour.ipynb index 3e9b4634..d4a8cf00 100644 --- a/notebooks/wradlib_in_an_hour.ipynb +++ b/notebooks/wradlib_in_an_hour.ipynb @@ -224,7 +224,7 @@ "source": [ "### 1. Install Anaconda\n", "\n", - "Get it [here](https://www.continuum.io/why-anaconda/) for Windows, Linux, or Mac." + "Get it [here](https://www.anaconda.com/what-is-anaconda/) for Windows, Linux, or Mac." ] }, { diff --git a/notebooks/zonalstats/wradlib_zonalstats_example.ipynb b/notebooks/zonalstats/wradlib_zonalstats_example.ipynb index 443281ae..ac2cde13 100644 --- a/notebooks/zonalstats/wradlib_zonalstats_example.ipynb +++ b/notebooks/zonalstats/wradlib_zonalstats_example.ipynb @@ -55,11 +55,11 @@ " title=\"\"):\n", " \"\"\"Quick test plot layout for this example file\n", " \"\"\"\n", - " colors = pl.cm.nipy_spectral(np.linspace(0, 1, len(levels)))\n", + " colors = pl.cm.viridis(np.linspace(0, 1, len(levels)))\n", " mycmap, mynorm = from_levels_and_colors(levels, colors, extend=\"max\")\n", "\n", " radolevels = [0, 1, 2, 3, 4, 5, 10, 15, 20, 25, 30, 40, 50, 100]\n", - " radocolors = pl.cm.nipy_spectral(np.linspace(0, 1, len(radolevels)))\n", + " radocolors = pl.cm.viridis(np.linspace(0, 1, len(radolevels)))\n", " radocmap, radonorm = from_levels_and_colors(radolevels, radocolors,\n", " extend=\"max\")\n", "\n", @@ -393,7 +393,7 @@ "isecs = obj3.zdata.get_isec(i)\n", "isec_patches = wrl.zonalstats.numpy_to_pathpatch(isecs)\n", "colors = 100 * np.linspace(0, 1., len(isec_patches))\n", - "p = PatchCollection(isec_patches, cmap=pl.cm.jet, alpha=0.5)\n", + "p = PatchCollection(isec_patches, cmap=pl.cm.plasma, alpha=0.5)\n", "p.set_array(np.array(colors))\n", "ax.add_collection(p)\n", "\n", @@ -717,7 +717,7 @@ "isecs = obj3.zdata.get_isec(i)\n", "isec_patches = wrl.zonalstats.numpy_to_pathpatch(isecs)\n", "colors = 100 * np.linspace(0, 1., len(isec_patches))\n", - "p = PatchCollection(isec_patches, cmap=pl.cm.jet, alpha=0.5)\n", + "p = PatchCollection(isec_patches, cmap=pl.cm.plasma, alpha=0.5)\n", "p.set_array(np.array(colors))\n", "ax.add_collection(p)\n", "\n", diff --git a/notebooks/zonalstats/wradlib_zonalstats_quickstart.ipynb b/notebooks/zonalstats/wradlib_zonalstats_quickstart.ipynb index 082520bb..5724ff09 100644 --- a/notebooks/zonalstats/wradlib_zonalstats_quickstart.ipynb +++ b/notebooks/zonalstats/wradlib_zonalstats_quickstart.ipynb @@ -338,7 +338,7 @@ "\n", "# Create discrete colormap\n", "levels=np.arange(0,30,2.5)\n", - "colors = pl.cm.gist_heat(np.linspace(0, 1, len(levels)))\n", + "colors = pl.cm.inferno(np.linspace(0, 1, len(levels)))\n", "mycmap, mynorm = from_levels_and_colors(levels, colors, extend=\"max\")\n", "\n", "fig = pl.figure(figsize=(10, 10))\n",