flood-adapt 1.1.2__tar.gz → 1.1.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/PKG-INFO +1 -1
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/__init__.py +1 -1
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/adapter/sfincs_adapter.py +10 -13
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/database_builder/__init__.py +17 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/database_builder/database_builder.py +252 -172
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/database_builder/metrics_utils.py +18 -28
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/dbs_classes/database.py +1 -1
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/objects/forcing/tide_gauge.py +2 -1
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt.egg-info/PKG-INFO +1 -1
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/LICENSE +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/README.md +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/adapter/__init__.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/adapter/fiat_adapter.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/adapter/interface/__init__.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/adapter/interface/hazard_adapter.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/adapter/interface/impact_adapter.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/adapter/interface/model_adapter.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/adapter/interface/offshore.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/adapter/sfincs_offshore.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/config/__init__.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/config/config.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/config/fiat.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/config/gui.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/config/hazard.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/config/impacts.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/config/sfincs.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/config/site.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/database_builder/templates/default_units/imperial.toml +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/database_builder/templates/default_units/metric.toml +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/database_builder/templates/green_infra_table/green_infra_lookup_table.csv +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/database_builder/templates/icons/black_down_48x48.png +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/database_builder/templates/icons/black_left_48x48.png +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/database_builder/templates/icons/black_right_48x48.png +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/database_builder/templates/icons/black_up_48x48.png +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/database_builder/templates/icons/icons8-triangle-arrow-16_white_down.png +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/database_builder/templates/icons/icons8-triangle-arrow-16_white_left.png +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/database_builder/templates/icons/icons8-triangle-arrow-16_white_right.png +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/database_builder/templates/icons/icons8-triangle-arrow-16_white_up.png +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/database_builder/templates/icons/icons8-triangle-arrow-24_black_down.png +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/database_builder/templates/icons/icons8-triangle-arrow-24_black_left.png +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/database_builder/templates/icons/icons8-triangle-arrow-24_black_right.png +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/database_builder/templates/icons/icons8-triangle-arrow-24_black_up.png +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/database_builder/templates/icons/icons8-triangle-arrow-24_white_left.png +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/database_builder/templates/icons/icons8-triangle-arrow-24_white_right.png +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/database_builder/templates/icons/white_down_48x48.png +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/database_builder/templates/icons/white_left_48x48.png +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/database_builder/templates/icons/white_right_48x48.png +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/database_builder/templates/icons/white_up_48x48.png +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/database_builder/templates/infographics/images/ambulance.png +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/database_builder/templates/infographics/images/car.png +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/database_builder/templates/infographics/images/cart.png +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/database_builder/templates/infographics/images/firetruck.png +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/database_builder/templates/infographics/images/hospital.png +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/database_builder/templates/infographics/images/house.png +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/database_builder/templates/infographics/images/info.png +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/database_builder/templates/infographics/images/money.png +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/database_builder/templates/infographics/images/person.png +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/database_builder/templates/infographics/images/school.png +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/database_builder/templates/infographics/images/truck.png +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/database_builder/templates/infographics/images/walking_person.png +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/database_builder/templates/infographics/styles.css +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/database_builder/templates/output_layers/bin_colors.toml +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/dbs_classes/__init__.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/dbs_classes/dbs_benefit.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/dbs_classes/dbs_event.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/dbs_classes/dbs_measure.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/dbs_classes/dbs_projection.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/dbs_classes/dbs_scenario.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/dbs_classes/dbs_static.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/dbs_classes/dbs_strategy.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/dbs_classes/dbs_template.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/dbs_classes/interface/database.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/dbs_classes/interface/element.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/dbs_classes/interface/static.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/flood_adapt.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/misc/__init__.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/misc/database_user.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/misc/debug_timer.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/misc/exceptions.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/misc/log.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/misc/path_builder.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/misc/utils.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/objects/__init__.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/objects/benefits/__init__.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/objects/benefits/benefits.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/objects/events/__init__.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/objects/events/event_factory.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/objects/events/event_set.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/objects/events/events.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/objects/events/historical.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/objects/events/hurricane.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/objects/events/synthetic.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/objects/forcing/__init__.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/objects/forcing/csv.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/objects/forcing/discharge.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/objects/forcing/forcing.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/objects/forcing/forcing_factory.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/objects/forcing/meteo_handler.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/objects/forcing/netcdf.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/objects/forcing/plotting.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/objects/forcing/rainfall.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/objects/forcing/time_frame.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/objects/forcing/timeseries.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/objects/forcing/unit_system.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/objects/forcing/waterlevels.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/objects/forcing/wind.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/objects/measures/__init__.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/objects/measures/measure_factory.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/objects/measures/measures.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/objects/object_model.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/objects/output/floodmap.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/objects/projections/__init__.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/objects/projections/projections.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/objects/scenarios/__init__.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/objects/scenarios/scenarios.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/objects/strategies/__init__.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/objects/strategies/strategies.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/workflows/__init__.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/workflows/benefit_runner.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt/workflows/scenario_runner.py +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt.egg-info/SOURCES.txt +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt.egg-info/dependency_links.txt +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt.egg-info/not-zip-safe +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt.egg-info/requires.txt +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/flood_adapt.egg-info/top_level.txt +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/pyproject.toml +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/setup.cfg +0 -0
- {flood_adapt-1.1.2 → flood_adapt-1.1.3}/tests/test_flood_adapt.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: flood-adapt
|
|
3
|
-
Version: 1.1.
|
|
3
|
+
Version: 1.1.3
|
|
4
4
|
Summary: A software package support system which can be used to assess the benefits and costs of flood resilience measures
|
|
5
5
|
Author-email: Gundula Winter <Gundula.Winter@deltares.nl>, Panos Athanasiou <Panos.Athanasiou@deltares.nl>, Frederique de Groen <Frederique.deGroen@deltares.nl>, Tim de Wilde <Tim.deWilde@deltares.nl>, Julian Hofer <Julian.Hofer@deltares.nl>, Daley Adrichem <Daley.Adrichem@deltares.nl>, Luuk Blom <Luuk.Blom@deltares.nl>
|
|
6
6
|
License: ====================================================
|
|
@@ -677,23 +677,20 @@ class SfincsAdapter(IHazardAdapter):
|
|
|
677
677
|
|
|
678
678
|
def add_obs_points(self):
|
|
679
679
|
"""Add observation points provided in the site toml to SFINCS model."""
|
|
680
|
-
|
|
680
|
+
obs_points = self.settings.obs_point
|
|
681
|
+
if not obs_points:
|
|
681
682
|
return
|
|
682
|
-
logger.info("Adding observation points to the overland flood model")
|
|
683
683
|
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
names.append(pt.name)
|
|
690
|
-
lat.append(pt.lat)
|
|
691
|
-
lon.append(pt.lon)
|
|
692
|
-
|
|
693
|
-
# create GeoDataFrame from obs_points in site file
|
|
684
|
+
names = [pt.name for pt in obs_points]
|
|
685
|
+
lat = [pt.lat for pt in obs_points]
|
|
686
|
+
lon = [pt.lon for pt in obs_points]
|
|
687
|
+
|
|
688
|
+
logger.info("Adding observation points to the overland flood model")
|
|
694
689
|
df = pd.DataFrame({"name": names})
|
|
695
690
|
gdf = gpd.GeoDataFrame(
|
|
696
|
-
df,
|
|
691
|
+
df,
|
|
692
|
+
geometry=gpd.points_from_xy(lon, lat),
|
|
693
|
+
crs="EPSG:4326",
|
|
697
694
|
)
|
|
698
695
|
|
|
699
696
|
# Add locations to SFINCS file
|
|
@@ -10,6 +10,16 @@ from flood_adapt.database_builder.database_builder import (
|
|
|
10
10
|
create_database,
|
|
11
11
|
)
|
|
12
12
|
|
|
13
|
+
from .metrics_utils import (
|
|
14
|
+
BuildingsInfographicModel,
|
|
15
|
+
EventInfographicModel,
|
|
16
|
+
HomesInfographicModel,
|
|
17
|
+
ImpactCategoriesModel,
|
|
18
|
+
MetricModel,
|
|
19
|
+
RiskInfographicModel,
|
|
20
|
+
RoadsInfographicModel,
|
|
21
|
+
)
|
|
22
|
+
|
|
13
23
|
__all__ = [
|
|
14
24
|
"Basins",
|
|
15
25
|
"ConfigModel",
|
|
@@ -20,4 +30,11 @@ __all__ = [
|
|
|
20
30
|
"TideGaugeConfigModel",
|
|
21
31
|
"UnitSystems",
|
|
22
32
|
"create_database",
|
|
33
|
+
"BuildingsInfographicModel",
|
|
34
|
+
"EventInfographicModel",
|
|
35
|
+
"HomesInfographicModel",
|
|
36
|
+
"MetricModel",
|
|
37
|
+
"RiskInfographicModel",
|
|
38
|
+
"RoadsInfographicModel",
|
|
39
|
+
"ImpactCategoriesModel",
|
|
23
40
|
]
|
|
@@ -32,10 +32,15 @@ from flood_adapt.config.fiat import (
|
|
|
32
32
|
from flood_adapt.config.gui import (
|
|
33
33
|
AggregationDmgLayer,
|
|
34
34
|
BenefitsLayer,
|
|
35
|
+
FieldName,
|
|
36
|
+
FilterCondition,
|
|
37
|
+
FilterGroup,
|
|
35
38
|
FloodMapLayer,
|
|
36
39
|
FootprintsDmgLayer,
|
|
37
40
|
GuiModel,
|
|
38
41
|
GuiUnitModel,
|
|
42
|
+
LogicalOperator,
|
|
43
|
+
MetricLayer,
|
|
39
44
|
OutputLayers,
|
|
40
45
|
PlottingModel,
|
|
41
46
|
SyntheticTideModel,
|
|
@@ -70,6 +75,15 @@ from flood_adapt.config.site import (
|
|
|
70
75
|
Site,
|
|
71
76
|
StandardObjectModel,
|
|
72
77
|
)
|
|
78
|
+
from flood_adapt.database_builder.metrics_utils import (
|
|
79
|
+
BuildingsInfographicModel,
|
|
80
|
+
EventInfographicModel,
|
|
81
|
+
HomesInfographicModel,
|
|
82
|
+
MetricModel,
|
|
83
|
+
Metrics,
|
|
84
|
+
RiskInfographicModel,
|
|
85
|
+
RoadsInfographicModel,
|
|
86
|
+
)
|
|
73
87
|
from flood_adapt.dbs_classes.database import Database
|
|
74
88
|
from flood_adapt.misc.debug_timer import debug_timer
|
|
75
89
|
from flood_adapt.misc.log import FloodAdaptLogging
|
|
@@ -87,16 +101,6 @@ from flood_adapt.objects.projections.projections import (
|
|
|
87
101
|
)
|
|
88
102
|
from flood_adapt.objects.strategies.strategies import Strategy
|
|
89
103
|
|
|
90
|
-
from .metrics_utils import (
|
|
91
|
-
BuildingsInfographicModel,
|
|
92
|
-
EventInfographicModel,
|
|
93
|
-
HomesInfographicModel,
|
|
94
|
-
MetricModel,
|
|
95
|
-
Metrics,
|
|
96
|
-
RiskInfographicModel,
|
|
97
|
-
RoadsInfographicModel,
|
|
98
|
-
)
|
|
99
|
-
|
|
100
104
|
logger = FloodAdaptLogging.getLogger("DatabaseBuilder")
|
|
101
105
|
|
|
102
106
|
|
|
@@ -130,16 +134,17 @@ def path_check(str_path: str, config_path: Optional[Path] = None) -> str:
|
|
|
130
134
|
|
|
131
135
|
|
|
132
136
|
class SpatialJoinModel(BaseModel):
|
|
133
|
-
"""
|
|
137
|
+
"""
|
|
138
|
+
Model for representing a spatial join between geometries and tabular data.
|
|
134
139
|
|
|
135
|
-
|
|
140
|
+
Parameters
|
|
136
141
|
----------
|
|
137
|
-
name : Optional[str]
|
|
138
|
-
|
|
142
|
+
name : Optional[str]
|
|
143
|
+
Name of the spatial join (optional).
|
|
139
144
|
file : str
|
|
140
|
-
|
|
145
|
+
Path to the file containing the spatial data to join.
|
|
141
146
|
field_name : str
|
|
142
|
-
|
|
147
|
+
Name of the field used for joining.
|
|
143
148
|
"""
|
|
144
149
|
|
|
145
150
|
name: Optional[str] = None
|
|
@@ -148,14 +153,13 @@ class SpatialJoinModel(BaseModel):
|
|
|
148
153
|
|
|
149
154
|
|
|
150
155
|
class UnitSystems(str, Enum):
|
|
151
|
-
"""
|
|
156
|
+
"""
|
|
157
|
+
Enumeration for supported unit systems.
|
|
152
158
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
imperial :
|
|
156
|
-
|
|
157
|
-
metric : str
|
|
158
|
-
Represents the metric unit system.
|
|
159
|
+
Values
|
|
160
|
+
------
|
|
161
|
+
imperial : Imperial units (feet, miles, etc.)
|
|
162
|
+
metric : Metric units (meters, kilometers, etc.)
|
|
159
163
|
"""
|
|
160
164
|
|
|
161
165
|
imperial = "imperial"
|
|
@@ -163,36 +167,30 @@ class UnitSystems(str, Enum):
|
|
|
163
167
|
|
|
164
168
|
|
|
165
169
|
class FootprintsOptions(str, Enum):
|
|
166
|
-
"""
|
|
170
|
+
"""
|
|
171
|
+
Enumeration for building footprints data sources.
|
|
167
172
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
OSM :
|
|
171
|
-
Use OpenStreetMap for building footprints.
|
|
173
|
+
Values
|
|
174
|
+
------
|
|
175
|
+
OSM : Use OpenStreetMap for building footprints.
|
|
172
176
|
"""
|
|
173
177
|
|
|
174
178
|
OSM = "OSM"
|
|
175
179
|
|
|
176
180
|
|
|
177
181
|
class Basins(str, Enum):
|
|
178
|
-
"""
|
|
182
|
+
"""
|
|
183
|
+
Enumeration of global cyclone basins.
|
|
179
184
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
NA :
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
Western North Pacific
|
|
190
|
-
SP : str
|
|
191
|
-
South Pacific
|
|
192
|
-
SI : str
|
|
193
|
-
South Indian
|
|
194
|
-
NI : str
|
|
195
|
-
North Indian
|
|
185
|
+
Values
|
|
186
|
+
------
|
|
187
|
+
NA : North Atlantic
|
|
188
|
+
SA : South Atlantic
|
|
189
|
+
EP : Eastern North Pacific (includes Central Pacific)
|
|
190
|
+
WP : Western North Pacific
|
|
191
|
+
SP : South Pacific
|
|
192
|
+
SI : South Indian
|
|
193
|
+
NI : North Indian
|
|
196
194
|
"""
|
|
197
195
|
|
|
198
196
|
NA = "NA"
|
|
@@ -205,59 +203,67 @@ class Basins(str, Enum):
|
|
|
205
203
|
|
|
206
204
|
|
|
207
205
|
class GuiConfigModel(BaseModel):
|
|
208
|
-
"""
|
|
206
|
+
"""
|
|
207
|
+
Configuration for FloodAdapt GUI visualization scaling.
|
|
209
208
|
|
|
210
|
-
|
|
209
|
+
Parameters
|
|
211
210
|
----------
|
|
212
211
|
max_flood_depth : float
|
|
213
|
-
|
|
212
|
+
Maximum flood depth for visualization bins (last bin is ">value").
|
|
214
213
|
max_aggr_dmg : float
|
|
215
|
-
|
|
214
|
+
Maximum aggregated damage for visualization bins.
|
|
216
215
|
max_footprint_dmg : float
|
|
217
|
-
|
|
216
|
+
Maximum footprint damage for visualization bins.
|
|
218
217
|
max_benefits : float
|
|
219
|
-
|
|
218
|
+
Maximum benefits for visualization bins.
|
|
219
|
+
additional_aggregated_layers : Optional[list[MetricLayer]]
|
|
220
|
+
Additional metric layers for aggregation (optional).
|
|
220
221
|
"""
|
|
221
222
|
|
|
222
223
|
max_flood_depth: float
|
|
223
224
|
max_aggr_dmg: float
|
|
224
225
|
max_footprint_dmg: float
|
|
225
226
|
max_benefits: float
|
|
227
|
+
additional_aggregated_layers: Optional[list[MetricLayer]] = None
|
|
226
228
|
|
|
227
229
|
|
|
228
230
|
class SviConfigModel(SpatialJoinModel):
|
|
229
|
-
"""
|
|
231
|
+
"""
|
|
232
|
+
Model for Social Vulnerability Index (SVI) spatial join.
|
|
233
|
+
|
|
234
|
+
Inherits from SpatialJoinModel.
|
|
230
235
|
|
|
231
|
-
|
|
236
|
+
Parameters
|
|
232
237
|
----------
|
|
233
238
|
threshold : float
|
|
234
|
-
|
|
239
|
+
Threshold value to specify vulnerability.
|
|
235
240
|
"""
|
|
236
241
|
|
|
237
242
|
threshold: float
|
|
238
243
|
|
|
239
244
|
|
|
240
245
|
class TideGaugeConfigModel(BaseModel):
|
|
241
|
-
"""
|
|
246
|
+
"""
|
|
247
|
+
Model for tide gauge configuration.
|
|
242
248
|
|
|
243
|
-
|
|
249
|
+
Parameters
|
|
244
250
|
----------
|
|
245
251
|
source : TideGaugeSource
|
|
246
|
-
|
|
247
|
-
description : str
|
|
252
|
+
Source of tide gauge data.
|
|
253
|
+
description : str
|
|
248
254
|
Description of the tide gauge.
|
|
249
|
-
ref : Optional[str]
|
|
250
|
-
|
|
251
|
-
id : Optional[int]
|
|
252
|
-
|
|
253
|
-
lon : Optional[float]
|
|
254
|
-
Longitude
|
|
255
|
-
lat : Optional[float]
|
|
256
|
-
Latitude
|
|
257
|
-
file : Optional[str]
|
|
258
|
-
|
|
259
|
-
max_distance : Optional[us.UnitfulLength]
|
|
260
|
-
|
|
255
|
+
ref : Optional[str]
|
|
256
|
+
Reference name (should match water level references).
|
|
257
|
+
id : Optional[int]
|
|
258
|
+
Station ID.
|
|
259
|
+
lon : Optional[float]
|
|
260
|
+
Longitude.
|
|
261
|
+
lat : Optional[float]
|
|
262
|
+
Latitude.
|
|
263
|
+
file : Optional[str]
|
|
264
|
+
Path to tide gauge data file.
|
|
265
|
+
max_distance : Optional[us.UnitfulLength]
|
|
266
|
+
Maximum distance for gauge association.
|
|
261
267
|
"""
|
|
262
268
|
|
|
263
269
|
source: TideGaugeSource
|
|
@@ -272,74 +278,76 @@ class TideGaugeConfigModel(BaseModel):
|
|
|
272
278
|
|
|
273
279
|
class ConfigModel(BaseModel):
|
|
274
280
|
"""
|
|
275
|
-
|
|
281
|
+
Main configuration model for FloodAdapt database builder.
|
|
276
282
|
|
|
277
|
-
|
|
283
|
+
Parameters
|
|
278
284
|
----------
|
|
279
285
|
name : str
|
|
280
|
-
|
|
281
|
-
description : Optional[str]
|
|
282
|
-
|
|
283
|
-
database_path : Optional[str]
|
|
284
|
-
|
|
286
|
+
Name of the site (must be valid for folder names).
|
|
287
|
+
description : Optional[str]
|
|
288
|
+
Description of the site.
|
|
289
|
+
database_path : Optional[str]
|
|
290
|
+
Path to the database root directory.
|
|
285
291
|
unit_system : UnitSystems
|
|
286
|
-
|
|
292
|
+
Unit system for all calculations (imperial or metric).
|
|
287
293
|
gui : GuiConfigModel
|
|
288
|
-
|
|
289
|
-
infographics : bool
|
|
290
|
-
|
|
291
|
-
event_infographics : Optional[EventInfographicModel]
|
|
292
|
-
|
|
293
|
-
risk_infographics : Optional[RiskInfographicModel]
|
|
294
|
-
|
|
295
|
-
event_additional_infometrics : Optional[list[MetricModel]]
|
|
294
|
+
GUI visualization scaling configuration.
|
|
295
|
+
infographics : bool
|
|
296
|
+
Enable/disable infographics.
|
|
297
|
+
event_infographics : Optional[EventInfographicModel]
|
|
298
|
+
Configuration for event infographics.
|
|
299
|
+
risk_infographics : Optional[RiskInfographicModel]
|
|
300
|
+
Configuration for risk infographics.
|
|
301
|
+
event_additional_infometrics : Optional[list[MetricModel]]
|
|
296
302
|
Additional event infometrics.
|
|
297
|
-
risk_additional_infometrics : Optional[list[MetricModel]]
|
|
303
|
+
risk_additional_infometrics : Optional[list[MetricModel]]
|
|
298
304
|
Additional risk infometrics.
|
|
299
305
|
fiat : str
|
|
300
|
-
|
|
301
|
-
aggregation_areas : Optional[list[SpatialJoinModel]]
|
|
302
|
-
|
|
303
|
-
building_footprints : Optional[SpatialJoinModel | FootprintsOptions]
|
|
304
|
-
|
|
305
|
-
fiat_buildings_name : str | list[str]
|
|
306
|
-
|
|
307
|
-
fiat_roads_name : Optional[str]
|
|
308
|
-
|
|
309
|
-
bfe : Optional[SpatialJoinModel]
|
|
310
|
-
|
|
311
|
-
svi : Optional[SviConfigModel]
|
|
312
|
-
|
|
313
|
-
road_width : us.UnitfulLength
|
|
314
|
-
|
|
315
|
-
return_periods : Optional[list[int]]
|
|
316
|
-
|
|
317
|
-
floodmap_type : Optional[FloodmapType]
|
|
318
|
-
|
|
319
|
-
references : Optional[WaterlevelReferenceModel]
|
|
320
|
-
|
|
306
|
+
Path to the FIAT model directory.
|
|
307
|
+
aggregation_areas : Optional[list[SpatialJoinModel]]
|
|
308
|
+
List of aggregation area spatial join models.
|
|
309
|
+
building_footprints : Optional[SpatialJoinModel | FootprintsOptions]
|
|
310
|
+
Building footprints source or spatial join model.
|
|
311
|
+
fiat_buildings_name : str | list[str]
|
|
312
|
+
Name(s) of buildings geometry in FIAT model.
|
|
313
|
+
fiat_roads_name : Optional[str]
|
|
314
|
+
Name of roads geometry in FIAT model.
|
|
315
|
+
bfe : Optional[SpatialJoinModel]
|
|
316
|
+
Base Flood Elevation spatial join model.
|
|
317
|
+
svi : Optional[SviConfigModel]
|
|
318
|
+
Social Vulnerability Index spatial join model.
|
|
319
|
+
road_width : us.UnitfulLength
|
|
320
|
+
Road width (default 5 meters).
|
|
321
|
+
return_periods : Optional[list[int]]
|
|
322
|
+
List of return periods for risk calculations.
|
|
323
|
+
floodmap_type : Optional[FloodmapType]
|
|
324
|
+
Type of floodmap to use.
|
|
325
|
+
references : Optional[WaterlevelReferenceModel]
|
|
326
|
+
Water level reference model.
|
|
321
327
|
sfincs_overland : FloodModel
|
|
322
|
-
|
|
323
|
-
sfincs_offshore : Optional[FloodModel]
|
|
324
|
-
|
|
325
|
-
dem : Optional[DemModel]
|
|
326
|
-
|
|
327
|
-
|
|
328
|
+
Overland SFINCS model configuration.
|
|
329
|
+
sfincs_offshore : Optional[FloodModel]
|
|
330
|
+
Offshore SFINCS model configuration.
|
|
331
|
+
dem : Optional[DemModel]
|
|
332
|
+
Digital Elevation Model configuration.
|
|
333
|
+
river_names : Optional[list[str]]
|
|
334
|
+
List of river names (optional).
|
|
335
|
+
excluded_datums : list[str]
|
|
328
336
|
List of datums to exclude from plotting.
|
|
329
|
-
slr_scenarios : Optional[SlrScenariosModel]
|
|
330
|
-
|
|
331
|
-
scs : Optional[SCSModel]
|
|
332
|
-
|
|
333
|
-
tide_gauge : Optional[TideGaugeConfigModel]
|
|
334
|
-
|
|
335
|
-
cyclones : Optional[bool]
|
|
336
|
-
|
|
337
|
-
cyclone_basin : Optional[Basins]
|
|
338
|
-
|
|
339
|
-
obs_point : Optional[list[ObsPointModel]]
|
|
340
|
-
|
|
341
|
-
probabilistic_set : Optional[str]
|
|
342
|
-
|
|
337
|
+
slr_scenarios : Optional[SlrScenariosModel]
|
|
338
|
+
Sea level rise scenarios configuration.
|
|
339
|
+
scs : Optional[SCSModel]
|
|
340
|
+
SCS model configuration.
|
|
341
|
+
tide_gauge : Optional[TideGaugeConfigModel]
|
|
342
|
+
Tide gauge configuration.
|
|
343
|
+
cyclones : Optional[bool]
|
|
344
|
+
Enable/disable cyclones.
|
|
345
|
+
cyclone_basin : Optional[Basins]
|
|
346
|
+
Cyclone basin selection.
|
|
347
|
+
obs_point : Optional[list[ObsPointModel]]
|
|
348
|
+
List of observation point models.
|
|
349
|
+
probabilistic_set : Optional[str]
|
|
350
|
+
Path to probabilistic event set.
|
|
343
351
|
"""
|
|
344
352
|
|
|
345
353
|
# General
|
|
@@ -375,7 +383,7 @@ class ConfigModel(BaseModel):
|
|
|
375
383
|
sfincs_overland: FloodModel
|
|
376
384
|
sfincs_offshore: Optional[FloodModel] = None
|
|
377
385
|
dem: Optional[DemModel] = None
|
|
378
|
-
|
|
386
|
+
river_names: Optional[list[str]] = None
|
|
379
387
|
excluded_datums: list[str] = Field(default_factory=list)
|
|
380
388
|
|
|
381
389
|
slr_scenarios: Optional[SlrScenariosModel] = None
|
|
@@ -1347,7 +1355,12 @@ class DatabaseBuilder:
|
|
|
1347
1355
|
if delete_sfincs_folder:
|
|
1348
1356
|
gc.collect()
|
|
1349
1357
|
if subgrid_sfincs_folder.exists() and subgrid_sfincs_folder.is_dir():
|
|
1350
|
-
|
|
1358
|
+
try:
|
|
1359
|
+
shutil.rmtree(subgrid_sfincs_folder)
|
|
1360
|
+
except Exception:
|
|
1361
|
+
logger.warning(
|
|
1362
|
+
f"Could not delete temporary SFINCS subgrid folder at {subgrid_sfincs_folder.as_posix()}."
|
|
1363
|
+
)
|
|
1351
1364
|
|
|
1352
1365
|
return DemModel(
|
|
1353
1366
|
filename=fa_subgrid_path.name, units=us.UnitTypesLength.meters
|
|
@@ -1393,39 +1406,43 @@ class DatabaseBuilder:
|
|
|
1393
1406
|
else:
|
|
1394
1407
|
logger.info("Observation points were provided in the config file.")
|
|
1395
1408
|
obs_points = self.config.obs_point
|
|
1409
|
+
|
|
1396
1410
|
if self.tide_gauge is not None:
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
)
|
|
1408
|
-
else:
|
|
1409
|
-
logger.info(
|
|
1410
|
-
"A tide gauge has been setup in the database. It will be used as an observation point as well."
|
|
1411
|
-
)
|
|
1412
|
-
obs_points.append(
|
|
1413
|
-
ObsPointModel(
|
|
1414
|
-
name=self.tide_gauge.name,
|
|
1415
|
-
description="Tide gauge observation point",
|
|
1416
|
-
ID=self.tide_gauge.ID,
|
|
1417
|
-
lon=self.tide_gauge.lon,
|
|
1418
|
-
lat=self.tide_gauge.lat,
|
|
1419
|
-
)
|
|
1411
|
+
logger.info(
|
|
1412
|
+
"A tide gauge has been setup in the database. It will be used as an observation point as well."
|
|
1413
|
+
)
|
|
1414
|
+
obs_points.append(
|
|
1415
|
+
ObsPointModel(
|
|
1416
|
+
name=self.tide_gauge.name,
|
|
1417
|
+
description="Tide gauge observation point",
|
|
1418
|
+
ID=self.tide_gauge.ID,
|
|
1419
|
+
lon=self.tide_gauge.lon,
|
|
1420
|
+
lat=self.tide_gauge.lat,
|
|
1420
1421
|
)
|
|
1422
|
+
)
|
|
1421
1423
|
|
|
1422
1424
|
if not obs_points:
|
|
1423
1425
|
logger.warning(
|
|
1424
1426
|
"No observation points were provided in the config file or created from the tide gauge. No observation points will be available in FloodAdapt."
|
|
1425
1427
|
)
|
|
1426
1428
|
return None
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
+
|
|
1430
|
+
lon = [p.lon for p in obs_points]
|
|
1431
|
+
lat = [p.lat for p in obs_points]
|
|
1432
|
+
names = [p.name for p in obs_points]
|
|
1433
|
+
coords = gpd.GeoDataFrame(
|
|
1434
|
+
{"names": names},
|
|
1435
|
+
geometry=gpd.points_from_xy(lon, lat),
|
|
1436
|
+
crs="EPSG:4326",
|
|
1437
|
+
)
|
|
1438
|
+
coords = coords.to_crs(self.sfincs_overland_model.crs)
|
|
1439
|
+
model_region = self.sfincs_overland_model.region.union_all()
|
|
1440
|
+
valid_coords = coords.within(model_region)
|
|
1441
|
+
if not valid_coords.all():
|
|
1442
|
+
invalid = coords.loc[~valid_coords, "name"].tolist()
|
|
1443
|
+
raise ValueError(f"Observation points outside model domain: {invalid}")
|
|
1444
|
+
|
|
1445
|
+
return obs_points
|
|
1429
1446
|
|
|
1430
1447
|
@debug_timer
|
|
1431
1448
|
def create_rivers(self) -> list[RiverModel]:
|
|
@@ -1440,6 +1457,17 @@ class DatabaseBuilder:
|
|
|
1440
1457
|
geometry=gpd.points_from_xy(df.x, df.y),
|
|
1441
1458
|
crs=self.sfincs_overland_model.crs,
|
|
1442
1459
|
)
|
|
1460
|
+
|
|
1461
|
+
if self.config.river_names:
|
|
1462
|
+
if len(self.config.river_names) != len(river_locs):
|
|
1463
|
+
msg = "The number of river names provided does not match the number of rivers found in the SFINCS model."
|
|
1464
|
+
logger.error(msg)
|
|
1465
|
+
raise ValueError(msg)
|
|
1466
|
+
else:
|
|
1467
|
+
river_locs["name"] = self.config.river_names
|
|
1468
|
+
else:
|
|
1469
|
+
river_locs["name"] = [f"river_{idx}" for idx in range(len(river_locs))]
|
|
1470
|
+
|
|
1443
1471
|
rivers = []
|
|
1444
1472
|
for idx, row in river_locs.iterrows():
|
|
1445
1473
|
if "dis" in self.sfincs_overland_model.forcing:
|
|
@@ -1456,7 +1484,7 @@ class DatabaseBuilder:
|
|
|
1456
1484
|
)
|
|
1457
1485
|
|
|
1458
1486
|
river = RiverModel(
|
|
1459
|
-
name=
|
|
1487
|
+
name=row["name"],
|
|
1460
1488
|
x_coordinate=row.x,
|
|
1461
1489
|
y_coordinate=row.y,
|
|
1462
1490
|
mean_discharge=us.UnitfulDischarge(
|
|
@@ -1782,6 +1810,69 @@ class DatabaseBuilder:
|
|
|
1782
1810
|
],
|
|
1783
1811
|
threshold=0.0,
|
|
1784
1812
|
)
|
|
1813
|
+
red_colors_6 = [
|
|
1814
|
+
"#FFFFFF",
|
|
1815
|
+
"#FEE9CE",
|
|
1816
|
+
"#FDBB84",
|
|
1817
|
+
"#FC844E",
|
|
1818
|
+
"#E03720",
|
|
1819
|
+
"#860000",
|
|
1820
|
+
]
|
|
1821
|
+
|
|
1822
|
+
aggregated_metrics = []
|
|
1823
|
+
|
|
1824
|
+
building_count = MetricLayer(
|
|
1825
|
+
type="building_count",
|
|
1826
|
+
bins=[1, 10, 50, 200, 500], # TODO provide max values
|
|
1827
|
+
colors=red_colors_6,
|
|
1828
|
+
filters=FilterGroup(
|
|
1829
|
+
conditions=[
|
|
1830
|
+
FilterCondition(
|
|
1831
|
+
field_name=FieldName.NAME,
|
|
1832
|
+
values=["Count"],
|
|
1833
|
+
),
|
|
1834
|
+
FilterCondition(
|
|
1835
|
+
field_name=FieldName.LONG_NAME,
|
|
1836
|
+
values=["(#)"],
|
|
1837
|
+
),
|
|
1838
|
+
],
|
|
1839
|
+
operator=LogicalOperator.OR,
|
|
1840
|
+
),
|
|
1841
|
+
)
|
|
1842
|
+
aggregated_metrics.append(building_count)
|
|
1843
|
+
|
|
1844
|
+
if self.config.gui.additional_aggregated_layers:
|
|
1845
|
+
aggregated_metrics.extend(self.config.gui.additional_aggregated_layers)
|
|
1846
|
+
|
|
1847
|
+
if self._has_roads:
|
|
1848
|
+
bins = [0.0001, 1, 5, 10, 20] # in kms
|
|
1849
|
+
if self.unit_system == GuiUnitModel.imperial():
|
|
1850
|
+
# convert to miles
|
|
1851
|
+
bins = [
|
|
1852
|
+
us.UnitfulLength(value=b * 1000, units=us.UnitTypesLength.meters)
|
|
1853
|
+
.transform(us.UnitTypesLength.miles)
|
|
1854
|
+
.value
|
|
1855
|
+
for b in bins
|
|
1856
|
+
]
|
|
1857
|
+
roads_length = MetricLayer(
|
|
1858
|
+
type="road_length",
|
|
1859
|
+
bins=bins, # TODO provide max values
|
|
1860
|
+
colors=red_colors_6,
|
|
1861
|
+
filters=FilterGroup(
|
|
1862
|
+
conditions=[
|
|
1863
|
+
FilterCondition(
|
|
1864
|
+
field_name=FieldName.NAME,
|
|
1865
|
+
values=["RoadsLength"],
|
|
1866
|
+
),
|
|
1867
|
+
FilterCondition(
|
|
1868
|
+
field_name=FieldName.LONG_NAME,
|
|
1869
|
+
values=["roads"],
|
|
1870
|
+
),
|
|
1871
|
+
],
|
|
1872
|
+
operator=LogicalOperator.AND,
|
|
1873
|
+
),
|
|
1874
|
+
)
|
|
1875
|
+
aggregated_metrics.append(roads_length)
|
|
1785
1876
|
|
|
1786
1877
|
output_layers = OutputLayers(
|
|
1787
1878
|
floodmap=FloodMapLayer(
|
|
@@ -1792,25 +1883,12 @@ class DatabaseBuilder:
|
|
|
1792
1883
|
),
|
|
1793
1884
|
aggregation_dmg=AggregationDmgLayer(
|
|
1794
1885
|
bins=[0.00001, 0.1 * ad_max, 0.25 * ad_max, 0.5 * ad_max, ad_max],
|
|
1795
|
-
colors=
|
|
1796
|
-
"#FFFFFF",
|
|
1797
|
-
"#FEE9CE",
|
|
1798
|
-
"#FDBB84",
|
|
1799
|
-
"#FC844E",
|
|
1800
|
-
"#E03720",
|
|
1801
|
-
"#860000",
|
|
1802
|
-
],
|
|
1886
|
+
colors=red_colors_6,
|
|
1803
1887
|
),
|
|
1888
|
+
aggregated_metrics=aggregated_metrics,
|
|
1804
1889
|
footprints_dmg=FootprintsDmgLayer(
|
|
1805
1890
|
bins=[0.00001, 0.06 * ftd_max, 0.2 * ftd_max, 0.4 * ftd_max, ftd_max],
|
|
1806
|
-
colors=
|
|
1807
|
-
"#FFFFFF",
|
|
1808
|
-
"#FEE9CE",
|
|
1809
|
-
"#FDBB84",
|
|
1810
|
-
"#FC844E",
|
|
1811
|
-
"#E03720",
|
|
1812
|
-
"#860000",
|
|
1813
|
-
],
|
|
1891
|
+
colors=red_colors_6,
|
|
1814
1892
|
),
|
|
1815
1893
|
benefits=benefits_layer,
|
|
1816
1894
|
)
|
|
@@ -1893,6 +1971,8 @@ class DatabaseBuilder:
|
|
|
1893
1971
|
# Write the metrics config files
|
|
1894
1972
|
self._write_infometrics(metrics, path_im, path_ig)
|
|
1895
1973
|
|
|
1974
|
+
self.metrics = metrics
|
|
1975
|
+
|
|
1896
1976
|
def _create_mandatory_metrics(self, metrics):
|
|
1897
1977
|
metrics.create_mandatory_metrics_event()
|
|
1898
1978
|
if self._probabilistic_set_name is not None:
|