<div dir="ltr">Hi all, <div><br></div><div>I'd like to contribute a pull request to better handle netCDF files in pywps but I don't know where to start. </div><div><br></div><div>We have a number of processes taking <a href="https://www.unidata.ucar.edu/software/netcdf/">netCDF</a> files as inputs. For those less familiar with the format, netCDF is based on HDF5 and a set of <a href="http://cfconventions.org/">conventions</a>. It is the standard data format in oceanography and climatology. netCDF files are usually stored on servers with support for <a href="https://www.opendap.org/">opendap</a>. This means that users can either download the netCDF file and then open it locally, or use the opendap protocol to open it remotely. What that means is that you can do </div><div><br></div><div><font face="monospace">from netCDF4 import nc</font></div><div><font face="monospace">ds1 = nc.Dataset("<path to local file>")</font></div><div><font face="monospace">ds2 = nc.Dataset("<link to opendap address>")</font></div><div><br></div><div>and both ds1 and ds2 will behave identically. However ds2 is not downloaded locally, but rather read remotely on demand. If a file contains a 3D matrix (time, lat, lon), you can read one slice of the matrix without downloading it all. </div><div><br></div><div>Some of our pywps.Process support both netCDF file and opendap access. We define a ComplexInput for the address to an actual netCDF file, and a LiteralInput for the opendap address.</div><div><br></div><div>My question is whether there would be a clean way for pywps to support both modes with one ComplexInput? Internally, pywps would check if the address supports opendap (just check if nc.Dataset(url) works), and if not, would download the file locally to the server. </div><div><br></div><div>In both cases, we could do </div><div><br></div><div><font face="monospace">ds = nc.Dataset(requests.inputs['resource'][0].file)</font></div><div><font face="monospace"><br></font></div><div>I'm willing to put the time to do it, I just don't know where to start. </div><div><br></div><div>Thanks,</div><div><br></div><div>David</div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div></div>