Module src.impacts.carbon

None

None

View Source
# -*- coding: utf-8 -*-

# Carbon storage estimation.

from ..gus.allometrics import Species

class Carbon():

    """Species specific biomass and carbon storage estimator."""

    #  Unit: Kg, Ref: iTree, 2020

    storage_cap = 7500

    # The coeff is used to estimate carbon storage through biomass.

    # The stock of carbon is estimated by multiplying tree biomass by 0.5 (Chow and Rolfe 1989).

    coeff = 0.5

    def __init__(self, allometrics, species_name=None):

        """Constructor method.

        Args:

            allometrics (:obj:`str`): The name of the file that keeps allometrics of the tree species for the site.

            species_name: (:obj:`string`): name of the species in 'genusName_speciesName' format.

                Ex: 'picea_abies'. Use the iTree naming scheme: https://database.itreetools.org/#/speciesSearch

        Returns:

            None

        """

        self.Allometrics = Species(allometrics)

        if species_name:

            self.species_name = self.Allometrics.fuzzymatching(species_name)

            self.f_biomass =self.Allometrics.get_eqn_biomass(species_name)

    def compute_carbon_storage(self, dbh, species_name = 'decidu', height=None) -> float:

        """The carbon storage calculation for a tree, in KG.

        Args:

            dbh: (:obj:`float`): the DBH measure which is diameter in cm of the trunk usually measured at 1.3m from the ground.

            species_name: (:obj:`string`): name of the species in 'genusName_speciesName' format.

                Ex: 'picea_abies'. Use the iTree naming scheme: https://database.itreetools.org/#/speciesSearch

            height: (:obj:`float`): The tree height in meters.

        Returns:

            (:obj:`float`): Carbon in Kg.

        TODO:

            Update the method to allow receive the height data and use the allometric equations

            with height parameter.

        """

        # Load species composition and their allometrics

        self.species_name = self.Allometrics.fuzzymatching(species_name)

        self.f_biomass =self.Allometrics.get_eqn_biomass(species_name)

        biomass = self.f_biomass(dbh)

        carbon_estimate = biomass * Carbon.coeff

        # min() function prevents carbon storage from over estimation for very large trees

        carbon_storage = min(carbon_estimate, Carbon.storage_cap)

        return carbon_storage

    def compute_biomass(self, dbh, species_name = 'decidu', height=None) -> float:

        """The carbon storage calculation for a tree, in KG.

        Args:

            species_name: (:obj:`string`): name of the species in 'genusName_speciesName' format.

                    Ex: 'picea_abies'. Use the iTree naming scheme: https://database.itreetools.org/#/speciesSearch

            dbh: (:obj:`float`): the DBH measure which is diameter in cm of the trunk usually measured at 1.3m from the ground.

            height: (:obj:`float`): The tree height in meters.

        Returns:

            (:obj:`float`): Carbon in Kg.

        TODO:

            Convert and extend this into carbon estimation object.

        """

        carbon_estimate = self.compute_carbon_storage(dbh, species_name)

        return carbon_estimate / Carbon.coeff

Classes

Carbon

class Carbon(
    allometrics,
    species_name=None
)
View Source
class Carbon():

    """Species specific biomass and carbon storage estimator."""

    #  Unit: Kg, Ref: iTree, 2020

    storage_cap = 7500

    # The coeff is used to estimate carbon storage through biomass.

    # The stock of carbon is estimated by multiplying tree biomass by 0.5 (Chow and Rolfe 1989).

    coeff = 0.5

    def __init__(self, allometrics, species_name=None):

        """Constructor method.

        Args:

            allometrics (:obj:`str`): The name of the file that keeps allometrics of the tree species for the site.

            species_name: (:obj:`string`): name of the species in 'genusName_speciesName' format.

                Ex: 'picea_abies'. Use the iTree naming scheme: https://database.itreetools.org/#/speciesSearch

        Returns:

            None

        """

        self.Allometrics = Species(allometrics)

        if species_name:

            self.species_name = self.Allometrics.fuzzymatching(species_name)

            self.f_biomass =self.Allometrics.get_eqn_biomass(species_name)

    def compute_carbon_storage(self, dbh, species_name = 'decidu', height=None) -> float:

        """The carbon storage calculation for a tree, in KG.

        Args:

            dbh: (:obj:`float`): the DBH measure which is diameter in cm of the trunk usually measured at 1.3m from the ground.

            species_name: (:obj:`string`): name of the species in 'genusName_speciesName' format.

                Ex: 'picea_abies'. Use the iTree naming scheme: https://database.itreetools.org/#/speciesSearch

            height: (:obj:`float`): The tree height in meters.

        Returns:

            (:obj:`float`): Carbon in Kg.

        TODO:

            Update the method to allow receive the height data and use the allometric equations

            with height parameter.

        """

        # Load species composition and their allometrics

        self.species_name = self.Allometrics.fuzzymatching(species_name)

        self.f_biomass =self.Allometrics.get_eqn_biomass(species_name)

        biomass = self.f_biomass(dbh)

        carbon_estimate = biomass * Carbon.coeff

        # min() function prevents carbon storage from over estimation for very large trees

        carbon_storage = min(carbon_estimate, Carbon.storage_cap)

        return carbon_storage

    def compute_biomass(self, dbh, species_name = 'decidu', height=None) -> float:

        """The carbon storage calculation for a tree, in KG.

        Args:

            species_name: (:obj:`string`): name of the species in 'genusName_speciesName' format.

                    Ex: 'picea_abies'. Use the iTree naming scheme: https://database.itreetools.org/#/speciesSearch

            dbh: (:obj:`float`): the DBH measure which is diameter in cm of the trunk usually measured at 1.3m from the ground.

            height: (:obj:`float`): The tree height in meters.

        Returns:

            (:obj:`float`): Carbon in Kg.

        TODO:

            Convert and extend this into carbon estimation object.

        """

        carbon_estimate = self.compute_carbon_storage(dbh, species_name)

        return carbon_estimate / Carbon.coeff

