imod.formats.idf.save#
- imod.formats.idf.save(path, a, nodata=1e+20, pattern=None, dtype=<class 'numpy.float32'>)[source]#
Write a xarray.DataArray to one or more IDF files
If the DataArray only has
y
andx
dimensions, a single IDF file is written, like theimod.idf.write
function. This function is more general and also supportstime
andlayer
dimensions. It will split these up, give them their own filename according to the conventions inimod.util.path.compose
, and write them each.- Parameters:
path (str or Path) – Path to the IDF file to be written. This function decides on the actual filename(s) using conventions.
a (xarray.DataArray) – DataArray to be written. It needs to have dimensions (‘y’, ‘x’), and optionally
layer
andtime
.nodata (float, optional) – Nodata value in the saved IDF files. Xarray uses nan values to represent nodata, but these tend to work unreliably in iMOD(FLOW). Defaults to a value of 1.0e20.
pattern (str) – Format string which defines how to create the filenames. See examples.
dtype (type,
{np.float32, np.float64}
, default isnp.float32
.) – Whether to write single precision (np.float32
) or double precision (np.float64
) IDF files.
Example
Consider a DataArray
da
that has dimensions('layer', 'y', 'x')
, with the layer dimension consisting of layer 1 and 2:>>> imod.idf.save('path/to/head', da)
This writes the following two IDF files:
path/to/head_l1.idf
andpath/to/head_l2.idf
.To disable adding coordinates to the files, specify
pattern="{name}"
:>>> imod.idf.save('path/to/head', da, pattern="{name}")
The “.idf” extension will always be added automatically.
It is possible to generate custom filenames using a format string. The default filenames would be generated by the following format string:
>>> imod.idf.save("example", pattern="{name}_l{layer}{extension}")
If you desire zero-padded numbers that show up neatly sorted in a file manager, you may specify:
>>> imod.idf.save("example", pattern="{name}_l{layer:02d}{extension}")
In this case, a 0 will be padded for single digit numbers (‘1’ will become ‘01’).
To get a date with dashes, use the following pattern:
>>> pattern="{name}_{time:%Y-%m-%d}_l{layer}{extension}"