lair.inventories.Vulcan#

class lair.inventories.Vulcan(time_step='annual', region='US', inventory_dir=None)[source]#

Bases: Inventory

The Vulcan Project

https://vulcan.rc.nau.edu/ v3: https://daac.ornl.gov/NACP/guides/Vulcan_V3_Annual_Emissions.html

The Vulcan Project quantifies all fossil fuel CO2 emissions for the entire United States at high space- and time-resolution with details on economic sector, fuel, and combustion process. It was created by the research team of Dr. Kevin Robert Gurney at Northern Arizona University.

Gurney, K.R., J. Liang, R. Patarasuk, Y. Song, J. Huang, and G. Roest. 2019. Vulcan: High-Resolution Annual Fossil Fuel CO2 Emissions in USA, 2010-2015, Version 3. ORNL DAAC, Oak Ridge, Tennessee, USA. https://doi.org/10.3334/ORNLDAAC/1741

Note

Vulcan distributes emissions as mass of carbon (tC, i.e. Mg C km-2 yr-1). lair converts them to mass of CO2 on load (multiplying by M(CO2)/M(C) ~= 3.664) so the values are consistent with pollutant='CO2' and with unit conversions to moles. Divide by that factor to recover the published tC values. Cells without emissions (NaN in the files) are set to 0.

Parameters:
  • time_step (str)

  • region (Literal['US', 'AK'])

  • inventory_dir (str | None)

get_files(uncertainty='central')[source]#

Get the inventory files.

Returns:

None | list[Path] – The inventory files.

Return type:

list[Path]

get_uncertainties(uncertainty)[source]#

Get the lower or upper 95% confidence bound of the emissions.

Parameters:

uncertainty (Literal['lower', 'upper']) – Which bound to load.

Returns:

xr.Dataset – The bound for each sector over the full (unclipped) domain, in the source units (not pint-quantified).

Return type:

Dataset

clip(bbox=None, extent=None, geom=None, crs=None, inplace=False, **kwargs)[source]#

Clip the data to the given bounds.

Input bounds must be in the same CRS as the data.

Note

The result can be slightly different between supplying a geom and a bbox/extent. Clipping with a geom seems to be exclusive of the bounds, while clipping with a bbox/extent seems to be inclusive of the bounds.

Parameters:
  • bbox (tuple[minx, miny, maxx, maxy]) – The bounding box to clip the data to.

  • extent (tuple[minx, maxx, miny, maxy]) – The extent to clip the data to.

  • geom (shapely.Polygon) – The geometry to clip the data to.

  • crs (Any) – The CRS of the input geometries. If not provided, the CRS of the data is used.

  • inplace (bool, optional) – Whether to modify the data in place. Default is False (returns a new, clipped inventory).

  • kwargs (Any) – Additional keyword arguments to pass to the rioxarray clip method.

Returns:

Vulcan – The clipped inventory.

Return type:

Self

reproject(resolution=0.01, regrid_method='conservative', inplace=False, force=False)[source]#

Reproject the data to a lat lon rectilinear grid.

Tip

This method is memory intensive and may require a lot of RAM. It is highly recommended to clip the data first.

Parameters:
  • resolution (float | tuple[x_res, y_res]) – The new resolution in degrees. If a single value is provided, the resolution is assumed to be the same in both dimensions.

  • regrid_method (str, optional) – The regridding method, by default ‘conservative’.

  • inplace (bool, optional) – Whether to modify the object in place. Default is False.

  • force (bool) – Whether to override the clipping requirement

Returns:

Vulcan – The reprojected inventory (on EPSG:4326 lat/lon).

Return type:

Self