-
Notifications
You must be signed in to change notification settings - Fork 12
ncextract
The ncextract
tool extracts time series from (multiple) NetCDF or GRIB file(s) at user defined coordinates.
The tool takes as input a CSV file containing point coordinates and a directory containing one or more NetCDF or GRIB files. The CSV file must contain only three columns: point identifier, and its two coordinates. The name of the coordinate fields must match those in the NetCDF or GRIB files. For example:
ID,lat,lon
0010,40.6083,-4.2250
0025,37.5250,-6.2750
0033,40.5257,-6.4753
The output is a file containing the time series at the pixels corresponding to the provided coordinates, in chronological order. The function supports two otput formats: CSV or NetCDF.
The tool can be run from the command prompt by indicating the input CSV file, the directory containing the NetCDF files, and the name of the output file.
usage: ncextract.py [-h] -i INPUT -d DIRECTORY -o OUTPUT [-nc]
Utility to extract time series of values from (multiple) NetCDF files at specific coordinates.
Coordinates of points of interest must be included in a CSV file with at least 3 columns named id,
lat, lon.
options:
-h, --help show this help message and exit
-i INPUT, --input INPUT
Input CSV file (id, lat, lon)
-d DIRECTORY, --directory DIRECTORY
Input directory with .nc files
-o OUTPUT, --output OUTPUT
Output file. Two extensions are supported: .csv or .nc
Example
The following command extracts the discharge time series from EFAS simulations (NetCDF files in the directory EFAS5/discharge/maps) in a series of points where gauging stations are located (file gauging_stations.csv), and saves the extraction as a CSV file.
ncextract -i ./gauging_stations.csv -d ./EFAS5/discharge/maps/ -o ./EFAS5/discharge/timeseries/results_ncextract.csv
The function can be imported in a Python script. It takes as inputs two xarray.Dataset
: one defining the input maps and the other the points of interest. The result of the extraction can be another xarray.Dataset
, or saved as a file either in CSV or NetCDF format.
from lisfloodutilities.ncextract import extract_timeseries
# load desired input maps and points
# maps: xarray.Dataset
# points: xarray.Dataset
# extract time series and save in a xarray.Dataset
ds = extract_timeseries(maps, points, output=None)