-
Notifications
You must be signed in to change notification settings - Fork 142
Description
Hello,
I have been experimenting with Climada for some time in order to generate expected losses to properties in Belgium due to Floods. The idea being to compare the values outputted by Climada with the results obtained by using the current methodology proposed by the European central bank in its climate stress testing framework for banks (My Code is indicated below).
As a result I have some questions that I have not quite been able to answer by using the Climada documentation or other research. Those questions are listed below:
-
where can we find the most complete documentation on each model? I noticed interesting results came from the Matsiro model but I don't know what features make this a more suitable model for my analysis or not?
-
do I understand the modelling process correctly when I say that atmospheric data (climate drivers) contain certain variables that are the input to a certain ISIMIP model which then outputs (given RCP scenarios and timeperiod) a hasard forecast?
-
I am working with Hazard data on floods in belgium queried with the client api (see code snipet below). From my understanding a hazard class combines ISIMIP models with climate drivers (atmospheric data) which allows me to simulate a certain number of meters of flooding for each year under analysis and each model. As a result, where could I access the actual simulated flood data? for example, how many meters occured at a given centroid when using the Matsiro model run with the hadgem2-es climate drivers for the year 2057?
-
I believe that the resulting yearly damage is a result of the multiplication of the sum of damages across the different models and the frequency, correct?
-
The frequency appears to be the result of the following calculation : 1/ (Nb years * Nb isimip models * Nb climate drivers), correct? --> in my case 1/20 years*6 impact simulators * 4 climate drivers = 1/480 = 0.0020833 --> my hazard query below outputs that exact value for frequency. The value is fixed which means that each year, each model and each climate driver gets equal weighting
-
What prompted that equal weighting approach with the frequency?
-
With the client api I am limited to 'res_arcsec': ['150'] (which if I am not wrong amounts to 20km²), does climada offer any way to go to a more granular level? Bear in mind i have no additional data at this stage than what is found in your database that I query via api.
I know this is a long list of questions. If it is more suitable for you I would be more than happy to discuss this over a call. I understand that you do not wish to act as a "consulting" entity in any way, but that is not what I am seeking. The design of my analysis is my own, yet I feel I am missing a little context on what is happening within the climada engine to truly be able to validate my approach.
Kind Regards,
Alexandre
CODE:
from climada.util.api_client import Client
client = Client()
import pandas as pd
#INFO
dtf = pd.DataFrame(data_types)
dtf.sort_values(['data_type_group', 'data_type'])
tc_dataset_infos = client.list_dataset_infos(data_type='river_flood')
client.get_property_values(tc_dataset_infos, known_property_values = {'country_name':'Belgium'})
Import Hazard
from climada.hazard import Hazard
FL_Belgium = client.get_hazard('river_flood', properties={'res_arcsec': ['150'],'country_name': 'Belgium', 'climate_scenario': 'rcp85', 'year_range': ['2050_2070']})
FL_Belgium.plot_intensity(0)
FL_Belgium.centroids.plot()
print(FL_Belgium.size)
print(FL_Belgium.event_name)
print(FL_Belgium.frequency)
#house values obtained for notary database
notaris = pd.read_excel("climada_flood_article.xlsx", usecols='A:H')
notaris_full=notaris
notaris_full['latitude']=notaris_full['lat']
notaris_full['longitude']=notaris_full['long']
notaris_full['value']=notaris_full['price']
flood_exp= Exposures(notaris_full)
flood_exp.set_geometry_points()
flood_exp.gdf.head()
import impact function set for RiverFlood using JRC damage functions () for 6 regions
import numpy as np
from climada.entity import ImpactFunc, ImpactFuncSet
impf = ImpactFunc()
impf.id = 1
impf.haz_type='RF'
impf.intensity_unit = 'm'
impf.name = "Flood Europe JRC Residential noPAA"
impf.continent = 'Europe'
impf.intensity = np.array([0.00, 0.5, 1., 1.5, 2., 3., 4., 5., 6., 12.])
impf.mdd = np.array([0.00, 0.25, 0.40, 0.50, 0.60, 0.75, 0.85, 0.95,1.00, 1.00])
#impf.mdr_concave = np.array([0.000, 0.010, 0.020, 0.025, 0.030, 0.100, 0.150, 0.200,0.250,0.400,0.700, 1.000])
impf.mdr = np.array([0.000, 0.250, 0.400, 0.500, 0.600, 0.750, 0.850, 0.950, 1.000, 1.000])
impf.paa = np.ones(impf.intensity.size)
imp_fun_set = ImpactFuncSet()
imp_fun_set.append(impf)
hazard_type= 'RF'
haz_id=1
impf.tag ="RF"
Exposures: rename column and assign id - OTHER PTF
flood_exp.gdf.rename(columns={"FL_Belgium": "impf_" + hazard_type }, inplace=True)
flood_exp.gdf['impf_' + hazard_type] = haz_id
flood_exp.gdf['impf_'] = haz_id
#SET impf
impf_FL_1 = imp_fun_set.get_func('RF', 1)
Impact on Belgian PTF
from climada.engine import Impact
imp = Impact()
imp.calc(flood_exp, imp_fun_set, FL_Belgium,save_mat=True)
imp.plot_scatter_eai_exposure(ignore_zero=False, buffer=0.8)