geojsonTransects

An analysis task for interpolating MPAS fields to transects specified by files in geojson format..

Component and Tags:

component: ocean
tags: climatology, transect, geojson

Configuration Options

The following configuration options are available for this task:

[geojsonTransects]
## options related to plotting model transects at points determined by a
## geojson 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.

# a list of geojson files containing lat/lon points in LineStrings to be
# plotted.  If relative paths are given, they are relative to the current
# working directory.  The files must be listed in quotes, e.g.:
# geojsonFiles = ['file1.geojson', '/path/to/file2.geojson']
geojsonFiles = []

# 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'}]

# 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.
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).
verticalComparisonGrid = numpy.linspace(0, -4000, 401)

# 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


[geojsonTemperatureTransects]
## options related to plotting geojson transects of potential temperature

# colormap for model/observations
colormapNameResult = RdYlBu_r
# the type of norm used in the colormap
normTypeResult = linear
# A dictionary with keywords for the SemiLogNorm
normArgsResult = {'vmin': -2., 'vmax': 30.}
# place the ticks automatically by default
# colorbarTicksResult = numpy.linspace(-2., 2., 9)

# colormap for differences
colormapNameDifference = balance
# the type of norm used in the colormap
normTypeDifference = linear
# A dictionary with keywords for the SemiLogNorm
normArgsDifference = {'vmin': -2., 'vmax': 2.}
# place the ticks automatically by default
# colorbarTicksDifference = numpy.linspace(-2., 2., 9)


[geojsonSalinityTransects]
## options related to plotting geojson transects of salinity

# colormap for model/observations
colormapNameResult = haline
# the type of norm used in the colormap
normTypeResult = linear
# A dictionary with keywords for the SemiLogNorm
normArgsResult = {'vmin': 30, 'vmax': 39.0}
# place the ticks automatically by default
# colorbarTicksResult = numpy.linspace(34.2, 35.2, 9)

# colormap for differences
colormapNameDifference = balance
# the type of norm used in the colormap
normTypeDifference = linear
# A dictionary with keywords for the SemiLogNorm
normArgsDifference = {'vmin': -0.5, 'vmax': 0.5}
# place the ticks automatically by default
# colorbarTicksDifference = numpy.linspace(-0.5, 0.5, 9)


[geojsonPotentialDensityTransects]
## options related to plotting geojson transects of potential density

# colormap for model/observations
colormapNameResult = Spectral_r
# 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)

# colormap for differences
colormapNameDifference = balance
# 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)


[geojsonZonalVelocityTransects]
## options related to plotting geojson transects of zonal velocity

# colormap for model/observations
colormapNameResult = delta
# color indices into colormapName for filled contours
# the type of norm used in the colormap
normTypeResult = linear
# A dictionary with keywords for the norm
normArgsResult = {'vmin': -0.2, 'vmax': 0.2}
# determine the ticks automatically by default, uncomment to specify
# colorbarTicksResult = numpy.linspace(-0.2, 0.2, 9)

# colormap for differences
colormapNameDifference = balance
# the type of norm used in the colormap
normTypeDifference = linear
# A dictionary with keywords for the norm
normArgsDifference = {'vmin': -0.2, 'vmax': 0.2}
# determine the ticks automatically by default, uncomment to specify
# colorbarTicksDifference = numpy.linspace(-0.2, 0.2, 9)


[geojsonMeridionalVelocityTransects]
## options related to plotting geojson transects of meridional velocity

# colormap for model/observations
colormapNameResult = delta
# color indices into colormapName for filled contours
# the type of norm used in the colormap
normTypeResult = linear
# A dictionary with keywords for the norm
normArgsResult = {'vmin': -0.2, 'vmax': 0.2}
# determine the ticks automatically by default, uncomment to specify
# colorbarTicksResult = numpy.linspace(-0.2, 0.2, 9)

# colormap for differences
colormapNameDifference = balance
# the type of norm used in the colormap
normTypeDifference = linear
# A dictionary with keywords for the norm
normArgsDifference = {'vmin': -0.2, 'vmax': 0.2}
# determine the ticks automatically by default, uncomment to specify
# colorbarTicksDifference = numpy.linspace(-0.2, 0.2, 9)

Geojson Files

This task takes a list of geojson file names (supplied as a python list of str:

geojsonFiles = ['file1.geojson', '/path/to/file2.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.

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 [geojsonTemperatureTransect] section.

Other Options

For details on the remaining configuration options, see:

Example Result

../_images/geojson_transect.png