Loading NetCDF datafiles
Underlying assumptions
- There are NetCDF files in a folder (in what follows, argument
foldername) that contain (time-dependent) scalar/velocity fields on a regular (in space and time) grid spanning the whole globe in longitude/latitude units (in particular, you do not care about the poles). - Each file corresponds to a single-time snapshot of this field (and spacing between times are constant).
- The filenames are orded ascending with time.
- Each file has a field with longitude and latitude coordinates as a 1d array (uniform accross files).
- You have a regular expression (e.g.
r"^nrt_global_allsat_phy_l4_([0-9][0-9][0-9][0-9])([0-9][0-9])([0-9][0-9])_.*.nc$") that matches only the files you want (in what follows, argumentschema).
Loading velocity fields
OceanTools.read_ocean_velocities — Functionread_ocean_velocities(foldername,start_date,end_date,boundary_t, [schema,LL_space=nothing,UR_space=nothing,...])Reads velocity fields in a space-time window. Uses the whole globe if LL_space and UR_space are nothing. Else the rectangle of points will include spatially include the rectangle bounded by LL_space and UR_space.
The first timestep loaded is the first one in the folder foldername matching the regular expression schema where the "time" variable (converted to Int via kwarg date_to_int) is not less than start_date.
Spacing of "time" is assumed to be 1 day, change date_to_int if your data is different (note that the units of the velocity fields in the files were assumed to be in m/s and are converted to deg/day, you will have to manually rescale if spacing is not 1 day ). The range will include end_date
Supports 360-periodic longitude in the sense that LL_space[1] can larger than UR_space[1]. However, it cannot extend by more than one period. If you are very close to one period use the whole globe to avoid issues.
Other keyword arguments are:
lon_labelwith default "longitude"lat_labelwith default "latitude"remove_nanwith defaulttrue, sets missing values to 0 instead ofNaNarray_ctorwith defaultSharedArray{Float64}to specify underlying storage to use.date_to_intwith default_daysSince1950is the method for convertingDateTimeobjects toIntfilename_match_to_date(if not equal tonothing) converts the match of the regexschemawith the filename into the (integer) date
of the contents.
Returns (res_full, Ust1, (Lon, Lat, times)) where res_full is the corresponding ItpMetdata object and Ust1 is a slice of the x-component at the first timestep without NaNs removed
Loading scalar fields
OceanTools.read_ocean_scalars — Functionread_ocean_scalars(args...; scalar_field_name="ssh", kwargs...)Reads in a scalar field, otherwise like read_ocean_velocities. Resulting data field in the ItpMetdata is a 1-tuple with an array (of type given by array_ctor).
In each case, the end result contains an ItpMetadata that contains all of the data needed for interpolation.
Pseudocode example
p, _ = read_ocean_velocities(arguments)
uv_trilinear(u,p,t)