Open donaldwj opened 9 months ago
For context/reference:
They may/may not be helpful in this case
Certainly worth looking at. Ideally we don't want netcdf creation code in more locations than necessary.
Wasn't the intention with the mdframe work that the rest of the framework code would assign its results into that, and the output would only have to be configured and implemented relative to mdframe?
per catchment svg files
CSV files?
Is there a particular format of NetCDF files (variable names, dimension ordering, metadata conventions, etc) that the forcings engine or other common code around NWS or NOAA or the broader community expects? If so, the NetCDF files we generate should ideally conform to that
@jduckerOWP
NextGen_sample_forcing_output.tar.gz
I've dropped a tar file that contains a sample output of the NextGen hydrofabric forcing file that essentially has the standard formatting from previous NWM forcings. I would advise to stick to at least the netcdf metadata formatting highlighted here for the forcing variables. Gridded data would have an "x", "y", and "crs" variables projecting the geospatial coordinates and its coordinate reference system of the gridded output instead of "catchment ids" like what is in the attached file. Mesh forcing data on the other want forcing data output along both, the elements and nodes of a mesh pending on the way a given mesh model handles forcing data. I think we should have a further discussion at least from what is expected by the mdframe to output within mesh domains along the coastal or great lake regions for a given NextGen user.
Phil the current operational files do have a particular format and will need the ability to recreate them, they however do not follow general practice making the current files difficult to use.
Gridded data can contain the projected coordinates although that is somewhat wasteful of space particularly when doing one file per timestep. I would like to improve hydrofabric output files, we can keep all existing data but the spatial location of outputs from the hydrofabric should be included in addition to id of the location. The current stream output files are very hard to use.
Gridded data can contain the projected coordinates although that is somewhat wasteful of space particularly when doing one file per timestep.
I would base your decisions off https://gdal.org/drivers/raster/netcdf.html#georeference and the supporting documentation there. Additionally, if space is a concern, maybe a reduced horizontal grid would help since it's (generally) better compressible: http://cfconventions.org/Data/cf-conventions/cf-conventions-1.11/cf-conventions.html#reduced-horizontal-grid
alternatively: not sure if it's widely-usable, but grid metadata can build a grid as well: origin, extent, and resolution.
I would like to improve hydrofabric output files, we can keep all existing data but the spatial location of outputs from the hydrofabric should be included in addition to id of the location. The current stream output files are very hard to use.
On the other hand, I'd probably stay away from trying to include vector geometry (other than points) in netCDF... it's annoyingly complicated http://cfconventions.org/Data/cf-conventions/cf-conventions-1.8/cf-conventions.html#geometries (has to be CF-1.8 for GDAL-compat, and only that or WKT is supported, but not WKB, which would've been easier 🤦🏾). From a data-science perspective, joining the outputs to the hydrofabric is trivial, since it's just a LEFT JOIN
, so I wouldn't worry too much about usability in that aspect. Also, adding geometries is going to blow up the size of the outputs...
Your thoughts on implementation choices in #729 please
Adding configuration mechanisms for establishing netcdf output.
Currently the only output generated by the Ngen Framework are per catchment csv files with stream flow and output files created by the formulation libraries (which should be none). For operational usage as well as community usage netcdf output and output of variables other than stream flow is necessary.
Current behavior
Infiltration excess is given for each catchment
Expected behavior
Streamflow output at each nexus as well as additional grid or per nexus variables as defined by the user
Proposed High level design
Proposed Json for output variable description
Example configurations
New Status
Open Question
For any given layer, how do we determine which variables from contained models are output? There are several possibilities.
We are looking for a solution that is will work both for operations and research usage.
Defaults variables sizes from layer type