radproc: An ArcGIS-compatible Library for RADOLAN Composite Processing and Analysis¶
Release: | 0.1.1 |
---|---|
Date: | July 19, 2018 |
Radproc is an open source Python library intended to faciliate precipitation data processing and analysis for ArcGIS-users. It provides functions for processing, analysis and export of RADOLAN (Radar Online Adjustment) composites and rain gauge data in MR90 format. The German Weather Service (DWD) provides the RADOLAN-Online RW composites for free in the Climate Data Center (ftp://ftp-cdc.dwd.de/pub/CDC/grids_germany/hourly/radolan/) but the data processing represents a big challenge for many potential users. Radproc’s goal is to lower the barrier for using these data, especially in conjunction with ArcGIS. Therefore, radproc provides an automated ArcGIS-compatible data processing workflow based on pandas DataFrames and HDF5. Moreover, radproc’s arcgis module includes a collection of functions for data exchange between pandas and ArcGIS.
Radproc’s Main Features¶
Raw Data processing¶
- Support for the reanalyzed RADOLAN products RW (60 min), YW and RY (both 5 min. resolution)
- Automatically reading in all binary RADOLAN composites from a predefined directory structure
- Optionally clipping the composites to a study area in order to reduce data size
- Default data structure: Monthly pandas DataFrames with full support for time series analysis and spatial location of each pixel
- Efficient data storage in HDF5 format with fast data access and optional data compression
- Easy downsampling of time series
- Reading in DWD rain gauge data in MR90 format into the same data structure as RADOLAN.
Data Exchange with ArcGIS¶
- Export of single RADOLAN composites or analysis results into projected raster datasets or ESRI grids for your study area
- Export of all DataFrame rows into raster datasets in a new file geodatabase, optionally including several statistics rasters
- Import of dbf tables (stand-alone or attribute tables of feature classes) into pandas DataFrames
- Joining DataFrame columns to attribute tables
- Extended value extraction from rasters to points (optionally including the eight surrounding cells)
- Extended zonal statistics
Analysis¶
- Calculation of precipitation sums for arbitrary periods of time
- Heavy rainfall analysis, e.g. identification, counting and export of rainfall intervals exceeding defined thresholds
- Data quality assessment
- Comparison of RADOLAN and rain gauge data
- In preparation: Erosivity analysis, e.g. calculation of monthly, seasonal or annual R-factors
Getting Started¶
System requirements¶
To be able to use all features offered by radproc, you need…
- a 64-Bit operating system (32-Bit systems can not allocate more than 3 GB memory, which is not sufficient for radar data processing)
- Python version 2.7 (64-Bit). It is strongly recommended to use the Anaconda distribution since this already includes all needed scientific site-packages.
- ArcMap version 10.4 or newer
- ArcGIS 64-Bit background processing
- for processing of RADOLAN data in 5-minute resolution at least 16 GB RAM are recommended
Installation¶
First, install ArcMap for Desktop and its extension 64-Bit background processing.
Next, download and install the latest Anaconda distribution from https://www.anaconda.com/download/ (Windows, 64-Bit, Python version 2.7).
radproc is currently distributed as wheel file for Python version 2.7 on Windows operating systems (64-Bit only!). You can download the radproc wheel from the GitHub repository at https://github.com/jkreklow/radproc/tree/0.1.0/dist
To install radproc using Anaconda and pip…
Open the Windows terminal by typing CMD into the Windows search (Administrator rights may be necessary!).
Type:
pip install C:\path\to\wheelfile\radproc_wheel.whl
Now radproc is automatically installed into your Anaconda root environment. You can check by opening Spyder or Jupyter Notebook and entering:
import radproc
To enable your Anaconda distribution to “see” the arcpy package from your separate ArcGIS Python installation, you need to copy the Path file DTBGGP64.pth which is usually located at C:\Python27\ArcGISx6410.4\Lib\site-packages into the corresponding site-packages folder of your Anaconda distribution, e.g. C:\ProgramData\Anaconda2\Lib\site-packages
To check if arcpy is now visible for Anaconda, import arcpy to Spyder or Jupyter Notebook:
import arcpy
Tutorials¶
These tutorials aim to help you getting started with radproc. More tutorials are in progress…
Tutorial 1: Raw Data Processing with Radproc¶
This tutorial will show you how to get started with RADOLAN processing and import your raw hourly RW data into HDF5.
Note: For this approach ArcMap is required!
1. Import radproc¶
In [1]:
import radproc as rp
2. Unzip Raw Data Archives¶
The RADOLAN RW product is usually provided as monthly tar.gz archives by the German Weather Service (DWD). These have to be unzipped in order to import the contained hourly binary files. The radproc function
unzip_RW_binaries(zipFolder, outFolder)
can be used to unzip all archives in one directory into the directory tree format needed by the following radproc functions. Moreover, as the binary files themselves might not be zipped, all binary files are automatically compressed to .gz files to save disk space.
In [2]:
RW_original = r"O:\Data\RW_archives"
RW_unzipped = r"O:\Data\RW_unzipped"
rp.unzip_RW_binaries(zipFolder=RW_original, outFolder=RW_unzipped)
Side Note: To unzip the YW or RY products, which might be provided as monthly archives which contain daily archives with the actual binary files, you can use the function
unzip_YW_binaries(zipFolder, outFolder)
The further processing workflow is the same for all products except that you need more memory space and patience (or a smaller study area) to process the products with higher temporal resolution.
Side Note: If you already have unpacked binary files (e.g. after download of recent RADOLAN-Online files from Climate Data Center) you can skip this step, but you need to make sure that the files are saved in monthly directories (if you have data for more than one month) to make all functions of radproc work correctly.
3. Import Unzipped Data into HDF5¶
To import all RW data you have just unzipped into an HDF5 file - optionally clipping the data to a study area - you can apply
create_idraster_and_process_radolan_data(inFolder, HDFFile, clipFeature=None, complevel=9)
Behind the scenes, this function will…
- create an ID-raster for Germany in ArcGIS, called idras_ger,
- if you specified a Shapefile or Feature-Class as clipFeature: Clip the german ID-raster to the extent of the clipFeature and create a second ID-raster called idras,
- import all RADOLAN binary files in a directory tree,
- select the data for your study area based on the generated ID-raster,
- convert the selected data into monthly pandas DataFrames and
- store all DataFrames in the specified HDF5 file.
The result of this function is a HDF5 file with all RADOLAN data of your study area ready for further analysis.
Note: This function works with RADOLAN-Online data as well as with the reanalyzed RADOLAN climatology data, which differ in data size and location. All necessary information are extracted from the RADOLAN metadata or are inherently contained within radproc.
More detailed information on the four function parameters are available in the library reference of the function.
Note: This function needs ArcMap to be installed and connected to your radproc environment!
In [3]:
RW_unzipped = r"O:\Data\RW_unzipped"
outHDF = r"O:\Data\RW.h5"
studyArea = r"O:\Data\StudyArea.shp"
rp.create_idraster_and_process_radolan_data(inFolder=RW_unzipped, HDFFile=outHDF, clipFeature=studyArea, complevel=9)
O:\Data\RW_unzipped\2016\5 processed
Alternative: Import Unzipped Data into HDF5 without ArcGIS¶
In case you want to use radproc without having ArcGIS installed, you can apply
process_radolan_data(inFolder, HDFFile, idArr=None, complevel=9)
If you don’t specify an ID Array (which is the default), all RADOLAN data will be processed without clipping. Hence, you get an HDF5 file for Germany, which you can use for analysis within Python, but keep in mind, that all export functions won’t work without the ID raster and ArcMap.
Note: This function works with RADOLAN-Online data as well as with the reanalyzed RADOLAN climatology data, which differ in data size and location. All necessary information are extracted from the RADOLAN metadata or are inherently contained within radproc.
In [4]:
RW_unzipped = r"O:\Data\RW_unzipped"
outHDF = r"O:\Data\RW.h5"
rp.process_radolan_data(inFolder=RW_unzipped, HDFFile=outHDF, idArr=None, complevel=9)
O:\Data\RW_unzipped\2016\5 processed
Now you are ready to start analyzing your data!
Tutorial 2: Aggregation to Precipitation Sums¶
This tutorial will show you, how to calculate precipitation sums from the data stored in HDF5 and how to export the results to ArcGIS.
To import your RADOLAN data into the necessary HDF5 file, please follow the tutorial on raw data processing.
Example 1: Annual Precipitation Sums¶
In this example, the annual precipitation sums for the time period from 2001 to 2016 are calculated and exported to ArcGIS.
In [1]:
import radproc as rp
The following function loads precipitation data of the specified time period (2001-2016) from an HDF5 file and generates a DataFrame with annual precipitation sums for every raster cell.
In [2]:
HDF = r"O:\Data\RW_2001_2016.h5"
annualSum = rp.hdf5_to_years(HDFFile=HDF, year_start=2001, year_end=2016)
# Display the first five rows of the new DataFrame
annualSum.head()
Out[2]:
Rasterzellen-ID | 427005 | 427006 | 427903 | 427904 | 427905 | 427906 | 428803 | 428804 | 428805 | 428806 | ... | 661855 | 661856 | 661857 | 662752 | 662753 | 662754 | 662755 | 662756 | 663652 | 663655 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Datum (UTC) | |||||||||||||||||||||
2001-12-31 00:00:00+00:00 | 783.400024 | 809.500000 | 763.299988 | 773.500000 | 779.700012 | 788.500000 | 769.500000 | 780.400024 | 778.700012 | 783.000000 | ... | 1066.599976 | 1098.699951 | 1125.400024 | 994.000000 | 998.700012 | 1020.599976 | 1056.099976 | 1075.200073 | 989.200012 | 1039.500000 |
2002-12-31 00:00:00+00:00 | 967.700012 | 980.799988 | 951.000000 | 935.500000 | 947.200012 | 950.700012 | 956.000000 | 960.700012 | 938.700012 | 955.400024 | ... | 1491.599976 | 1529.500000 | 1539.199951 | 1383.099976 | 1387.500000 | 1407.400024 | 1478.099976 | 1488.800049 | 1380.400024 | 1467.099976 |
2003-12-31 00:00:00+00:00 | 597.200012 | 614.200012 | 578.000000 | 583.000000 | 592.200012 | 592.299988 | 573.400024 | 587.700012 | 587.299988 | 589.600037 | ... | 697.600037 | 696.099976 | 683.700012 | 670.400024 | 652.599976 | 638.400024 | 663.599976 | 668.599976 | 663.099976 | 648.000000 |
2004-12-31 00:00:00+00:00 | 795.000000 | 801.000000 | 772.000000 | 768.099976 | 776.600037 | 792.799988 | 746.500000 | 767.099976 | 779.000000 | 792.900024 | ... | 851.599976 | 872.200012 | 869.799988 | 803.000000 | 802.000000 | 804.099976 | 825.099976 | 841.599976 | 806.000000 | 813.700012 |
2005-12-31 00:00:00+00:00 | 728.099976 | 710.799988 | 678.500000 | 676.799988 | 730.200012 | 681.399963 | 671.400024 | 664.099976 | 658.799988 | 666.299988 | ... | 914.799988 | 922.900024 | 911.099976 | 847.799988 | 861.500000 | 868.099976 | 893.200012 | 903.299988 | 850.799988 | 872.500000 |
5 rows × 23320 columns
Note: All of radproc’s aggregation functions are intended for analysis of longer time periods and currently only work for entire years starting in January! To resample smaller time periods, you can e.g. import and resample months with
May2016 = rp.load_months_from_hdf5(HDFFile=HDF, year=2016, months=[5])
freq = 'M' # 'M' for monthly sums, 'D' for daily sums, 'H' for hourly sums
monthSum = May2016.resample(frequency=freq, closed = 'right', label = 'right').sum()
The following function exports all rows from the DataFrame calculated above into raster datasets in an ArcGIS File Geodatabase. Optionally, different statistics rasters can be created, e.g. the mean or the maximum value of each cell.
In [3]:
idRaster = r"O:\Data\idras"
outGDBPath = r"O:\Data"
GDBName = "Years_01_16.gdb"
statistics = ["mean", "max"]
rp.export_dfrows_to_gdb(dataDF=annualSum, idRaster=idRaster, outGDBPath=outGDBPath, GDBName=GDBName, statistics=statistics)
The resulting geodatabase will look like this in ArcGIS:

YearGDB
Example 2: Monthly Precipitation Sums¶
In this example, the monthly precipitation sums for the year 2016 are calculated and exported to ArcGIS.
In [4]:
import radproc as rp
The following function loads precipitation data of the year 2016 from your HDF5 file and generates a DataFrame with monthly precipitation sums for every raster cell.
In [5]:
HDF = r"O:\Data\RW_2001_2016.h5"
monthlySum = rp.hdf5_to_months(HDFFile=HDF, year_start=2016, year_end=2016)
# Display the first five rows of the new DataFrame
monthlySum.head()
Out[5]:
Rasterzellen-ID | 427005 | 427006 | 427903 | 427904 | 427905 | 427906 | 428803 | 428804 | 428805 | 428806 | ... | 661855 | 661856 | 661857 | 662752 | 662753 | 662754 | 662755 | 662756 | 663652 | 663655 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Datum (UTC) | |||||||||||||||||||||
2016-01-31 00:00:00+00:00 | 71.400002 | 71.900002 | 68.000000 | 69.099998 | 70.099998 | 71.699997 | 65.500000 | 67.300003 | 66.199997 | 69.800003 | ... | 128.199997 | 129.500000 | 129.600006 | 120.199997 | 121.300003 | 123.500000 | 125.699997 | 122.900002 | 118.099998 | 120.400002 |
2016-02-29 00:00:00+00:00 | 68.699997 | 71.199997 | 61.500000 | 64.300003 | 67.300003 | 68.400002 | 58.200001 | 61.700001 | 65.000000 | 64.300003 | ... | 105.900002 | 106.199997 | 110.099998 | 96.800003 | 96.699997 | 100.099998 | 102.599998 | 101.400002 | 92.800003 | 97.400002 |
2016-03-31 00:00:00+00:00 | 41.799999 | 41.299999 | 40.299999 | 39.900002 | 40.099998 | 39.299999 | 37.700001 | 38.200001 | 38.799999 | 37.500000 | ... | 65.500000 | 64.400002 | 65.199997 | 70.000000 | 67.500000 | 64.400002 | 65.099998 | 65.099998 | 69.800003 | 65.500000 |
2016-04-30 00:00:00+00:00 | 55.700001 | 56.600002 | 51.799999 | 52.400002 | 54.000000 | 55.299999 | 50.799999 | 51.200001 | 52.799999 | 54.400002 | ... | 108.500000 | 112.199997 | 115.400002 | 106.700005 | 106.500000 | 107.699997 | 112.599998 | 114.300003 | 105.199997 | 108.099998 |
2016-05-31 00:00:00+00:00 | 38.200001 | 40.600002 | 47.299999 | 44.799999 | 39.400002 | 34.299999 | 46.799999 | 45.400002 | 43.200001 | 38.500000 | ... | 121.299995 | 119.300003 | 115.099998 | 128.100006 | 138.199997 | 135.500000 | 124.300003 | 128.500000 | 130.199997 | 134.399994 |
5 rows × 23320 columns
The following function exports all rows from the DataFrame calculated above into raster datasets in an ArcGIS File Geodatabase. Optionally, different statistics rasters can be created, in this case the mean, maximum and minimum value of each cell as well as the range per cell.
In [6]:
idRaster = r"O:\Data\idras"
outGDBPath = r"O:\Data"
GDBName = "Months_16.gdb"
statistics = ["mean", "max", "min", "range"]
rp.export_dfrows_to_gdb(dataDF=monthlySum, idRaster=idRaster, outGDBPath=outGDBPath, GDBName=GDBName, statistics=statistics)
The resulting geodatabase will look like this in ArcGIS:

MonthGDB
Tutorial 3: Heavy Rainfall Analysis¶
This tutorial shows how to identify and count heavy rainfall intervals exceeding a specified threshold and export the results to ArcGIS.
Example 1: Identification of Heavy Rainfall Intervals¶
In [1]:
import radproc as rp
To identify and select all intervals exceeding a rainfall threshold x at least y times in season z, you can use the function
find_heavy_rainfalls(HDFFile, year_start, year_end, thresholdValue, minArea, season)
The following code will extract all intervals, in which an hourly precipitation of 30 mm is exceeded in at least five cells (these don’t need to be adjacent cells!) in May 2016 in Hesse.
In [2]:
HDF = r"O:\Data\RW.h5"
hr = rp.find_heavy_rainfalls(HDFFile=HDF, year_start=2016, year_end=2016, thresholdValue=30, minArea=5, season='May')
hr
Out[2]:
Cell-ID | 427005 | 427006 | 427903 | 427904 | 427905 | 427906 | 428803 | 428804 | 428805 | 428806 | ... | 661855 | 661856 | 661857 | 662752 | 662753 | 662754 | 662755 | 662756 | 663652 | 663655 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Date (UTC) | |||||||||||||||||||||
2016-05-27 16:50:00+00:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
2016-05-27 17:50:00+00:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
2016-05-28 14:50:00+00:00 | 0.0 | 0.0 | 0.1 | 0.1 | 0.0 | 0.0 | 0.0 | 0.1 | 0.1 | 0.0 | ... | 0.1 | 0.9 | 1.7 | 0.4 | 0.5 | 0.5 | 0.6 | 1.1 | 0.7 | 0.6 |
2016-05-28 15:50:00+00:00 | 1.2 | 1.1 | 1.3 | 1.2 | 1.1 | 1.1 | 1.4 | 1.1 | 1.3 | 1.2 | ... | 4.7 | 4.0 | 4.3 | 9.2 | 7.8 | 6.3 | 3.8 | 3.4 | 10.6 | 3.9 |
2016-05-28 17:50:00+00:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | ... | 4.2 | 4.4 | 4.3 | 4.5 | 5.1 | 4.5 | 4.7 | 4.3 | 5.3 | 5.2 |
2016-05-29 16:50:00+00:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
2016-05-29 23:50:00+00:00 | 0.0 | 0.2 | 0.3 | 0.2 | 0.2 | 0.1 | 0.2 | 0.1 | 0.0 | 0.2 | ... | 4.9 | 3.9 | 4.0 | 4.3 | 4.4 | 4.2 | 4.2 | 3.4 | 4.3 | 3.8 |
2016-05-30 00:50:00+00:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | ... | 4.5 | 3.8 | 3.5 | 3.7 | 3.5 | 4.2 | 4.1 | 3.6 | 4.0 | 3.6 |
8 rows × 23320 columns
The following function exports all rows from the resampled daily DataFrame calculated above into raster datasets in an ArcGIS File Geodatabase. Optionally, different statistics rasters can be created, in this case the sum and the maximum value of each cell.
In [3]:
idRaster = r"O:\Data\idras"
outGDBPath = r"O:\Data"
GDBName = "May16_30mm5c.gdb"
statistics = ["sum", "max"]
rp.export_dfrows_to_gdb(dataDF=hr, idRaster=idRaster, outGDBPath=outGDBPath, GDBName=GDBName, statistics=statistics)
The new Geodatabase looks like this in ArcGIS:

HR_GDB
Side Note In this example, eight intervals meeting the given criteria have been identified at four days. The following code can be used as a simple approach to obtain daily sums for these events. (Of course this does not take into account that the interval at May 30th is most likely part of the same precipitation event as the ones from May 29th…this is a more complicated topic to be adressed in future versions of radproc)
In [4]:
hr_daily = hr.resample('D').sum()
hr_daily
Out[4]:
Cell-ID | 427005 | 427006 | 427903 | 427904 | 427905 | 427906 | 428803 | 428804 | 428805 | 428806 | ... | 661855 | 661856 | 661857 | 662752 | 662753 | 662754 | 662755 | 662756 | 663652 | 663655 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Date (UTC) | |||||||||||||||||||||
2016-05-27 00:00:00+00:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | ... | 0.0 | 0.0 | 0.0 | 0.000000 | 0.0 | 0.0 | 0.000000 | 0.0 | 0.0 | 0.0 |
2016-05-28 00:00:00+00:00 | 1.2 | 1.1 | 1.4 | 1.3 | 1.1 | 1.1 | 1.4 | 1.2 | 1.4 | 1.2 | ... | 9.0 | 9.3 | 10.3 | 14.099999 | 13.4 | 11.3 | 9.099999 | 8.8 | 16.6 | 9.7 |
2016-05-29 00:00:00+00:00 | 0.0 | 0.2 | 0.3 | 0.2 | 0.2 | 0.1 | 0.2 | 0.1 | 0.0 | 0.2 | ... | 4.9 | 3.9 | 4.0 | 4.300000 | 4.4 | 4.2 | 4.200000 | 3.4 | 4.3 | 3.8 |
2016-05-30 00:00:00+00:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | ... | 4.5 | 3.8 | 3.5 | 3.700000 | 3.5 | 4.2 | 4.100000 | 3.6 | 4.0 | 3.6 |
4 rows × 23320 columns
For example, the resulting raster dataset for the sum of the two intervals on May 27th looks like this:

HR_20160527
Example 2: Counting Heavy Rainfall Intervals¶
To count the number of times in which a rainfall threshold x is exceeded at every cell in season z, you can use the function
count_heavy_rainfall_intervals(HDFFile, year_start, year_end, thresholdValue, minArea, season)
If you specify a minimum area a > 1, only intervals in which the threshold x is exceeded in at least y cells are taken into account.
The following code will count how many times an hourly precipitation of 10 mm is exceeded at every cell in May 2016 in Hesse.
In [5]:
HDF = r"O:\Data\RW.h5"
hr_count = rp.count_heavy_rainfall_intervals(HDFFile=HDF, year_start=2016, year_end=2016, thresholdValue=10, minArea=1, season='May')
hr_count
Out[5]:
Cell-ID | 427005 | 427006 | 427903 | 427904 | 427905 | 427906 | 428803 | 428804 | 428805 | 428806 | ... | 661855 | 661856 | 661857 | 662752 | 662753 | 662754 | 662755 | 662756 | 663652 | 663655 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Date (UTC) | |||||||||||||||||||||
2016-05-31 00:00:00+00:00 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 2 | 1 |
1 rows × 23320 columns
In [6]:
# print the maximum value
hr_count.max(axis=1)
Out[6]:
Date (UTC)
2016-05-31 00:00:00+00:00 4
Freq: M, dtype: int32
As the output DataFrame only has one row (because we only analyzed one month), it can be exported directly with
export_to_raster(series, idRaster, outRaster)
In [7]:
rp.export_to_raster(series=hr_count, idRaster=r"O:\Data\idras", outRaster=r"O:\Data\hrcount10mm")
Out[7]:
'O:\\Data\\hrcount10mm'
Library Reference¶
Raw Data Processing¶
Functions for raw data processing.
Unzip, import, clip and convert RADOLAN raw data and write DataFrames to HDF5.
unzip_RW_binaries |
Unzips RADOLAN RW binary data saved in monthly .tar or tar.gz archives (e.g. |
unzip_YW_binaries |
Unzips RADOLAN YW binary data. |
radolan_binaries_to_dataframe |
Import all RADOLAN binary files in a directory into a pandas DataFrame, optionally clipping the data to the extent of an investigation area specified by an ID array. |
radolan_binaries_to_hdf5 |
Wrapper for radolan_binaries_to_dataframe() to import and clip all RADOLAN binary files of one month in a directory into a pandas DataFrame and save the resulting DataFrame as a dataset to an HDF5 file. |
create_idraster_and_process_radolan_data |
Convert all RADOLAN binary data in directory tree into an HDF5 file with monthly DataFrames for a given study area. |
process_radolan_data |
Converts all RADOLAN binary data into an HDF5 file with monthly DataFrames for a given study area without generating a new ID raster. |
Core Functions and Data I/O¶
Core functions like coordinate conversion and import of ID-array from textfile. Data import from HDF5-file and temporal data aggregation.
coordinates_degree_to_stereographic |
Converts geographic coordinates [°] to cartesian coordinates [m] in stereographic RADOLAN projection. |
save_idarray_to_txt |
Write cell ID values to text file. |
import_idarray_from_txt |
Imports cell ID values from text file into one-dimensional numpy-array. |
load_months_from_hdf5 |
Imports the specified months of one year and merges them to one DataFrame. |
load_month |
Imports the dataset of specified month from HDF5. |
load_years_and_resample |
Imports all months of the specified years, merges them together to one DataFrame and resamples the latter to [annual | monthly | daily | hourly] precipitation sums. |
hdf5_to_years |
Wrapper for load_years_and_resample() to import all months of the specified years, merge them together to one DataFrame and resample the latter to annual precipitation sums. |
hdf5_to_months |
Wrapper for load_years_and_resample() to import all months of the specified years, merge them together to one DataFrame and resample the latter to monthly precipitation sums. |
hdf5_to_days |
Wrapper for load_years_and_resample() to import all months of the specified years, merge them together to one DataFrame and resample the latter to daily precipitation sums. |
hdf5_to_hours |
Wrapper for load_years_and_resample() to import all months of the specified years, merge them together to one DataFrame and resample the latter to hourly precipitation sums. |
hdf5_to_hydrologicalSeasons |
Calculates the precipitation sums of the hydrological summer and winter seasons (May - October and November - April). |
Heavy Rainfall Analysis¶
Module for heavy rainfall analysis.
- identify and select all intervals in which a specified precipitation threshold is exceeded
- count the number of threshold exceedances
find_heavy_rainfalls |
Creates a DataFrame containing all heavy rainfalls (intervals) exceeding a specified threshold intensity value. |
count_heavy_rainfall_intervals |
Creates a DataFrame containing the sum of all heavy rainfalls intervals exceeding a specified threshold intensity value. |
RADOLAN Binary File Import¶
Copy of all functions necessary for reading in RADOLAN composite files, taken from module wradlib.io (version=0.9.0)
(Heistermann, M., Jacobi, S., and Pfaff, T. 2013: Technical Note: An open source library for processing weather radar data (wradlib), Hydrol. Earth Syst. Sci., 17, 863-871)
Copying these functions was necessary in order to reduce number of dependencies and avoid conflicts arising between different GDAL installations required for other wradlib modules and ArcGIS.
read_RADOLAN_composite |
Read quantitative radar composite format of the German Weather Service |
DWD MR90 Gauge Data Processing¶
Collection of functions for processing DWD rain gauge data in MR90 format.
Convert gauge data to pandas DataFrames with same format as RADOLAN data and saves them as HDF5 datasets.
stationfile_to_df |
Import a textfile with DWD rain gauge data in MR90 format into a one-column pandas DataFrame. |
summarize_metadata_files |
Import all metafiles and summarizes metadata in a single textfile. |
dwd_gauges_to_hdf5 |
Import all textfiles containing DWD rain gauge data in MR90 format from input folder into a DataFrame and save it as monthly HDF5 datasets. |
Release Notes¶
Version 0.1.1¶
- In conjunction with changes in support docs at Climate Data Center, the RADOLAN projection file used for ID raster creation (stored in sampledata module) has been replaced. The new file contains the stereographic RADOLAN projection in meters instead of kilometers. This guarantees compatibility with RADOLAN ASCII files from CDC.
- Accordingly, the unit of the output coordinates of
radproc.core.coordinates_degree_to_stereographic()
has been changed to meter and the cellsize ofradproc.arcgis.create_idraster_germany()
has been set to 1000 instead of 1. radproc.raw.unzip_RW_binaries()
andradproc.raw.unzip_YW_binaries()
: outFolder will now be created if it doesn’t exist, yet.
Version 0.1.0¶
First radproc release version.
www.pgweb.uni-hannover.de only hosts the docs for the latest release version. If you need former versions, please check out the docs on https://radproc.readthedocs.io Unfortunately, they don’t contain the docs af the arcgis module due to technical problems with the installation of arcpy at readthedocs.