geojsonNetcdfTransects
An analysis task for interpolating MPAS fields to transects specified by files in geojson or NetDF format.
Component and Tags:
component: ocean
tags: climatology, transect, geojson, netcdf
Configuration Options
The following configuration options are available for this task:
[geojsonNetcdfTransects]
## options related to plotting model transects at points determined by a
## user-specified geojson or NetCDF file.
##
## To generate your own geojson file, go to:
## http://geojson.io/
## and draw one or more polylines, then add a name to each:
##
## "properties": {
## "name": "My Favorite Name"
## },
## and save the file as GeoJSON (say transects.geojson). Finally, set the
## option:
## geojsonFiles = ['transects.geojson']
## (giving an absolute path if necessary) in your custom config file.
##
## If you provide a NetCDF file instead, it simply needs to have 'lat` and
## `lon` variables. The `lat` and `lon` variables should be 1D arrays
## with the same dimension name (e.g. 'nPoints'). The name of the file
## (without the base path or extension) will serve as the transect name with
## underscores converted to spaces.
# a list of geojson and/or NetCDF files. The geojson files must contain
# lat/lon points in LineStrings to be plotted. The NetCDF files need 'lat'
# and 'lon' variables with the same dimesion name. If relative paths are
# given, they are relative to the current working directory. The files must
# be listed in quotes, e.g.:
# geojsonOrNetcdfFiles = ['file1.geojson', '/path/to/file2.geojson', 'file3.nc']
geojsonOrNetcdfFiles = []
# a list of dictionaries for each field to plot. The dictionary includes
# prefix (used for file names, task names and sections) as well as the mpas
# name of the field, units for colorbars and a the name as it should appear
# in figure titles and captions.
fields =
[{'prefix': 'temperature',
'mpas': 'timeMonthly_avg_activeTracers_temperature',
'units': r'$$\degree$$C',
'titleName': 'Potential Temperature'},
{'prefix': 'salinity',
'mpas': 'timeMonthly_avg_activeTracers_salinity',
'units': r'PSU',
'titleName': 'Salinity'},
{'prefix': 'potentialDensity',
'mpas': 'timeMonthly_avg_potentialDensity',
'units': r'kg m$$^{-3}$$',
'titleName': 'Potential Density'},
{'prefix': 'zonalVelocity',
'mpas': 'timeMonthly_avg_velocityZonal',
'units': r'm s$$^{-1}$$',
'titleName': 'Zonal Velocity'},
{'prefix': 'meridionalVelocity',
'mpas': 'timeMonthly_avg_velocityMeridional',
'units': r'm s$$^{-1}$$',
'titleName': 'Meridional Velocity'},
{'prefix': 'vertVelocity',
'mpas': 'timeMonthly_avg_vertVelocityTop',
'units': r'm s$$^{-1}$$',
'titleName': 'Vertical Velocity'},
{'prefix': 'vertDiff',
'mpas': 'timeMonthly_avg_vertDiffTopOfCell',
'units': r'm s$$^{-1}$$',
'titleName': 'Vertical Diffusivity'},
{'prefix': 'vertVisc',
'mpas': 'timeMonthly_avg_vertViscTopOfCell',
'units': r'm s$$^{-1}$$',
'titleName': 'Vertical Viscosity'},
]
# Times for comparison times (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct,
# Nov, Dec, JFM, AMJ, JAS, OND, ANN)
seasons = ['ANN']
# The approximate horizontal resolution (in km) of each transect. Latitude/
# longitude between observation points will be subsampled at this interval.
# Use 'obs' to indicate no subsampling. Use 'mpas' to indicate plotting of
# model data on the native grid.
#horizontalResolution = mpas
#horizontalResolution = obs
horizontalResolution = 5
# The name of the vertical comparison grid. Valid values are 'mpas' for the
# MPAS vertical grid or any other name if the vertical grid is defined by
# 'verticalComparisonGrid'
#verticalComparisonGridName = mpas
verticalComparisonGridName = uniform_0_to_4000m_at_10m
# The vertical comparison grid if 'verticalComparisonGridName' is not 'mpas'.
# This should be numpy array of (typically negative) elevations (in m).
# The first and last entries are used as axis bounds for 'mpas' vertical
# comparison grids
verticalComparisonGrid = numpy.linspace(0, -4000, 401)
# A range for the y axis (if any)
verticalBounds = []
# The minimum weight of a destination cell after remapping. Any cell with
# weights lower than this threshold will therefore be masked out.
renormalizationThreshold = 0.01
[geojsonNetcdfTemperatureTransects]
## options related to plotting geojson transects of potential temperature
# colormap for model/observations
colormapNameResult = RdYlBu_r
# whether the colormap is indexed or continuous
colormapTypeResult = continuous
# the type of norm used in the colormap
normTypeResult = linear
# A dictionary with keywords for the norm
normArgsResult = {'vmin': -2., 'vmax': 30.}
# place the ticks automatically by default
# colorbarTicksResult = numpy.linspace(-2., 2., 9)
# contour line levels (use [] for automatic contour selection, 'none' for no
# contour lines)
contourLevelsResult = []
# colormap for differences
colormapNameDifference = balance
# whether the colormap is indexed or continuous
colormapTypeDifference = continuous
# the type of norm used in the colormap
normTypeDifference = linear
# A dictionary with keywords for the norm
normArgsDifference = {'vmin': -2., 'vmax': 2.}
# place the ticks automatically by default
# colorbarTicksDifference = numpy.linspace(-2., 2., 9)
# contour line levels (use [] for automatic contour selection, 'none' for no
# contour lines)
contourLevelsDifference = []
[geojsonNetcdfSalinityTransects]
## options related to plotting geojson transects of salinity
# colormap for model/observations
colormapNameResult = haline
# whether the colormap is indexed or continuous
colormapTypeResult = continuous
# the type of norm used in the colormap
normTypeResult = linear
# A dictionary with keywords for the norm
normArgsResult = {'vmin': 30, 'vmax': 39.0}
# place the ticks automatically by default
# colorbarTicksResult = numpy.linspace(34.2, 35.2, 9)
# contour line levels (use [] for automatic contour selection, 'none' for no
# contour lines)
contourLevelsResult = []
# colormap for differences
colormapNameDifference = balance
# whether the colormap is indexed or continuous
colormapTypeDifference = continuous
# the type of norm used in the colormap
normTypeDifference = linear
# A dictionary with keywords for the norm
normArgsDifference = {'vmin': -0.5, 'vmax': 0.5}
# place the ticks automatically by default
# colorbarTicksDifference = numpy.linspace(-0.5, 0.5, 9)
# contour line levels (use [] for automatic contour selection, 'none' for no
# contour lines)
contourLevelsDifference = []
[geojsonNetcdfPotentialDensityTransects]
## options related to plotting geojson transects of potential density
# colormap for model/observations
colormapNameResult = Spectral_r
# whether the colormap is indexed or continuous
colormapTypeResult = continuous
# the type of norm used in the colormap
normTypeResult = linear
# A dictionary with keywords for the norm
normArgsResult = {'vmin': 1026.5, 'vmax': 1028.}
# place the ticks automatically by default
# colorbarTicksResult = numpy.linspace(1026., 1028., 9)
# contour line levels (use [] for automatic contour selection, 'none' for no
# contour lines)
contourLevelsResult = []
# colormap for differences
colormapNameDifference = balance
# whether the colormap is indexed or continuous
colormapTypeDifference = continuous
# the type of norm used in the colormap
normTypeDifference = linear
# A dictionary with keywords for the norm
normArgsDifference = {'vmin': -0.3, 'vmax': 0.3}
# place the ticks automatically by default
# colorbarTicksDifference = numpy.linspace(-0.3, 0.3, 9)
# contour line levels (use [] for automatic contour selection, 'none' for no
# contour lines)
contourLevelsDifference = []
[geojsonNetcdfZonalVelocityTransects]
## options related to plotting geojson transects of zonal velocity
# colormap for model/observations
colormapNameResult = delta
# whether the colormap is indexed or continuous
colormapTypeResult = continuous
# the type of norm used in the colormap
normTypeResult = linear
# A dictionary with keywords for the norm
normArgsResult = {'vmin': -0.05, 'vmax': 0.05}
# determine the ticks automatically by default, uncomment to specify
# colorbarTicksResult = numpy.linspace(-0.2, 0.2, 9)
# contour line levels (use [] for automatic contour selection, 'none' for no
# contour lines)
contourLevelsResult = 'none'
# colormap for differences
colormapNameDifference = balance
# whether the colormap is indexed or continuous
colormapTypeDifference = continuous
# the type of norm used in the colormap
normTypeDifference = linear
# A dictionary with keywords for the norm
normArgsDifference = {'vmin': -0.05, 'vmax': 0.05}
# determine the ticks automatically by default, uncomment to specify
# colorbarTicksDifference = numpy.linspace(-0.2, 0.2, 9)
# contour line levels (use [] for automatic contour selection, 'none' for no
# contour lines)
contourLevelsDifference = 'none'
[geojsonNetcdfMeridionalVelocityTransects]
## options related to plotting geojson transects of meridional velocity
# colormap for model/observations
colormapNameResult = delta
# whether the colormap is indexed or continuous
colormapTypeResult = continuous
# the type of norm used in the colormap
normTypeResult = linear
# A dictionary with keywords for the norm
normArgsResult = {'vmin': -0.05, 'vmax': 0.05}
# determine the ticks automatically by default, uncomment to specify
# colorbarTicksResult = numpy.linspace(-0.2, 0.2, 9)
# contour line levels (use [] for automatic contour selection, 'none' for no
# contour lines)
contourLevelsResult = 'none'
# colormap for differences
colormapNameDifference = balance
# whether the colormap is indexed or continuous
colormapTypeDifference = continuous
# the type of norm used in the colormap
normTypeDifference = linear
# A dictionary with keywords for the norm
normArgsDifference = {'vmin': -0.05, 'vmax': 0.05}
# determine the ticks automatically by default, uncomment to specify
# colorbarTicksDifference = numpy.linspace(-0.2, 0.2, 9)
# contour line levels (use [] for automatic contour selection, 'none' for no
# contour lines)
contourLevelsDifference = 'none'
[geojsonNetcdfVertVelocityTransects]
## options related to plotting geojson transects of meridional velocity
# colormap for model/observations
colormapNameResult = delta
# whether the colormap is indexed or continuous
colormapTypeResult = continuous
# the type of norm used in the colormap
normTypeResult = linear
# A dictionary with keywords for the norm
normArgsResult = {'vmin': -1e-5, 'vmax': 1e-5}
# determine the ticks automatically by default, uncomment to specify
# colorbarTicksResult = numpy.linspace(-0.2, 0.2, 9)
# contour line levels (use [] for automatic contour selection, 'none' for no
# contour lines)
contourLevelsResult = 'none'
# colormap for differences
colormapNameDifference = balance
# whether the colormap is indexed or continuous
colormapTypeDifference = continuous
# the type of norm used in the colormap
normTypeDifference = linear
# A dictionary with keywords for the norm
normArgsDifference = {'vmin': -1e-5, 'vmax': 1e-5}
# determine the ticks automatically by default, uncomment to specify
# colorbarTicksDifference = numpy.linspace(-0.2, 0.2, 9)
# contour line levels (use [] for automatic contour selection, 'none' for no
# contour lines)
contourLevelsDifference = 'none'
[geojsonNetcdfVertDiffTransects]
## options related to plotting geojson transects of meridional velocity
# colormap for model/observations
colormapNameResult = diff
# whether the colormap is indexed or continuous
colormapTypeResult = continuous
# the type of norm used in the colormap
normTypeResult = linear
# A dictionary with keywords for the norm
normArgsResult = {'vmin': -0.5, 'vmax': 0.5}
# determine the ticks automatically by default, uncomment to specify
# colorbarTicksResult = numpy.linspace(-0.2, 0.2, 9)
# contour line levels (use [] for automatic contour selection, 'none' for no
# contour lines)
contourLevelsResult = 'none'
# colormap for differences
colormapNameDifference = balance
# whether the colormap is indexed or continuous
colormapTypeDifference = continuous
# the type of norm used in the colormap
normTypeDifference = linear
# A dictionary with keywords for the norm
normArgsDifference = {'vmin': -0.5, 'vmax': 0.5}
# determine the ticks automatically by default, uncomment to specify
# colorbarTicksDifference = numpy.linspace(-0.2, 0.2, 9)
# contour line levels (use [] for automatic contour selection, 'none' for no
# contour lines)
contourLevelsDifference = 'none'
[geojsonNetcdfVertViscTransects]
## options related to plotting geojson transects of meridional velocity
# colormap for model/observations
colormapNameResult = diff
# whether the colormap is indexed or continuous
colormapTypeResult = continuous
# the type of norm used in the colormap
normTypeResult = linear
# A dictionary with keywords for the norm
normArgsResult = {'vmin': -1., 'vmax': 1.}
# determine the ticks automatically by default, uncomment to specify
# colorbarTicksResult = numpy.linspace(-0.2, 0.2, 9)
# contour line levels (use [] for automatic contour selection, 'none' for no
# contour lines)
contourLevelsResult = 'none'
# colormap for differences
colormapNameDifference = balance
# whether the colormap is indexed or continuous
colormapTypeDifference = continuous
# the type of norm used in the colormap
normTypeDifference = linear
# A dictionary with keywords for the norm
normArgsDifference = {'vmin': -1., 'vmax': 1.}
# determine the ticks automatically by default, uncomment to specify
# colorbarTicksDifference = numpy.linspace(-0.2, 0.2, 9)
# contour line levels (use [] for automatic contour selection, 'none' for no
# contour lines)
contourLevelsDifference = 'none'
Geojson Files
This task takes a list of geojson or NetCDF file names (supplied as a python
list of str
):
geojsonOrNetcdfFiles = ['file1.geojson', '/path/to/file2.geojson']
Geojson transects are specified by LineString
objects in the files. Some
examples are provided in the MPAS geometric features repository. You can
also generate your own very easily at To generate your own geojson file, go to
geojson.io and draw one or more polylines, then add a name to each:
...
"properties": {
"name": "My Favorite Name"
},
...
and save the file as GeoJSON (say transects.geojson). Finally, set the option:
geojsonFiles = ['transects.geojson']
(giving an absolute path if necessary) in your custom config file.
NetCDF Files
As an alternative to (or in addition to) geojson files, you may supply files in
NetCDF format. As before, you provide a list of file names as a python
list of str
:
geojsonOrNetcdfFiles = ['file1.nc', '/path/to/file2.nc']
In this case, the stem of the filename (file1
and file2
in the example)
also serves as the name of the transect. The NetCDF files must contain
lat
and lon
variables. These variables should be 1D arrays with the
same dimension name (e.g. nPoints
).
Fields
Since there are no observations associated with geojson transects, you are
free to choose which MPAS fields you would like to plot. These fields are
provided as a python dictionary. The keys are names for the fields (anything
you would like use as a prefix on files and subtask names, best if it does
not contain spaces). The values are python dictionaries. The values
associate with the mpas
key are the names of the 3D fields where transects
are desired. The units
entry indicates the units to display on the
colorbar. The titleName
entry specifies the name of the field to include
in plot titles and captions.
Each field must have a corresponding section in the config file defining its
color maps. For example, temperature
has an associated
[geojsonNetcdfTemperatureTransect]
section.
Other Options
- For details on the remaining configuration options, see:
Example Result
