Hazard: RiverFlood¶
A river flood hazard is generated by the class RiverFlood() that extracts flood data simulated within the Inter-Sectoral Impact Model Intercomparison Project (ISIMIP, https://www.isimip.org/). The method set_from_nc() generates a data set with flood depth in m and the flooded fraction in each centroid. The data derived from global hydrological models driven by various climate forcings. A link to the ISIMIP data repository will be provided soon. In this tutorial we show how flood depth and fractions can be transated into socio-economic impacts.
Besides, all other general Hazard Attributes, the class RiverFlood() has further Attributes related to the flooded area and flood volume:
additional Attributes (always calculated)¶
Name |
Data Type |
Description |
---|---|---|
fla_ann_av |
float |
average flooded area per year |
fla_ev_av |
float |
average flooded area per event |
fla_event |
1d array(n_events) |
average flooded area per year |
fla_annual |
1d array(n_years) |
average flooded area per event |
additional Attributes (only calculated if ‘save_centr’ = True in ‘set_flooded_area()’)¶
Name |
Data Type |
Description |
---|---|---|
fla_ev_centr |
2d array(n_events x n_centroids) |
flooded area in every centroid for every event |
fla_ann_centr |
2d array(n_years x n_centroids) |
flooded area in every centroid for every year |
fv_ann_centr |
2d array(n_years x n_centroids) |
flood volume in every centroid for every year |
How is this tutorial structured?¶
Part 1: Data availability and use
Part 2: Generating a RiverFlood Hazard
Part 3: Calculating Flooded Area
Part 4: Generating ISIMIP Exposure
Part 5: Setting JRC damage functions
Part 6: Deriving flood impact with LitPop exposure
Part 1: Data availability and use¶
To work with the CLIMADA RiverFlood-Module input data containing spatially explicit flood depth and flooded fraction is required.
The input data can be found at https://files.isimip.org/cama-flood/ *.
On this page, data from the ISIMIP2a and ISIMIP2b simulation rounds can be accessed. The simulations contain the output of the river routing model CaMa-Flood for runoff input data generated by various combinations of global hydrological models (GHMs) and climate forcings.
ISIMIP2a¶
In the ISIMIP2a simulation round, 12 GHMs were driven by 4 climate reanalysis data sets and covers the time period 1971-2010. The runoff was used as input for CaMa-Flood to derive spatially explicit flood depth (flddph) and flooded fraction (fldfrc) of the maximum flood event of each year on 150 arcsec (~ 5 km) and 300 arcsec (~ 10 km) resolution. Data are provided for different protection standards including ‘0’- no protection, ‘100’- protection against all events smaller than 100 year return period, and’Flopros’- merged layer in the Flopros data base on global protection standards. File naming conventions follow the scheme:
<indicator_resolution_GHM_ClimateForcingDataset_ProtectionStandard.nc>
ISIMIP2b¶
In the ISIMIP2b simulation round, 6 GHMs were driven by 4 global circulation models (GCMs) and covers the time period 2005-2100 for RCP 2.6, 6.0 and RCP8.5 (only a smaller ensemble). Additionally, historical and preindustrial control runs are provided. Resolution and protection assumptions are the same as under ISIMIP2a. File naming conventions follow the scheme:
<indicator_resolution_GHM_GCM_ProtectionStandard.nc>
For futher information on flood data generation see also:¶
Willner, S. N. et al. (2018) ‘Adaptation required to preserve future high-end river flood risk at present levels’, Science Advances. American Association for the Advancement of Science, 4(1), p. eaao1914. doi:10.1126/sciadv.aao1914.
Willner, S. N., Otto, C. and Levermann, A. (2018) ‘Global economic response to river floods’, Nature Climate Change. Nature Publishing Group, 8(7), pp. 594–598. doi:10.1038/s41558-018-0173-2.
Sauer, I. et al. (2020) ‘Climate Signals in River Flood Damages Emerge under Sound Regional Disaggregation’. doi:10.21203/rs.3.rs-37259/v1.
*Currently, log-in data are required, please contact inga.sauer@pik-potsdam.de to obtain access.
Part 2: Generating a RiverFlood Hazard¶
A river flood is generated with the method set_from_nc(). There are different options for choosing centroids. You can set centroids for: - countries - regions - global hazards - with random coordinates - with random shape files (under development)
Countries or regions can either be set with corresponding ISIMIPNatID centroids (ISINatIDGrid = True) or with Natural Earth Multipolygons (default). It is obligatory to set paths for flood depth and flood fraction, here we present example files from floods for the year 2000.
Setting floods for countries with Natural Earth Multipolygons:¶
[1]:
import numpy as np
import matplotlib.pyplot as plt
from climada.hazard.river_flood import RiverFlood
from climada.hazard.centroids import Centroids
from climada.util.constants import HAZ_DEMO_FLDDPH, HAZ_DEMO_FLDFRC
years = [2000]
# generating RiverFlood hazard from netCDF file
# uses centroids from Natural Earth Multipolygon for Germany and Switzerland
rf = RiverFlood()
rf.set_from_nc(countries = ['DEU','CHE'], years=years, dph_path=HAZ_DEMO_FLDDPH, frc_path=HAZ_DEMO_FLDFRC)
rf.event_name
2021-04-23 16:12:12,418 - climada.util.coordinates - INFO - Reading /Users/zeliestalhanske/climada/demo/data/flddph_2000_DEMO.nc
2021-04-23 16:12:12,444 - climada.util.coordinates - INFO - Reading /Users/zeliestalhanske/climada/demo/data/fldfrc_2000_DEMO.nc
[1]:
['2000']
[2]:
# Note: Points outside the selected countries are masked in further analysis.
# plot centroids:
rf.centroids.plot()
# get resolution
print('resolution:')
rf.centroids.meta['transform'][0]
resolution:
[2]:
0.04166666666666662
[3]:
# plotting intensity (Flood depth in m)
rf.plot_intensity(event=0, smooth = False)
[3]:
<GeoAxesSubplot:title={'center':'RF max intensity at each point'}>
Setting flood with ISIMIP NatIDGrid:¶
[4]:
# generating RiverFlood hazard from netCDF file, using the ISIMIP NatIDGrid (according to ISIMIP standards) with a resolution of 150as (aprox 5km)
# setting centroids for a region
rf_isi = RiverFlood()
rf_isi.set_from_nc(countries = ['DEU','CHE'], years=years, dph_path=HAZ_DEMO_FLDDPH, frc_path=HAZ_DEMO_FLDFRC, ISINatIDGrid=True)
rf_isi.centroids.plot()
rf_isi.plot_intensity(event=0, smooth = False)
2021-04-23 16:12:16,569 - climada.util.coordinates - INFO - Reading /Users/zeliestalhanske/climada/demo/data/flddph_2000_DEMO.nc
2021-04-23 16:12:16,587 - climada.util.coordinates - INFO - Reading /Users/zeliestalhanske/climada/demo/data/fldfrc_2000_DEMO.nc
[4]:
<GeoAxesSubplot:title={'center':'RF max intensity at each point'}>
Setting flood with random points as coordinates:¶
[5]:
rand_centroids = Centroids()
lat = np.arange(47, 56, 0.2)
lon = np.arange(5.8, 15, 0.2)
lon, lat = np.meshgrid(lon, lat)
rand_centroids.set_lat_lon(lat.flatten(), lon.flatten())
rf_rand = RiverFlood()
rf_rand.set_from_nc(dph_path=HAZ_DEMO_FLDDPH, frc_path=HAZ_DEMO_FLDFRC,
centroids=rand_centroids, ISINatIDGrid=False)
rf_rand.centroids.plot()
rf_rand.plot_intensity(event = 0)
2021-04-23 16:12:20,134 - climada.util.coordinates - INFO - Reading /Users/zeliestalhanske/climada/demo/data/fldfrc_2000_DEMO.nc
2021-04-23 16:12:20,140 - climada.util.coordinates - INFO - Reading /Users/zeliestalhanske/climada/demo/data/flddph_2000_DEMO.nc
[5]:
<GeoAxesSubplot:title={'center':'RF max intensity at each point'}>
[6]:
# setting random poits using raster
min_lat, max_lat, min_lon, max_lon = 45.6 , 49., 9., 14.
cent = Centroids()
cent.set_raster_from_pnt_bounds((min_lon, min_lat, max_lon, max_lat), res=0.1)
rf_rast = RiverFlood()
rf_rast.set_from_nc(dph_path=HAZ_DEMO_FLDDPH, frc_path=HAZ_DEMO_FLDFRC,
centroids=cent, ISINatIDGrid=False)
rf_rast.plot_intensity(event=0)
2021-04-23 16:12:22,854 - climada.util.coordinates - INFO - Reading /Users/zeliestalhanske/climada/demo/data/fldfrc_2000_DEMO.nc
2021-04-23 16:12:22,860 - climada.util.coordinates - INFO - Reading /Users/zeliestalhanske/climada/demo/data/flddph_2000_DEMO.nc
[6]:
<GeoAxesSubplot:title={'center':'RF max intensity at each point'}>
Part 3: Calculating Flooded Area¶
The fraction indicates the flooded part of a grid cell. It is possible to calculate the flooded area for each grid cell and for the whole area under consideration
As ISIMIP simulations currently provide yearly data with the maximum event, event and yearly flooded area are the same.
[7]:
#setting river flood
rf_DEU = RiverFlood()
rf_DEU.set_from_nc(countries = ['DEU'], years=years, dph_path=HAZ_DEMO_FLDDPH, frc_path=HAZ_DEMO_FLDFRC)
rf_DEU.plot_fraction(event=0, smooth = False)
# calculating flooded area
rf_DEU.set_flooded_area()
print("Total flooded area for year " + str(years[0]) + " in Germany:")
print(str(rf_DEU.fla_annual[0]) + " m2")
print("Total flooded area at first event in Germany:")
print(str(rf_DEU.fla_event[0]) + " m2")
2021-04-23 16:12:24,190 - climada.util.coordinates - INFO - Reading /Users/zeliestalhanske/climada/demo/data/flddph_2000_DEMO.nc
2021-04-23 16:12:24,204 - climada.util.coordinates - INFO - Reading /Users/zeliestalhanske/climada/demo/data/fldfrc_2000_DEMO.nc
2021-04-23 16:12:24,541 - climada.hazard.centroids.centr - INFO - Convert centroids to GeoSeries of Point shapes.
/Users/zeliestalhanske/python_projects/climada_python/climada/hazard/centroids/centr.py:611: UserWarning: Geometry is in a geographic CRS. Results from 'buffer' are likely incorrect. Use 'GeoSeries.to_crs()' to re-project geometries to a projected CRS before this operation.
xy_pixels = self.geometry.buffer(res / 2).envelope
Total flooded area for year 2000 in Germany:
2437074832.038374 m2
Total flooded area at first event in Germany:
2437074832.038374 m2
[8]:
#calculate flooded area
rf_DEU.set_flooded_area(save_centr = True)
print("affected area in each affected centroid and each event:")
rf_DEU.fla_ev_centr.data
affected area in each affected centroid and each event:
[8]:
array([ 584715.81718056, 5053615.42987047, 584715.81718053,
772660.21477222, 4635961.19139062, 4844788.31063079,
877073.72577079, 62648.12847878, 793542.93642048,
710012.09844878, 104512.31458989, 7942935.27615602,
12980428.9975574 , 8862643.59587924, 11015597.79960522,
8151960.31900815, 8026545.7605037 , 8110155.46617279,
3428003.77254628, 2550100.30565756, 5748176.99827292,
10743865.08816197, 10116791.51696033, 167219.69117698,
167377.62651458, 2426975.61490724, 7866748.53143359,
12448711.57332617, 10691246.31833798, 3807841.25590698,
795043.7594347 , 9958969.25866094, 10858623.66475107,
10586635.08712338, 9938046.70065339, 9414992.10340605,
4100752.00183631, 20922.20331432, 4020851.5658597 ,
8628077.07461108, 12271973.68427333, 11036399.71240725,
6135986.84213667, 5863741.76936025, 5319251.23373377,
7936993.24829797, 12104437.71477011, 12041612.40883577,
9444812.29294032, 628258.03278596, 1907510.5122277 ,
3731174.16397122, 9034472.37433647, 13017186.72931901,
8300814.5901365 , 2242896.97806137, 4003675.58205206,
8636201.25119162, 10795251.36876784, 7839658.2240182 ,
7986389.9370346 , 859427.78209491, 1573601.99913756,
6755998.31492206, 10910307.66299093, 12127226.06553792,
12630778.64273264, 12295077.44567993, 8329600.41176178,
524533.99971255, 629440.8191955 , 314720.40959772,
881217.10779283, 251776.3374484 , 84004.22287586,
5649284.31387142, 1722086.62090805, 2142107.81474468,
7413373.17151569, 11676586.99808064, 12075607.56251821,
9051455.12336371, 11823594.53327545, 7224363.59517164,
42041.479908 , 4666604.29120064, 4099044.47915377,
3951899.15417685, 8975856.20966038, 12255091.63636668,
8198088.95830755, 9333208.58240128, 9627499.23235424,
588580.71259418, 84161.65049093, 2566930.35528228,
4060799.89490784, 841616.56614496, 1283465.17764114,
63121.24246087, 778495.28694269, 862656.94355715,
252484.96984349, 68119.64171433, 340598.1953547 ,
476837.45234946, 1977089.19581193, 9340041.72726154,
11998885.92035427, 5272237.71440184, 45450.32455399,
704480.06861677, 3431499.68736199, 2727019.56583407,
5022260.92439447, 2727019.56583394, 3317873.85448186,
4526009.59398457, 11417371.18678022, 2001451.49577753,
2092426.62153581, 90975.06618462, 545850.43682358,
1182675.89349668, 3047664.70063641, 4662472.38853107,
10484877.04798255, 10507620.35283201, 11758527.53769297,
7914831.06916955, 5344785.09035629, 3411564.99185211,
159206.36416826, 3824076.16877868, 5963738.09206057,
45524.71676818, 751157.84158056, 2412809.97877638,
6669371.29305688, 9833339.32540515, 11290130.36798235,
10334111.21979271, 11358416.90487568, 8035113.05446658,
4666283.71550905, 1616127.4966119 , 637346.02812978,
159466.56281482, 888456.57183127, 2505903.20571988,
4715654.29155094, 4077787.82812764, 91123.75112706,
1412418.21871583, 4419502.17166185, 11322126.22505713,
7289900.62057462, 3576607.18698346, 2323655.79628766,
797332.8671151 , 432837.83608639, 1117175.77323329,
2439547.17032033, 4559900.9592355 , 2941136.28432971,
1117175.77323329, 68398.51916611, 45599.00945964,
2553544.50319797, 3807517.28822123, 7843030.09154589,
3579522.19779226, 569987.61990444, 136908.36527585,
114090.30439655, 22818.05921908, 1300629.43027509,
4152887.05347047, 912722.43517239, 136908.36527586,
410725.06926384, 1460355.79002089, 1551628.08666564,
2624076.8815839 , 7507142.09570224, 2760985.22029591,
250998.65639055, 159726.41287331, 319452.82574662,
2329333.4694195 , 3950732.208999 , 4750013.19093546,
1164666.73470981, 137019.61741205, 936300.67910442,
1210339.86075792, 1027647.03754179, 137019.61741205,
685098.06047493, 1415869.35333926, 4932706.12049274,
10459163.73034007, 12423111.55332744, 4658666.93883924,
411058.82565086, 1278849.65617129, 913464.11608036,
274261.58936941, 4731012.2436776 , 137130.7946847 ,
6925104.95863252, 4822432.61382616, 4548171.0776705 ,
4593881.26274455, 3771096.65427761, 4868142.79890019,
4616736.35528191, 9530590.19067662, 8776370.85982062,
8959211.60011772, 297116.70851342, 1898512.78921824,
7502556.71861722, 343104.72928449, 548967.5881579 ,
7273820.62297752, 160115.53323185, 3133689.83594515,
6427495.36489242, 8874975.84878219, 7479682.68299801,
4048635.70969465, 10430383.85545952, 7777040.88549384,
3682657.53061663, 45784.30480911, 10805096.61452431,
3845881.56399029, 5471224.64954781, 91568.60961822,
114460.77035089, 5448332.53545232, 1304852.74202514,
3731420.9935142 , 11995488.25307395, 10667743.07715331,
4715783.60520665, 2541028.92856497, 4051911.01724683,
68676.46221054, 4375933.02392118, 7514691.61028689,
618587.43214996, 8568581.198868 , 2084868.78441238,
45821.28892426, 2703456.21656234, 6254606.13986513,
3642792.77453402, 91642.57784853, 3001294.52289039,
4673771.75699323, 91642.57784852, 6094231.47026817,
824783.20730461, 68731.9383873 , 458212.92258201,
2909651.88503098, 4765414.18148062, 5819303.77006197,
68787.37702238, 275149.50808951, 2476345.5194196 ,
8850642.43013321, 1467463.93637202, 5525919.03388077,
10547397.32962378, 1467463.93637202, 710802.88255137,
1903117.31083391, 4838045.18357794, 7612469.24333563,
1329889.20902028, 321007.73274474, 802519.38524791,
6213792.8841836 , 550299.016179 , 1444534.85073734,
4539966.64323985, 45858.24801163, 2292912.40725453,
3714518.2791294 , 4677541.58413571, 5021478.29574301,
4654612.49850087, 5663493.97477634, 1811400.75475137,
389795.12311364, 343936.87176537, 4058454.9907367 ,
4933732.36289857, 3878142.80501333, 2616025.48722424,
3786352.59451557, 8743032.51003858, 688427.75417171,
1032641.57782859, 6677749.3543814 , 6471220.95332924,
206528.32090862, 3740457.48926669, 7526810.08378189,
3327400.68716238, 6035216.59860048, 4222356.94924433,
1468645.82569923, 4061723.65344085, 3373296.00612736,
1973492.94515943, 114737.96348104, 160633.1355162 ,
481899.40654861, 5507422.03337424, 7848076.67538843,
4773099.06709529, 4658361.30397309, 1858754.96832113,
2340654.42829876, 688427.75417175, 3465086.43034104,
4314147.15974187, 2180021.13249548, 7389124.76803563,
5094365.23126939, 2273638.55111259, 7027610.14485272,
2296604.5581947 , 8727097.23558467, 206694.41130696,
620083.26065688, 6384560.66322575, 987540.01563459,
1377962.77769441, 4409481.0597325 , 5833375.63770317,
160762.31693474, 2664061.31317241, 2916687.81885159,
183728.36412085, 2503299.04970953, 3031518.06815012,
1056438.14382492, 2939653.82593355, 6476425.11933014,
4478379.08097884, 1377962.77769448, 826777.64522785,
2687027.32025452, 5029564.10650116, 45932.09103021,
160891.41056458, 10848678.76457667, 436705.2801817 ,
2206510.95693681, 9354686.58283404, 1333100.28954366,
3585580.03744784, 1103255.47846846, 436705.2801817 ,
2183526.29387852, 3585580.03744784, 344767.32364266,
4527944.15886665, 2987983.50724635, 2022634.93682888,
3884378.30254839, 22984.48746242, 137906.93480856,
3930347.62866516, 4665851.28097746, 1195193.38149251,
551627.73923423, 344767.32364266, 3792440.50655434,
3861393.85355002, 3585580.03744784, 1103255.47846846,
1356084.84557202, 4117522.08266347, 6026764.41462543,
4485568.99342198, 2484315.14800192, 3841487.11382578,
368046.66974845, 782099.20334174, 7199913.35353265,
713090.46113229, 2001253.84542028, 4761603.96225989,
230029.18532961, 4025510.56920494, 23002.91685928,
2553323.78309566, 2070262.48051402, 4462566.11505762,
644081.66536506, 552070.04479106, 966896.00520992,
6353888.18738154, 46042.66739333, 7597040.27065209,
368341.33914669, 1473365.35658675, 1427322.76624445,
6468995.09204306, 4028733.5158435 , 184170.66957333,
23021.33369667, 1588472.04684531, 3107880.20817732,
2394218.77145437, 713661.38312219, 1151066.68818345,
4028733.5158435 , 3430178.76937919, 851789.36855201,
69064.00611507, 138238.43785095, 2027496.98119351,
2741728.95032279, 92158.95186185, 9123736.41537035,
46079.47593093, 1105907.50280763, 1797099.55795347,
10367882.75835618, 5183941.37917809, 4792265.63092521,
46079.47593093, 4630987.30591261, 69119.21892548,
1727980.35243889, 1105907.50280763, 4907464.12797093,
7142318.83299559, 46079.47593093, 2119655.99340428,
4354510.48385451, 23039.73796546, 990708.79118756,
6220729.56918368, 484220.71775385, 322813.81183591,
6686857.57690364, 184465.03725218, 1867708.59780709,
1567952.8770407 , 2582510.49468729, 8854322.43234125,
11690472.35828338, 622569.53260236, 1775476.01878391,
6940497.00815814, 299755.69392329, 4196579.87598521,
484220.71775387, 10883437.88237945, 391988.21926018,
1867708.59780728, 4035172.80900787, 46116.25931304,
1292284.47717146, 7915242.58386276, 69229.53131946,
1615355.7039227 , 3023022.74672555, 207688.58052607,
6230657.68442802, 9969052.29508483, 138459.06263891,
11261336.34242281, 2099962.43659108, 23076.50876078,
5561438.76078262, 1476896.56069001, 2076885.75153151,
11953632.16604402, 369224.1401725 , 1823044.15012581,
8007548.46443489, 276918.12527781, 346423.14080041,
5658244.43590979, 3210187.66745817, 3210187.66745817,
323328.25040788, 1662831.03282448, 4087792.9646555 ,
484992.37561182, 3810654.49503272, 4572785.39403927,
14388107.73464195, 577371.88341003, 1570451.57879818,
4318741.76103709, 3048523.59602618, 415707.7582061 ,
5450390.9063244 , 6674418.96791818, 3325662.06564879,
2632815.89159201, 11131730.17885479, 14226443.44812288,
8175585.9293106 , 2218870.16200874, 3258965.45627431,
901415.93604765, 184905.83338038, 3582550.55369736,
254245.52594315, 138679.38512554, 2704247.80814296,
346698.44936018, 13428786.49400053, 1479246.66704298,
3490097.79172438, 1433020.28605656, 1317454.11833161,
3883022.46062701, 8806140.64603687, 7350007.4923756 ,
6818402.8194786 , 9846235.50978571, 8783027.02502618,
4691985.84996017, 12481144.39222511, 13729258.40093017,
12527370.77321223, 10239161.03972273, 138679.38512554,
670815.55181327, 3053367.36157378, 3539130.39008407,
300710.42442124, 208184.13584106, 2775788.54969063,
1734867.78969926, 69394.71643513, 3770446.13846321,
532026.14587166, 3284683.10995292, 1919920.36685962,
2752657.01793862, 2382551.86361778, 693947.13742262,
1387894.27484531, 1434157.4460641 , 3354077.70520894,
12699232.90566386, 1272236.40065568, 2081841.3045532 ,
2428814.92712191, 7656550.36654593, 6800681.96828465,
717078.72303205, 23149.8991283 , 3403035.29818859,
3310435.64103781, 347248.49871514, 4375330.94367087,
902846.06431938, 4954078.74696315, 810246.51496873,
578747.47989191, 4143831.90859385, 4467930.81642188,
8171914.94645002, 2500189.23386921, 5486526.39827995,
925996.03250709, 46299.7982566 , 208349.09383909,
3266718.48119637, 2919195.1880162 , 417027.87629623,
671878.24814075, 4957998.37854305, 4934829.77061048,
1876625.52424711, 3336223.01036971, 810887.5762013 ,
8386894.52601908, 46336.43032498, 4401960.85053028,
3730082.87210306, 46373.03711109, 231865.20242587,
2921501.41560279, 1159325.93115142, 3918521.55659626,
69559.56072776, 347797.79014247, 1669429.34949569,
2156346.28808637, 6469038.64831783, 12798958.41811345,
1808548.44395856, 3895335.07684266, 69559.56072776,
1669429.34949561, 1738988.89672704, 2133159.80833278,
23186.51855555, 23204.80929843, 116024.05493402,
835373.14149704, 6195684.08774647, 69614.43296041,
3202263.7270813 , 5105058.14695738, 46409.61859686,
3619950.24380173, 3411107.09349742, 139228.86592083,
3643155.01426779, 7843225.38416266, 348072.15129509,
46409.61859686, 9142695.12359154, 696144.30259014,
348346.32255877, 1254046.78283975, 6618580.07454613,
1045038.91360584, 441238.6788458 , 464461.78143516,
9266012.36390282, 2090077.82721168, 1394481.2151967 ,
2788962.43039341, 5229304.71932662, 7111854.17585799,
418344.35373641, 1301515.74312973, 2672755.64442255,
2091721.71456896, 3114341.2579497 , 3230548.04392058,
1882549.67298334, 5024075.05294284, 4748680.79119445,
116480.37319711, 4286477.62517271, 163200.01148239,
536228.64017519])
Part 4: Generating ISIMIP Exposure¶
The exposed assets are calculated by means of national GDP converted to total national wealth as a proxy for asset distribution, downscaled by means of data from spatially explicit GDP distribution. Data for past (1971-2010) and future (2005-2100) periods can be accessed at ISIMIP, https://www.isimip.org/ .
More information on spatially explicit GDP time series:
Geiger, T. (2018) ‘Continuous national gross domestic product (GDP) time series for 195 countries: Past observations (1850-2005) harmonized with future projections according to the Shared Socio-economic Pathways (2006-2100)’, Earth System Science Data. Copernicus GmbH, pp. 847–856. doi: 10.5194/essd-10-847-2018.
Murakami, D. and Yamagata, Y. (2019) ‘Estimation of gridded population and GDP scenarios with spatially explicit statistical downscaling’, Sustainability (Switzerland). Multidisciplinary Digital Publishing Institute, 11(7), p. 2106. doi: 10.3390/su11072106.
[9]:
# set exposure for damage calculation
from climada.entity.exposures.gdp_asset import GDP2Asset
from climada.util.constants import DEMO_GDP2ASSET
gdpa = GDP2Asset()
gdpa.set_countries(countries = ['CHE'], ref_year = 2000, path=DEMO_GDP2ASSET)
gdpa
2021-04-23 16:12:38,745 - climada.entity.exposures.base - INFO - meta set to default value {}
2021-04-23 16:12:38,746 - climada.entity.exposures.base - INFO - tag set to default value File:
Description:
2021-04-23 16:12:38,747 - climada.entity.exposures.base - INFO - ref_year set to default value 2018
2021-04-23 16:12:38,747 - climada.entity.exposures.base - INFO - value_unit set to default value USD
2021-04-23 16:12:38,749 - climada.entity.exposures.base - INFO - crs set to default value: EPSG:4326
/Users/zeliestalhanske/python_projects/climada_python/climada/entity/exposures/base.py:221: FutureWarning: Assigning CRS to a GeoDataFrame without a geometry column is now deprecated and will not be supported in the future.
self.gdf.crs = self.meta['crs']
2021-04-23 16:12:43,024 - climada.entity.exposures.base - INFO - meta set to default value {}
2021-04-23 16:12:43,025 - climada.entity.exposures.base - INFO - tag set to default value File:
Description:
2021-04-23 16:12:43,026 - climada.entity.exposures.base - INFO - ref_year set to default value 2018
2021-04-23 16:12:43,026 - climada.entity.exposures.base - INFO - value_unit set to default value USD
2021-04-23 16:12:43,027 - climada.entity.exposures.base - INFO - crs set to default value: EPSG:4326
2021-04-23 16:12:43,044 - climada.entity.exposures.base - INFO - meta set to default value {}
/Users/zeliestalhanske/python_projects/climada_python/climada/entity/exposures/base.py:221: FutureWarning: Assigning CRS to a GeoDataFrame without a geometry column is now deprecated and will not be supported in the future.
self.gdf.crs = self.meta['crs']
/Users/zeliestalhanske/python_projects/climada_python/climada/entity/exposures/base.py:190: FutureWarning: Assigning CRS to a GeoDataFrame without a geometry column is now deprecated and will not be supported in the future.
self.gdf = GeoDataFrame(*args, **kwargs)
/Users/zeliestalhanske/python_projects/climada_python/climada/entity/exposures/base.py:725: FutureWarning: Assigning CRS to a GeoDataFrame without a geometry column is now deprecated and will not be supported in the future.
exp.gdf = GeoDataFrame(
/Users/zeliestalhanske/python_projects/climada_python/climada/entity/exposures/base.py:216: FutureWarning: Assigning CRS to a GeoDataFrame without a geometry column is now deprecated and will not be supported in the future.
self.gdf.crs = crs
[9]:
<climada.entity.exposures.gdp_asset.GDP2Asset at 0x7fd59ef6bee0>
[10]:
from matplotlib import colors
norm=colors.LogNorm(vmin=1.0e2, vmax=1.0e10)
gdpa.plot_scatter()
[10]:
<GeoAxesSubplot:title={'center':'CHE GDP2Asset GDP2Asset 2018'}>
Part 5: Setting JRC damage functions¶
In CLIMADA we currently calculate damage by translating flood-depth into a damage factors. Damage assessments implemented in CLIMADA base on the residential damage functions basing on an empirical estimate published in the JRC report. Individual damage functions are available for six continents:
RF1: Africa RF2: Asia RF3: Europe RF4: North America RF5: Oceania RF6: South America
For further information on depth-damage functions, see also:
Huizinga, J., Moel, H. de and Szewczyk, W. (2017) Global flood depth-damage functions : Methodology and the Database with Guidelines, Joint Research Centre (JRC). doi: 10.2760/16510.
[11]:
# import impact function set for RiverFlood using JRC damage functions () for 6 regions
from climada.entity.impact_funcs.river_flood import ImpfRiverFlood,flood_imp_func_set
impf_set = flood_imp_func_set()
impf_AFR = impf_set.get_func(fun_id=1)
impf_AFR[0].plot()
impf_EUR = impf_set.get_func(fun_id=3)
impf_EUR[0].plot()
impf_OCE = impf_set.get_func(fun_id=6)
impf_OCE[0].plot()
[11]:
<AxesSubplot:title={'center':'RF 6: Flood South America JRC Residential noPAA'}, xlabel='Intensity (m)', ylabel='Impact (%)'>
The plots illustrate how flood-depth is translated into a damage factor (0%-100%). The damage factor is then multiplied with the exposed asset in each grid cell to derive a local damage.
Linking exposures to the correct impact function¶
If the ISIMIP exposure presented above is used, the correct impact function ID is automatically provided in the GeoDataFrame:
[12]:
gdpa
[12]:
<climada.entity.exposures.gdp_asset.GDP2Asset at 0x7fd59ef6bee0>
The column ‘impf_RF’ indicates the ID of the impact function (in this case 3 for Europe). If other Exposure data is used the impact function needs to be set manually.
Part 6: Deriving flood impact with LitPop exposure¶
[13]:
from climada.entity import LitPop
lp_exp = LitPop()
lp_exp.set_country('DEU', fin_mode='pc')
lp_exp
2021-04-23 16:12:45,204 - climada.entity.exposures.base - INFO - meta set to default value {}
2021-04-23 16:12:45,205 - climada.entity.exposures.base - INFO - tag set to default value File:
Description:
2021-04-23 16:12:45,206 - climada.entity.exposures.base - INFO - ref_year set to default value 2018
2021-04-23 16:12:45,206 - climada.entity.exposures.base - INFO - value_unit set to default value USD
2021-04-23 16:12:45,208 - climada.entity.exposures.base - INFO - crs set to default value: EPSG:4326
/Users/zeliestalhanske/python_projects/climada_python/climada/entity/exposures/base.py:221: FutureWarning: Assigning CRS to a GeoDataFrame without a geometry column is now deprecated and will not be supported in the future.
self.gdf.crs = self.meta['crs']
2021-04-23 16:12:46,982 - climada.entity.exposures.litpop - INFO - Generating LitPop data at a resolution of 30.0 arcsec.
2021-04-23 16:12:58,427 - climada.entity.exposures.gpw_import - INFO - Reference year: 2016. Using nearest available year for GPW population data: 2015
2021-04-23 16:12:58,428 - climada.entity.exposures.gpw_import - INFO - GPW Version v4.11
2021-04-23 16:13:12,769 - climada.util.finance - INFO - GDP DEU 2014: 3.884e+12.
2021-04-23 16:13:13,265 - climada.util.finance - INFO - GDP DEU 2016: 3.467e+12.
2021-04-23 16:13:23,971 - climada.entity.exposures.base - INFO - meta set to default value {}
2021-04-23 16:13:23,972 - climada.entity.exposures.base - INFO - tag set to default value File:
Description:
2021-04-23 16:13:23,972 - climada.entity.exposures.base - INFO - ref_year set to default value 2018
2021-04-23 16:13:23,973 - climada.entity.exposures.base - INFO - value_unit set to default value USD
2021-04-23 16:13:24,154 - climada.entity.exposures.base - INFO - crs set to default value: EPSG:4326
2021-04-23 16:13:24,185 - climada.entity.exposures.base - INFO - meta set to default value {}
2021-04-23 16:13:24,263 - climada.entity.exposures.base - INFO - Hazard type not set in impf_
2021-04-23 16:13:24,263 - climada.entity.exposures.base - INFO - category_id not set.
2021-04-23 16:13:24,264 - climada.entity.exposures.base - INFO - cover not set.
2021-04-23 16:13:24,264 - climada.entity.exposures.base - INFO - deductible not set.
2021-04-23 16:13:24,265 - climada.entity.exposures.base - INFO - geometry not set.
2021-04-23 16:13:24,265 - climada.entity.exposures.base - INFO - centr_ not set.
/Users/zeliestalhanske/python_projects/climada_python/climada/entity/exposures/base.py:221: FutureWarning: Assigning CRS to a GeoDataFrame without a geometry column is now deprecated and will not be supported in the future.
self.gdf.crs = self.meta['crs']
/Users/zeliestalhanske/python_projects/climada_python/climada/entity/exposures/base.py:725: FutureWarning: Assigning CRS to a GeoDataFrame without a geometry column is now deprecated and will not be supported in the future.
exp.gdf = GeoDataFrame(
/Users/zeliestalhanske/miniconda3/envs/climada_env/lib/python3.8/site-packages/geopandas/geodataframe.py:167: UserWarning: Pandas doesn't allow columns to be created via a new attribute name - see https://pandas.pydata.org/pandas-docs/stable/indexing.html#attribute-access
super(GeoDataFrame, self).__setattr__(attr, val)
/Users/zeliestalhanske/python_projects/climada_python/climada/entity/exposures/base.py:190: FutureWarning: Assigning CRS to a GeoDataFrame without a geometry column is now deprecated and will not be supported in the future.
self.gdf = GeoDataFrame(*args, **kwargs)
[13]:
<climada.entity.exposures.litpop.LitPop at 0x7fd5a6995160>
[16]:
# In the LitPop exposure the damage function for river floods needs
# to be specified manually.
import pandas as pd
from climada.util.constants import RIVER_FLOOD_REGIONS_CSV
info = pd.read_csv(RIVER_FLOOD_REGIONS_CSV)
lp_exp.gdf['impf_RF'] = info.loc[info['ISO']=='DEU','impf_RF'].values[0]
lp_exp
lp_exp.plot_hexbin(pop_name=True)
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
~/miniconda3/envs/climada_env/lib/python3.8/site-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
3079 try:
-> 3080 return self._engine.get_loc(casted_key)
3081 except KeyError as err:
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()
KeyError: 'impf_RF'
The above exception was the direct cause of the following exception:
KeyError Traceback (most recent call last)
<ipython-input-16-f35b0a5b42ce> in <module>
5
6 info = pd.read_csv(RIVER_FLOOD_REGIONS_CSV)
----> 7 lp_exp.gdf['impf_RF'] = info.loc[info['ISO']=='DEU','impf_RF'].values[0]
8 lp_exp
9 lp_exp.plot_hexbin(pop_name=True)
~/miniconda3/envs/climada_env/lib/python3.8/site-packages/pandas/core/indexing.py in __getitem__(self, key)
887 # AttributeError for IntervalTree get_value
888 return self.obj._get_value(*key, takeable=self._takeable)
--> 889 return self._getitem_tuple(key)
890 else:
891 # we by definition only have the 0th axis
~/miniconda3/envs/climada_env/lib/python3.8/site-packages/pandas/core/indexing.py in _getitem_tuple(self, tup)
1058 def _getitem_tuple(self, tup: Tuple):
1059 with suppress(IndexingError):
-> 1060 return self._getitem_lowerdim(tup)
1061
1062 # no multi-index, so validate all of the indexers
~/miniconda3/envs/climada_env/lib/python3.8/site-packages/pandas/core/indexing.py in _getitem_lowerdim(self, tup)
805 # We don't need to check for tuples here because those are
806 # caught by the _is_nested_tuple_indexer check above.
--> 807 section = self._getitem_axis(key, axis=i)
808
809 # We should never have a scalar section here, because
~/miniconda3/envs/climada_env/lib/python3.8/site-packages/pandas/core/indexing.py in _getitem_axis(self, key, axis)
1122 # fall thru to straight lookup
1123 self._validate_key(key, axis)
-> 1124 return self._get_label(key, axis=axis)
1125
1126 def _get_slice_axis(self, slice_obj: slice, axis: int):
~/miniconda3/envs/climada_env/lib/python3.8/site-packages/pandas/core/indexing.py in _get_label(self, label, axis)
1071 def _get_label(self, label, axis: int):
1072 # GH#5667 this will fail if the label is not present in the axis.
-> 1073 return self.obj.xs(label, axis=axis)
1074
1075 def _handle_lowerdim_multi_index_axis0(self, tup: Tuple):
~/miniconda3/envs/climada_env/lib/python3.8/site-packages/pandas/core/generic.py in xs(self, key, axis, level, drop_level)
3722 if axis == 1:
3723 if drop_level:
-> 3724 return self[key]
3725 index = self.columns
3726 else:
~/miniconda3/envs/climada_env/lib/python3.8/site-packages/pandas/core/frame.py in __getitem__(self, key)
3022 if self.columns.nlevels > 1:
3023 return self._getitem_multilevel(key)
-> 3024 indexer = self.columns.get_loc(key)
3025 if is_integer(indexer):
3026 indexer = [indexer]
~/miniconda3/envs/climada_env/lib/python3.8/site-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
3080 return self._engine.get_loc(casted_key)
3081 except KeyError as err:
-> 3082 raise KeyError(key) from err
3083
3084 if tolerance is not None:
KeyError: 'impf_RF'
[17]:
from climada.engine import Impact
rf = RiverFlood()
rf.set_from_nc(countries = ['DEU'], years=years, dph_path=HAZ_DEMO_FLDDPH, frc_path=HAZ_DEMO_FLDFRC)
imp=Impact()
imp.calc(lp_exp, impf_set,rf,save_mat=True)
rf.plot_intensity(0)
imp.plot_scatter_eai_exposure()
2021-04-23 16:14:26,492 - climada.util.coordinates - INFO - Reading /Users/zeliestalhanske/climada/demo/data/flddph_2000_DEMO.nc
2021-04-23 16:14:26,510 - climada.util.coordinates - INFO - Reading /Users/zeliestalhanske/climada/demo/data/fldfrc_2000_DEMO.nc
2021-04-23 16:14:26,539 - climada.entity.exposures.base - INFO - Matching 661392 exposures with 41548 centroids.
2021-04-23 16:14:26,576 - climada.engine.impact - INFO - Calculating damage for 656379 assets (>0) and 1 events.
2021-04-23 16:14:26,577 - climada.engine.impact - INFO - Missing exposures impact functions for hazard impf_RF. Using impact functions in impf_.
/Users/zeliestalhanske/python_projects/climada_python/climada/entity/exposures/base.py:190: FutureWarning: Assigning CRS to a GeoDataFrame without a geometry column is now deprecated and will not be supported in the future.
self.gdf = GeoDataFrame(*args, **kwargs)
[17]:
<GeoAxesSubplot:title={'center':'Expected annual impact'}>