def conus_mixedwood(ds): required_metrics = ['h75_Nelson', 'h10_Nelson', 'lead_Nelson', 'trail_Nelson'] ds = get_all_height_metrics(ds, required_metrics) return ( 6.147 * ds['h75_Nelson'] - 6.292 * ds['h10_Nelson'] + 0.667 * ds['lead_Nelson'] + 3.128 * ds['trail_Nelson'] )
def mexico_north_conifer(ds): required_metrics = ['h25_Nelson', 'h90_Nelson', 'acq3_Nelson'] ds = get_all_height_metrics(ds, required_metrics) conifer_ind = 1 return ( -3.364 * ds['h25_Nelson'] + 3.210 * ds['h90_Nelson'] + 21.612 * ds['acq3_Nelson'] + 18.778 * conifer_ind )
def ak_wetland_steep(ds): required_metrics = ['VH', 'h50_Neigh', 'f_slope', 'acq3_Neigh'] ds = get_all_height_metrics(ds, required_metrics) return ( 4.48 * ds['VH'] - 6.27 * ds['h50_Neigh'] - 2.10 * ds['f_slope'] + 6.31 * ds['acq3_Neigh'] + 11.66 )
def tropics(ds): required_metrics = ['HOME_Baccini', 'H10_Baccini', 'H25_Baccini', 'H60_Baccini', 'CANOPY_ENE'] ds = get_all_height_metrics(ds, required_metrics) return ( -31.631 + 15.952 * ds['HOME_Baccini'] + 7.832 * ds['H10_Baccini'] - 18.805 * ds['H60_Baccini'] - 38.428 * ds['CANOPY_ENE'] + 8.285 * ds['H25_Baccini'] )
def post_process_biomass(ds): ds = get_all_height_metrics(ds, metrics=['VH', 'treecover2000_mean']) # drop records where VH or treecover2000_mean are negative mask = (ds.VH >= 0) & (ds.treecover2000_mean >= 0) ds = ds.where(mask, drop=True) # print( # f'Dropping {100 - mask.mean().values * 100}% of records due to negative tree canopy metrics' # ) # From Farina 2018: if VH < 2, predicted biomass < 1 Mg/ha, or canopy cover < 10%, set biomass to 0 mask = (ds.VH < 2) | (ds.biomass < 1) | (ds.treecover2000_mean < 10) # print( # f'Setting the biomass to 0 for {mask.mean().values * 100}% of records based on Harris et al procedures' # ) ds['biomass'] = xr.where(mask, x=0, y=ds.biomass) return ds
def australia_lucas_2008(ds): required_metrics = [ 'h05_canopy', 'h10_canopy', 'h20_canopy', 'h50_canopy', 'h75_canopy', 'h80_canopy', 'treecover2000_mean', ] ds = get_all_height_metrics(ds, required_metrics) return ( -44.4 * ds['h05_canopy'] + 57.98 * ds['h10_canopy'] - 18.8 * ds['h20_canopy'] + 8.3 * ds['h50_canopy'] - 34.98 * ds['h75_canopy'] + 32.2 * ds['h80_canopy'] + 0.86 * ds['treecover2000_mean'] - 20.68 )
def palearctic_yavasli_2016(ds): required_metrics = ['HOME_Yavasli', 'pct_HOME_Yavasli'] ds = get_all_height_metrics(ds, required_metrics) return 24.11 - 3.84 * ds['HOME_Yavasli'] + 2.44 * ds['pct_HOME_Yavasli']
def palearctic_takagi_2015(ds): required_metrics = ['MeanH'] ds = get_all_height_metrics(ds, required_metrics) return 2 * (6.70 * ds['MeanH'] + 24.5)
def conus_conifer_neigh_2013(ds): required_metrics = ['VH', 'h25_Neigh'] ds = get_all_height_metrics(ds, required_metrics) return 5.31 * ds['VH'] - 4.19 * ds['h25_Neigh'] + 4.03
def palearctic_simonson_2016(ds): required_metrics = ['VH'] ds = get_all_height_metrics(ds, required_metrics) return np.exp(3.02 + 0.89 * np.log(ds['VH']))
def suganuma_2006(ds): required_metrics = ['treecover2000_mean'] ds = get_all_height_metrics(ds, required_metrics) return 119.9699 * np.power(ds['treecover2000_mean'] / 100.0, 1.1781)
def conus_conifer_sun_2011(ds): required_metrics = ['h50_Neigh', 'h75_Neigh'] ds = get_all_height_metrics(ds, required_metrics) return -1.717 + 6.208 * ds['h50_Neigh'] + 8.625 * ds['h75_Neigh']
def palearctic_whrc(ds): required_metrics = ['HOME_Baccini', 'CANOPY_DEP', 'VH'] ds = get_all_height_metrics(ds, required_metrics) return 13.7949 + 0.8912 * ds['HOME_Baccini'] + 25.4467 * ds['CANOPY_DEP'] - 18.1995 * ds['VH']
def conus_conifer_popescu_2011(ds): required_metrics = ['VH'] ds = get_all_height_metrics(ds, required_metrics) return 7.5429 * ds['VH'] - 29.308
def conus_conifer_skowronski_2007(ds): required_metrics = ['MeanH'] ds = get_all_height_metrics(ds, required_metrics) return 6.04 * ds['MeanH']
def conus_conifer_hyde_2007(ds): required_metrics = ['MeanH'] ds = get_all_height_metrics(ds, required_metrics) return 7.042 + 16.141 * ds['MeanH']
def conus_conifer_hudak_2012(ds): required_metrics = ['MeanH'] ds = get_all_height_metrics(ds, required_metrics) return -16.54 + 21.18 * ds['MeanH']
def conus_conifer_lu_2012(ds): required_metrics = ['QMCH', 'Height_35_to_40'] ds = get_all_height_metrics(ds, required_metrics) ln_biomass = 2.10 + 1.56 * np.log(ds['QMCH']) + 0.05 * np.log(ds['Height_35_to_40']) return np.exp(ln_biomass)
def palearctic_brovkina_2015(ds): required_metrics = ['VH'] ds = get_all_height_metrics(ds, required_metrics) return 12.8 * ds['VH'] - 99.9
def conus_conifer_anderson_2006(ds): required_metrics = ['h50_Neigh'] ds = get_all_height_metrics(ds, required_metrics) return 29.954 + 14.297 * ds['h50_Neigh']
def palearctic_alberti_2013(ds): required_metrics = ['VH'] ds = get_all_height_metrics(ds, required_metrics) return 2 * (3.33 * np.power(ds['VH'], 1.27))
def western_boreal_eurasia_confier(ds): required_metrics = ['h90_Neigh', 'h25_Neigh'] ds = get_all_height_metrics(ds, required_metrics) return 5.95 * ds['h90_Neigh'] - 5 * ds['h25_Neigh'] + 4.72
def palearctic_shang_and_chazette_2014(ds): required_metrics = ['QMCH'] ds = get_all_height_metrics(ds, required_metrics) return 2 * (42.36 + 0.24 * np.square(ds['QMCH']))
def mexico_south(ds): required_metrics = ['h75_Nelson', 'h10_Nelson', 'trail_Nelson'] ds = get_all_height_metrics(ds, required_metrics) return 6.845 * ds['h75_Nelson'] - 6.144 * ds['h10_Nelson'] - 2.565 * ds['trail_Nelson']
def palearctic_patenaude_2004(ds): required_metrics = ['h80_p12'] ds = get_all_height_metrics(ds, required_metrics) return 2 * (1.36 * 0.68 * 0.49) * 19.186 * np.exp(0.1256 * ds['h80_p12'])
def eastern_boreal_eurasia(ds): required_metrics = ['h75_Neigh', 'h25_Neigh'] ds = get_all_height_metrics(ds, required_metrics) return 13.60 * ds['h75_Neigh'] - 14.30 * ds['h25_Neigh'] - 3.49
def australia_beets_2011(ds): required_metrics = ['h30_canopy', 'treecover2000_mean'] ds = get_all_height_metrics(ds, required_metrics) return 2 * (-45.8 + 7.52 * ds['h30_canopy'] + 0.67 * ds['treecover2000_mean'])
def palearctic_wang_2013(ds): required_metrics = ['VH'] ds = get_all_height_metrics(ds, required_metrics) return np.exp(1.48 + 1.09 * np.log(ds['VH']))
def western_boreal_eurasia_mixed_hard_wood(ds): required_metrics = ['h75_Neigh', 'h25_Neigh'] ds = get_all_height_metrics(ds, required_metrics) return 8.84 * ds['h75_Neigh'] - 5.09 * ds['h25_Neigh'] - 7.03
def conus_conifer_tsui_2012(ds): required_metrics = ['MeanH', 'h10_p12', 'h90_p12'] ds = get_all_height_metrics(ds, required_metrics) return -7.144 - 12.925 * ds["MeanH"] + 2.239 * ds["h10_p12"] + 14.019 * ds["h90_p12"]