Class variables

coeff
storage_cap

Methods

compute_biomass

def compute_biomass(
    self,
    dbh,
    species_name='decidu',
    height=None
) -> float

The carbon storage calculation for a tree, in KG.

Parameters:

Name Type Description Default
species_name None (:obj:string): name of the species in 'genusName_speciesName' format.
Ex: 'picea_abies'. Use the iTree naming scheme: https://database.itreetools.org/#/speciesSearch None
dbh None (:obj:float): the DBH measure which is diameter in cm of the trunk usually measured at 1.3m from the ground. None
height None (:obj:float): The tree height in meters. None

Returns:

Type Description
( obj:float): Carbon in Kg.
TODO:
Convert and extend this into carbon estimation object.
View Source
    def compute_biomass(self, dbh, species_name = 'decidu', height=None) -> float:

        """The carbon storage calculation for a tree, in KG.

        Args:

            species_name: (:obj:`string`): name of the species in 'genusName_speciesName' format.

                    Ex: 'picea_abies'. Use the iTree naming scheme: https://database.itreetools.org/#/speciesSearch

            dbh: (:obj:`float`): the DBH measure which is diameter in cm of the trunk usually measured at 1.3m from the ground.

            height: (:obj:`float`): The tree height in meters.

        Returns:

            (:obj:`float`): Carbon in Kg.

        TODO:

            Convert and extend this into carbon estimation object.

        """

        carbon_estimate = self.compute_carbon_storage(dbh, species_name)

        return carbon_estimate / Carbon.coeff

compute_carbon_storage

def compute_carbon_storage(
    self,
    dbh,
    species_name='decidu',
    height=None
) -> float

The carbon storage calculation for a tree, in KG.

Parameters:

Name Type Description Default
dbh None (:obj:float): the DBH measure which is diameter in cm of the trunk usually measured at 1.3m from the ground. None
species_name None (:obj:string): name of the species in 'genusName_speciesName' format.
Ex: 'picea_abies'. Use the iTree naming scheme: https://database.itreetools.org/#/speciesSearch None
height None (:obj:float): The tree height in meters. None

Returns:

Type Description
( obj:float): Carbon in Kg.
TODO:
Update the method to allow receive the height data and use the allometric equations
with height parameter.
View Source
    def compute_carbon_storage(self, dbh, species_name = 'decidu', height=None) -> float:

        """The carbon storage calculation for a tree, in KG.

        Args:

            dbh: (:obj:`float`): the DBH measure which is diameter in cm of the trunk usually measured at 1.3m from the ground.

            species_name: (:obj:`string`): name of the species in 'genusName_speciesName' format.

                Ex: 'picea_abies'. Use the iTree naming scheme: https://database.itreetools.org/#/speciesSearch

            height: (:obj:`float`): The tree height in meters.

        Returns:

            (:obj:`float`): Carbon in Kg.

        TODO:

            Update the method to allow receive the height data and use the allometric equations

            with height parameter.

        """

        # Load species composition and their allometrics

        self.species_name = self.Allometrics.fuzzymatching(species_name)

        self.f_biomass =self.Allometrics.get_eqn_biomass(species_name)

        biomass = self.f_biomass(dbh)

        carbon_estimate = biomass * Carbon.coeff

        # min() function prevents carbon storage from over estimation for very large trees

        carbon_storage = min(carbon_estimate, Carbon.storage_cap)

        return carbon_storage