wolfhece 2.2.40__py3-none-any.whl → 2.2.42__py3-none-any.whl
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.
- wolfhece/PyDraw.py +373 -102
- wolfhece/apps/version.py +1 -1
- wolfhece/eva/pyseries.py +24 -1
- wolfhece/hydrometry/kiwis.py +5 -3
- wolfhece/hydrometry/kiwis_gui.py +2 -1
- wolfhece/math_parser/calculator.py +1 -1
- wolfhece/mesh2d/wolf2dprev.py +45 -17
- wolfhece/models/walous_ocs.pal +49 -0
- wolfhece/pydownloader.py +140 -13
- wolfhece/pywalous.py +200 -139
- wolfhece/scenario/config_manager.py +9 -1
- wolfhece/wolf_array.py +190 -83
- wolfhece/wolfresults_2D.py +4 -4
- {wolfhece-2.2.40.dist-info → wolfhece-2.2.42.dist-info}/METADATA +1 -1
- {wolfhece-2.2.40.dist-info → wolfhece-2.2.42.dist-info}/RECORD +18 -17
- {wolfhece-2.2.40.dist-info → wolfhece-2.2.42.dist-info}/WHEEL +0 -0
- {wolfhece-2.2.40.dist-info → wolfhece-2.2.42.dist-info}/entry_points.txt +0 -0
- {wolfhece-2.2.40.dist-info → wolfhece-2.2.42.dist-info}/top_level.txt +0 -0
wolfhece/pywalous.py
CHANGED
@@ -23,6 +23,123 @@ import wx.grid
|
|
23
23
|
from .PyTranslate import _
|
24
24
|
from .PyPalette import wolfpalette
|
25
25
|
|
26
|
+
"""
|
27
|
+
Hydrology classification for Land Use in Wallonia:
|
28
|
+
1 = forêt
|
29
|
+
2 = prairie
|
30
|
+
3 = culture
|
31
|
+
4 = pavés/urbain
|
32
|
+
5 = rivière
|
33
|
+
6 = plan d'eau
|
34
|
+
"""
|
35
|
+
|
36
|
+
HYDROLOGY_LANDUSE_FR = {"forêt" : 1.,
|
37
|
+
"prairie" : 2.,
|
38
|
+
"culture" : 3.,
|
39
|
+
"pavés/urbain" : 4.,
|
40
|
+
"rivière" : 5.,
|
41
|
+
"plan d'eau" : 6.,
|
42
|
+
}
|
43
|
+
|
44
|
+
HYDROLOGY_LANDUSE_EN = {"forest" : 1.,
|
45
|
+
"meadow" : 2.,
|
46
|
+
"crop" : 3.,
|
47
|
+
"paved/urban" : 4.,
|
48
|
+
"river" : 5.,
|
49
|
+
"water body" : 6.,
|
50
|
+
}
|
51
|
+
|
52
|
+
# WALOUS OCS
|
53
|
+
# ----------
|
54
|
+
|
55
|
+
"""
|
56
|
+
Extrait de https://metawal.wallonie.be/geonetwork/srv/api/records/86462606-4a21-49c8-ab9e-564ccba681b7/attachments/DescriptionLegende_WALOUS_OCS.pdf
|
57
|
+
|
58
|
+
1. Revêtement artificiel du sol: cette classe reprend tous les revêtements artificiels du sol
|
59
|
+
de nature peu ou pas perméable (ex béton, le bitume ou les pavés). Ceci comprend le réseau routier, les trottoirs, les terrasses, les parkings (les emplacements de parking semiperméables non végétalisés sont également dans cette catégorie) et les terrains ou pistes de sport en matériaux synthétiques.
|
60
|
+
2. Constructions artificielles hors sol : cette classe reprend tous les bâtiments et autres constructions s'élevant au-dessus du sol.
|
61
|
+
3. Réseau ferroviaire : cette classe reprend les rails et ballasts des chemins de fer encore en activité (les RaVEL entre dans la classe 1). Cette classe se différencie de la classe 1 par sa grande perméabilité.
|
62
|
+
4. Sols nus : cette classe inclut tout type de roche mère n'étant couverte par des végétaux supérieurs à aucun moment de l'année. Ces sols sont soit naturels (roches affleurantes, falaises, berges caillouteuses…), soit générés par l'activité humaine (extraction, sols compactés, coupe à blanc de l'année…)
|
63
|
+
5. Eaux de surface : cette classe comprend toutes les surfaces d'eau libre, naturelles ou artificielles. Ceci inclut donc à la fois les cours d'eau (rivières, fleuves et canaux) et les plans d'eau (mares, étangs, lacs, bassins de décantation, piscines extérieures).
|
64
|
+
6. Couvert herbacé en rotation : cette classe reprend les parcelles combinant un couvert herbacé une partie de l'année et un sol nu temporairement mis à nu. On y retrouve toutes les cultures annuelles, ainsi que les prairies temporaires succédant à une culture annuelle.
|
65
|
+
7. Couvert herbacé continu : cette classe reprend tous les sols recouverts par de la végétation herbacée tout au long de l'année. Cette végétation peut être d'origine naturelle (landes, mégaphorbiaies, tourbières, pelouses naturelles, végétation rudérale recolonisant une friche ou une ancienne coupe à blanc…), agricole (prés et prairies non labourés dans la saison) ou artificielle (jardin, terrains de sport, parcs…)
|
66
|
+
8. Arbres résineux : cette classe comprend tous les arbres de plus de 3 m (isolés, en haie ou en peuplement) du groupe des résineux (gymnosperme).
|
67
|
+
9. Arbres feuillus : cette classe comprend tous les arbres de plus de 3 m (isolés, en haie ou en peuplement) du groupe des feuillus (angiosperme).
|
68
|
+
80. Arbustes résineux : cette classe comprend tous les arbres et arbustes de moins de 3 m (isolés, en haie ou en peuplement) du groupe des résineux (gymnosperme).
|
69
|
+
90. Arbustes feuillus : cette classe comprend tous les arbres et arbuste de moins de 3 m (isolés, en haie ou en peuplement) du groupe des feuillus (angiosperme).
|
70
|
+
|
71
|
+
|
72
|
+
<paletteEntry color="#8a8a8a" value="1" alpha="255" label="Revêtement artificiel au sol"/>
|
73
|
+
<paletteEntry color="#dc0f0f" value="2" alpha="255" label="Constructions artificielles hors sol"/>
|
74
|
+
<paletteEntry color="#4e4e4e" value="3" alpha="255" label="Réseau ferroviaire"/>
|
75
|
+
<paletteEntry color="#d0d0d0" value="4" alpha="255" label="Sols nus"/>
|
76
|
+
<paletteEntry color="#2461f7" value="5" alpha="255" label="Eaux de surface"/>
|
77
|
+
<paletteEntry color="#ffff73" value="6" alpha="255" label="Couvert herbacé en rotation dans l'année (ex: culture annuelle)"/>
|
78
|
+
<paletteEntry color="#e9ffbe" value="7" alpha="255" label="Couvert herbacé toute l'année"/>
|
79
|
+
<paletteEntry color="#003200" value="8" alpha="255" label="Résineux (> 3m)"/>
|
80
|
+
<paletteEntry color="#007800" value="80" alpha="255" label="Résineux (≤ 3m)"/>
|
81
|
+
<paletteEntry color="#28c828" value="9" alpha="255" label="Feuillus (> 3m)"/>
|
82
|
+
<paletteEntry color="#b7e8b0" value="90" alpha="255" label="Feuillus (≤ 3m)"/>
|
83
|
+
<paletteEntry color="#e5ea3f" value="0" alpha="0" label="Pas de données"/>
|
84
|
+
"""
|
85
|
+
|
86
|
+
WALOUS_OCS = { "Revêtement artificiel au sol": 1.,
|
87
|
+
"Constructions artificielles hors sol": 2.,
|
88
|
+
"Réseau ferroviaire": 3.,
|
89
|
+
"Sols nus": 4.,
|
90
|
+
"Eaux de surface": 5.,
|
91
|
+
"Couvert herbacé en rotation dans l'année": 6.,
|
92
|
+
"Couvert herbacé toute l'année": 7.,
|
93
|
+
"Arbres résineux (>= 3m)": 8.,
|
94
|
+
"Arbres feuillus (>= 3m)": 9.,
|
95
|
+
"Arbustes résineux (< 3m)": 80.,
|
96
|
+
"Arbustes feuillus (< 3m)": 90.}
|
97
|
+
|
98
|
+
WALOUS_OCS_COLORMAP = {
|
99
|
+
0.: (229, 234, 63, 0), # #e5ea3f Pas de données
|
100
|
+
1.: (138, 138, 138, 255), # #8a8a8a Revêtement artificiel au sol
|
101
|
+
2.: (220, 15, 15, 255), # #dc0f0f Constructions artificielles hors sol
|
102
|
+
3.: (78, 78, 78, 255), # #4e4e4e Réseau ferroviaire
|
103
|
+
4.: (208, 208, 208, 255), # #d0d0d0 Sols nus
|
104
|
+
5.: (36, 97, 247, 255), # #2461f7 Eaux de surface
|
105
|
+
6.: (255, 255, 115, 255), # #ffff73 Couvert herbacé en rotation
|
106
|
+
7.: (233, 255, 190, 255), # #e9ffbe Couvert herbacé continu
|
107
|
+
8.: (0, 50, 0, 255), # #003200 Arbres résineux (> 3m)
|
108
|
+
9.: (40, 200, 40, 255), # #28c828 Arbres feuillus (> 3m)
|
109
|
+
80.: (0, 120, 0, 255), # #007800 Arbustes résineux (≤ 3m)
|
110
|
+
90.: (183, 232, 176, 255), # #b7e8b0 Arbustes feuillus (≤ 3m)
|
111
|
+
}
|
112
|
+
|
113
|
+
WALOUS_OCS2MANNING = {1.: 0.02, # Revêtement artificiel au sol
|
114
|
+
2.: 0.025, # Constructions artificielles hors sol
|
115
|
+
3.: 0.04, # Réseau ferroviaire
|
116
|
+
4.: 0.04, # Sols nus
|
117
|
+
5.: 0.033, # Eaux de surface
|
118
|
+
6.: 0.04, # Couvert herbacé en rotation dans l'année
|
119
|
+
7.: 0.03, # Couvert herbacé toute l'année
|
120
|
+
8.: 0.04, # Résineux (> 3m)
|
121
|
+
9.: 0.04, # Feuillus (> 3m)
|
122
|
+
80.: 0.03, # Résineux (≤ 3m)
|
123
|
+
90.: 0.03, # Feuillus (≤ 3m)
|
124
|
+
}
|
125
|
+
|
126
|
+
|
127
|
+
WALOUS_OCS2HYDROLOGY = {1.: 4., # Revêtement artificiel au sol
|
128
|
+
2.: 4., # Constructions artificielles hors sol
|
129
|
+
3.: 4., # Réseau ferroviaire
|
130
|
+
4.: 4., # Sols nus
|
131
|
+
5.: 5., # Eaux de surface
|
132
|
+
6.: 3., # Couvert herbacé en rotation dans l'année
|
133
|
+
7.: 2., # Couvert herbacé toute l'année
|
134
|
+
8.: 1., # Résineux (> 3m)
|
135
|
+
9.: 1., # Feuillus (> 3m)
|
136
|
+
80.: 3., # Arbustes résineux (< 3m)
|
137
|
+
90.: 3. # Arbustes feuillus (< 3m)
|
138
|
+
}
|
139
|
+
|
140
|
+
# WALOUS UTS
|
141
|
+
# ----------
|
142
|
+
|
26
143
|
WALOUS_UTS_MAJ_NIV1 = {'Production primaire': 1.,
|
27
144
|
'Production secondaire': 2.,
|
28
145
|
'Production tertiaire': 3.,
|
@@ -85,59 +202,37 @@ WALOUS_UTS_COLORMAP_MAJ_NIV2 = {11.: (153,230,0,255),
|
|
85
202
|
66.: (206,136,102,255),
|
86
203
|
70.: (255,255,190,255)}
|
87
204
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
"Eaux de surface": 8.,
|
96
|
-
"Revêtement artificiels au sol": 9.,
|
97
|
-
"Réseau ferroviaire": 10.,
|
98
|
-
"Constructions artificielles hors sol": 11.}
|
99
|
-
|
100
|
-
WALOUS_OCS_COLORMAP = {1.: (255,254,162,255), # Couvert herbacé en rotation dans l'année
|
101
|
-
2.: (253,254,194,255), # Couvert herbacé toute l'année
|
102
|
-
3.: (3,49,5,255), # Résineux (>3 m)
|
103
|
-
4.: (55,198,61,255), # Feuillus (> 3m)
|
104
|
-
5.: (18,119,23,255), # Résineux (<= 3m)
|
105
|
-
6.: (185,231,179,255), # Feuillus (<= 3m)
|
106
|
-
7.: (208,208,208,255), # Sols nus
|
107
|
-
8.: (45,101,242,255), # Eaux de surface
|
108
|
-
9.: (138,138,138,255), # Revêtement artificiels au sol
|
109
|
-
10.: (78,78,78,255), # Réseau ferroviaire
|
110
|
-
11.: (199,22,19,255), # Constructions artificielles hors sol
|
111
|
-
}
|
112
|
-
|
113
|
-
HYDROLOGY_LANDUSE_FR = {"forêt" : 1.,
|
114
|
-
"prairie" : 2.,
|
115
|
-
"culture" : 3.,
|
116
|
-
"pavés/urbain" : 4.,
|
117
|
-
"rivière" : 5.,
|
118
|
-
"plan d'eau" : 6.,
|
119
|
-
}
|
205
|
+
WALOUS_UTS2MANNING_MAJ_NIV1 = {1.: 0.04, # Production primaire
|
206
|
+
2.: 0.02, # Production secondaire
|
207
|
+
3.: 0.02, # Production tertiaire
|
208
|
+
4.: 0.03, # Réseaux de transport, Logistique et réseaux d'utilité publique
|
209
|
+
5.: 0.025,# Usage résidentiel
|
210
|
+
6.: 0.04, # Autres usages
|
211
|
+
7.: 0.05} # Zones naturelles
|
120
212
|
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
213
|
+
WALOUS_UTS2MANNING_MAJ_NIV2 = {11.: 0.04, # Agriculture
|
214
|
+
12.: 0.04, # Sylviculture
|
215
|
+
13.: 0.04, # Industries Extractives
|
216
|
+
14.: 0.04, # Aquaculture et pêche
|
217
|
+
20.: 0.03, # Production secondaire non définie
|
218
|
+
21.: 0.03, # Industrie de matières premières
|
219
|
+
22.: 0.03, # Industrie lourde
|
220
|
+
23.: 0.03, # Industrie légère
|
221
|
+
24.: 0.03, # Production d'énergie
|
222
|
+
31.: 0.02, # Service commerciaux
|
223
|
+
32.: 0.02, # Services financiers, spécialisés et d'information
|
224
|
+
33.: 0.02, # Services publics
|
225
|
+
34.: 0.02, # Services culturels, Services de loisirs et Services récréatifs
|
226
|
+
41.: 0.025, # Réseaux de transport
|
227
|
+
42.: 0.02, # Services Logistiques et d'entreposage
|
228
|
+
43.: 0.025, # Réseau d'utilité publique
|
229
|
+
51.: 0.025, # Usage résidentiel permanent
|
230
|
+
52.: 0.025, # Usage résidentiel avec d'autres usages compatibles
|
231
|
+
53.: 0.025, # Autres usages résidentiels
|
232
|
+
62.: 0.04, # Zones abandonnées
|
233
|
+
66.: 0.04, # Usage inconnu
|
234
|
+
70.: 0.05} # Zones naturelles
|
128
235
|
|
129
|
-
MAPPING_WALOUS_TO_HYDROLOGY = {1.: 2., # Couvert herbacé en rotation dans l'année
|
130
|
-
2.: 2., # Couvert herbacé toute l'année
|
131
|
-
3.: 1., # Résineux (>3 m)
|
132
|
-
4.: 1., # Feuillus (> 3m)
|
133
|
-
5.: 3., # Résineux (<= 3m)
|
134
|
-
6.: 3., # Feuillus (<= 3m)
|
135
|
-
7.: 3., # Sols nus
|
136
|
-
8.: 5., # Eaux de surface
|
137
|
-
9.: 4., # Revêtement artificiels au sol
|
138
|
-
10.: 4., # Constructions artificielles hors sol
|
139
|
-
11.: 4., # Réseau ferroviaire
|
140
|
-
}
|
141
236
|
|
142
237
|
def get_palette_walous_uts(which:Literal['MAJ_NIV1', 'MAJ_NIV2']) -> wolfpalette:
|
143
238
|
"""
|
@@ -177,7 +272,7 @@ def get_palette_walous_ocs() -> wolfpalette:
|
|
177
272
|
|
178
273
|
return locpal
|
179
274
|
|
180
|
-
def update_palette_walous_uts(which:Literal['
|
275
|
+
def update_palette_walous_uts(which:Literal['UTS_MAJ_NIV1', 'UTS_MAJ_NIV2'], pal:wolfpalette):
|
181
276
|
"""
|
182
277
|
Update the palette for WALOUS MAJ_NIV1
|
183
278
|
|
@@ -185,13 +280,13 @@ def update_palette_walous_uts(which:Literal['MAJ_NIV1', 'MAJ_NIV2'], pal:wolfpal
|
|
185
280
|
:return : updated palette
|
186
281
|
"""
|
187
282
|
|
188
|
-
if which
|
283
|
+
if which in ['UTS_MAJ_NIV1', 'MAJ_NIV1']:
|
189
284
|
for k, v in WALOUS_UTS_COLORMAP_MAJ_NIV1.items():
|
190
|
-
pal.set_values_colors(values = list(WALOUS_UTS_MAJ_NIV1.values()),
|
285
|
+
pal.set_values_colors(values = [val - 1e-6 for val in list(WALOUS_UTS_MAJ_NIV1.values())],
|
191
286
|
colors = list(WALOUS_UTS_COLORMAP_MAJ_NIV1.values()))
|
192
|
-
elif which
|
287
|
+
elif which in ['UTS_MAJ_NIV2', 'MAJ_NIV2']:
|
193
288
|
for k, v in WALOUS_UTS_COLORMAP_MAJ_NIV2.items():
|
194
|
-
pal.set_values_colors(values = list(WALOUS_UTS_MAJ_NIV2.values()),
|
289
|
+
pal.set_values_colors(values = [val - 1e-6 for val in list(WALOUS_UTS_MAJ_NIV2.values())],
|
195
290
|
colors = list(WALOUS_UTS_COLORMAP_MAJ_NIV2.values()))
|
196
291
|
|
197
292
|
pal.interval_cst = True
|
@@ -208,7 +303,7 @@ def update_palette_walous_ocs(pal:wolfpalette):
|
|
208
303
|
"""
|
209
304
|
|
210
305
|
for k, v in WALOUS_OCS_COLORMAP.items():
|
211
|
-
pal.set_values_colors(values = list(WALOUS_OCS_COLORMAP.keys()),
|
306
|
+
pal.set_values_colors(values = [val - 1e-6 for val in list(WALOUS_OCS_COLORMAP.keys())],
|
212
307
|
colors = list(WALOUS_OCS_COLORMAP.values()))
|
213
308
|
|
214
309
|
pal.interval_cst = True
|
@@ -217,71 +312,6 @@ def update_palette_walous_ocs(pal:wolfpalette):
|
|
217
312
|
return 0
|
218
313
|
|
219
314
|
|
220
|
-
WALOUS2MANNING_MAJ_NIV1 = {1.: 0.04, # Production primaire
|
221
|
-
2.: 0.02, # Production secondaire
|
222
|
-
3.: 0.02, # Production tertiaire
|
223
|
-
4.: 0.03, # Réseaux de transport, Logistique et réseaux d'utilité publique
|
224
|
-
5.: 0.025,# Usage résidentiel
|
225
|
-
6.: 0.04, # Autres usages
|
226
|
-
7.: 0.05} # Zones naturelles
|
227
|
-
|
228
|
-
WALOUS2MANNING_MAJ_NIV2 = {11.: 0.04, # Agriculture
|
229
|
-
12.: 0.04, # Sylviculture
|
230
|
-
13.: 0.04, # Industries Extractives
|
231
|
-
14.: 0.04, # Aquaculture et pêche
|
232
|
-
20.: 0.03, # Production secondaire non définie
|
233
|
-
21.: 0.03, # Industrie de matières premières
|
234
|
-
22.: 0.03, # Industrie lourde
|
235
|
-
23.: 0.03, # Industrie légère
|
236
|
-
24.: 0.03, # Production d'énergie
|
237
|
-
31.: 0.02, # Service commerciaux
|
238
|
-
32.: 0.02, # Services financiers, spécialisés et d'information
|
239
|
-
33.: 0.02, # Services publics
|
240
|
-
34.: 0.02, # Services culturels, Services de loisirs et Services récréatifs
|
241
|
-
41.: 0.025, # Réseaux de transport
|
242
|
-
42.: 0.02, # Services Logistiques et d'entreposage
|
243
|
-
43.: 0.025, # Réseau d'utilité publique
|
244
|
-
51.: 0.025, # Usage résidentiel permanent
|
245
|
-
52.: 0.025, # Usage résidentiel avec d'autres usages compatibles
|
246
|
-
53.: 0.025, # Autres usages résidentiels
|
247
|
-
62.: 0.04, # Zones abandonnées
|
248
|
-
66.: 0.04, # Usage inconnu
|
249
|
-
70.: 0.05} # Zones naturelles
|
250
|
-
|
251
|
-
WALOUSOCS2MANNING = {1.: 0.04, # Couvert herbacé en rotation dans l'année
|
252
|
-
2.: 0.04, # Couvert herbacé toute l'année
|
253
|
-
3.: 0.04, # Résineux (>3 m)
|
254
|
-
4.: 0.04, # Feuillus (> 3m)
|
255
|
-
5.: 0.04, # Résineux (<= 3m)
|
256
|
-
6.: 0.04, # Feuillus (<= 3m)
|
257
|
-
7.: 0.02, # Sols nus
|
258
|
-
8.: 0.033, # Eaux de surface
|
259
|
-
9.: 0.02, # Revêtement artificiels au sol
|
260
|
-
10.: 0.02, # Réseau ferroviaire
|
261
|
-
11.: 0.02} # Constructions artificielles hors sol
|
262
|
-
|
263
|
-
"""
|
264
|
-
Hydrology classification for Land Use in Wallonia:
|
265
|
-
1 = forêt
|
266
|
-
2 = prairie
|
267
|
-
3 = culture
|
268
|
-
4 = pavés/urbain
|
269
|
-
5 = rivière
|
270
|
-
6 = plan d'eau
|
271
|
-
"""
|
272
|
-
WALOUS2HYDROLOGY = {1.: 2, # Couvert herbacé en rotation dans l'année
|
273
|
-
2.: 2, # Couvert herbacé toute l'année
|
274
|
-
3.: 1, # Résineux (>3 m)
|
275
|
-
4.: 1, # Feillus (> 3m)
|
276
|
-
5.: 3, # Résineux (<= 3m)
|
277
|
-
6.: 3, # Feuillus (<= 3m)
|
278
|
-
7.: 4, # Sols nus
|
279
|
-
8.: 5, # Eaux de surface
|
280
|
-
9.: 4, # Revêtement artificiels au sol
|
281
|
-
10.: 4, # Réseau ferroviaire
|
282
|
-
11.: 4, # Constructions artificielles hors sol
|
283
|
-
}
|
284
|
-
|
285
315
|
class Walous_data():
|
286
316
|
"""
|
287
317
|
La donnée Walous est liée à l'utilisation des sols en Wallonie
|
@@ -297,18 +327,21 @@ class Walous_data():
|
|
297
327
|
def __init__(self,
|
298
328
|
dir_data:str = '',
|
299
329
|
fn:str = 'WAL_UTS__2018_L72',
|
330
|
+
extension:str = '.shp',
|
300
331
|
bounds:Union[list[float, float, float, float],list[list[float, float], list[float, float]]] = None) -> None:
|
301
332
|
"""
|
302
333
|
Constructor
|
303
334
|
|
304
335
|
:param dir_data : directory of the data
|
305
|
-
:param fn : filename without extension
|
336
|
+
:param fn : filename without extension
|
337
|
+
:param extension : extension of the file (.shp, .gpkg, ...)
|
306
338
|
:param bounds : Two ways to set spatial bounds -- [xmin, ymin, xmax, ymax] or [[xmin, xmax], [ymin, ymax]]
|
307
339
|
|
308
340
|
"""
|
309
341
|
|
310
342
|
self._dir = dir_data # directory of the data
|
311
343
|
self._fn = fn # filename without extension
|
344
|
+
self._extension = extension # extension of the file
|
312
345
|
self._gdf = None # geopandas dataframe
|
313
346
|
|
314
347
|
if bounds is not None:
|
@@ -328,7 +361,7 @@ class Walous_data():
|
|
328
361
|
if self._gdf is None or force:
|
329
362
|
assert self._dir!="" and self._fn != ''
|
330
363
|
|
331
|
-
filepath = (Path(self._dir)/ self._fn).with_suffix(
|
364
|
+
filepath = (Path(self._dir)/ self._fn).with_suffix(self._extension)
|
332
365
|
|
333
366
|
if filepath.exists():
|
334
367
|
if bounds is not None:
|
@@ -390,15 +423,15 @@ class Walous_data():
|
|
390
423
|
|
391
424
|
def rasterize(self,
|
392
425
|
bounds:Union[list[float, float, float, float],list[list[float, float], list[float, float]]],
|
393
|
-
layer:Literal['
|
426
|
+
layer:Literal['UTS_MAJ_NIV1','UTS_MAJ_NIV2'] = 'UTS_MAJ_NIV1',
|
394
427
|
fn_out:str = 'out.tif',
|
395
428
|
pixel_size:float = 0.5,
|
396
429
|
NoData_value:float = -99999.,
|
397
|
-
num_type = gdal.GDT_Float32
|
430
|
+
num_type = gdal.GDT_Float32,
|
398
431
|
):
|
399
432
|
|
400
433
|
"""
|
401
|
-
Rasterization of polygon data to tif
|
434
|
+
Rasterization of polygon data to tif.
|
402
435
|
|
403
436
|
:param bounds : [xmin, ymin, xmax, ymax] or [[xmin, xmax], [ymin, ymax]]
|
404
437
|
:param layer : layer to rasterize
|
@@ -408,6 +441,8 @@ class Walous_data():
|
|
408
441
|
:param num_type : type of the number
|
409
442
|
"""
|
410
443
|
|
444
|
+
layer = layer.upper().replace('UTS_', '')
|
445
|
+
|
411
446
|
if bounds is None:
|
412
447
|
logging.error('Bounds must be set')
|
413
448
|
return None
|
@@ -438,10 +473,10 @@ class Walous_data():
|
|
438
473
|
try:
|
439
474
|
|
440
475
|
# Add a new column for mapping based on the desired layer
|
441
|
-
self._gdf['Mapping'] = np.float32(self._gdf[layer])
|
442
|
-
|
443
476
|
if layer == 'MAJ_NIV2':
|
444
|
-
self._gdf['Mapping'] = np.float32(self._gdf[
|
477
|
+
self._gdf['Mapping'] = np.float32(self._gdf[layer].replace('_', ''))
|
478
|
+
else:
|
479
|
+
self._gdf['Mapping'] = np.float32(self._gdf[layer])
|
445
480
|
|
446
481
|
source_ds:ogr.DataSource
|
447
482
|
source_layer:ogr.Layer
|
@@ -485,7 +520,7 @@ class Walous_data():
|
|
485
520
|
class DlgMapWalous2Manning(wx.Dialog):
|
486
521
|
""" Modal dialog for mapping WALOUS value to another ones """
|
487
522
|
|
488
|
-
def __init__(self, parent, title:str = _("Mapping WALOUS value to ..."), which:
|
523
|
+
def __init__(self, parent, title:str = _("Mapping WALOUS value to ..."), which:Literal['UTS_MAJ_NIV1', 'UTS_MAJ_NIV2', 'OCS_MANNING', 'OCS_HYDROLOGY'] = 'UTS_MAJ_NIV1'):
|
489
524
|
|
490
525
|
super(DlgMapWalous2Manning, self).__init__(parent, title=title, size=(450, 400))
|
491
526
|
|
@@ -495,7 +530,7 @@ class DlgMapWalous2Manning(wx.Dialog):
|
|
495
530
|
|
496
531
|
self._table = wx.grid.Grid(panel)
|
497
532
|
|
498
|
-
if which == '
|
533
|
+
if which == 'UTS_MAJ_NIV1':
|
499
534
|
self._table.CreateGrid(len(WALOUS_UTS_MAJ_NIV1), 3)
|
500
535
|
self._table.SetColLabelValue(0, _("Name"))
|
501
536
|
self._table.SetColLabelValue(1, _("Value - UTS"))
|
@@ -505,11 +540,11 @@ class DlgMapWalous2Manning(wx.Dialog):
|
|
505
540
|
for i, (k, v) in enumerate(WALOUS_UTS_MAJ_NIV1.items()):
|
506
541
|
self._table.SetCellValue(i, 0, str(k))
|
507
542
|
self._table.SetCellValue(i, 1, str(v))
|
508
|
-
self._table.SetCellValue(i, 2, str(
|
543
|
+
self._table.SetCellValue(i, 2, str(WALOUS_UTS2MANNING_MAJ_NIV1[v]))
|
509
544
|
self._table.SetCellAlignment(i, 1, wx.ALIGN_CENTER, wx.ALIGN_CENTER)
|
510
545
|
self._table.SetCellAlignment(i, 2, wx.ALIGN_CENTER, wx.ALIGN_CENTER)
|
511
546
|
|
512
|
-
elif which == '
|
547
|
+
elif which == 'UTS_MAJ_NIV2':
|
513
548
|
self._table.CreateGrid(len(WALOUS_UTS_MAJ_NIV2), 3)
|
514
549
|
self._table.SetColLabelValue(0, _("Name"))
|
515
550
|
self._table.SetColLabelValue(1, _("Value - UTS"))
|
@@ -519,7 +554,33 @@ class DlgMapWalous2Manning(wx.Dialog):
|
|
519
554
|
for i, (k, v) in enumerate(WALOUS_UTS_MAJ_NIV2.items()):
|
520
555
|
self._table.SetCellValue(i, 0, str(k))
|
521
556
|
self._table.SetCellValue(i, 1, str(v))
|
522
|
-
self._table.SetCellValue(i, 2, str(
|
557
|
+
self._table.SetCellValue(i, 2, str(WALOUS_UTS2MANNING_MAJ_NIV2[v]))
|
558
|
+
self._table.SetCellAlignment(i, 1, wx.ALIGN_CENTER, wx.ALIGN_CENTER)
|
559
|
+
self._table.SetCellAlignment(i, 2, wx.ALIGN_CENTER, wx.ALIGN_CENTER)
|
560
|
+
|
561
|
+
elif which == 'OCS_MANNING':
|
562
|
+
self._table.CreateGrid(len(WALOUS_OCS2MANNING), 3)
|
563
|
+
self._table.SetColLabelValue(0, _("Name"))
|
564
|
+
self._table.SetColLabelValue(1, _("Value - OCS"))
|
565
|
+
self._table.SetColLabelValue(2, _("Manning 'n'"))
|
566
|
+
self._table.HideRowLabels()
|
567
|
+
for i, (k, v) in enumerate(WALOUS_OCS.items()):
|
568
|
+
self._table.SetCellValue(i, 0, str(k))
|
569
|
+
self._table.SetCellValue(i, 1, str(v))
|
570
|
+
self._table.SetCellValue(i, 2, str(WALOUS_OCS2MANNING[v]))
|
571
|
+
self._table.SetCellAlignment(i, 1, wx.ALIGN_CENTER, wx.ALIGN_CENTER)
|
572
|
+
self._table.SetCellAlignment(i, 2, wx.ALIGN_CENTER, wx.ALIGN_CENTER)
|
573
|
+
|
574
|
+
elif which == 'OCS_HYDROLOGY':
|
575
|
+
self._table.CreateGrid(len(WALOUS_OCS2HYDROLOGY), 3)
|
576
|
+
self._table.SetColLabelValue(0, _("Name"))
|
577
|
+
self._table.SetColLabelValue(1, _("Value - OCS"))
|
578
|
+
self._table.SetColLabelValue(2, _("LandUse - Hydrology"))
|
579
|
+
self._table.HideRowLabels()
|
580
|
+
for i, (k, v) in enumerate(WALOUS_OCS2HYDROLOGY.items()):
|
581
|
+
self._table.SetCellValue(i, 0, str(k))
|
582
|
+
self._table.SetCellValue(i, 1, str(v))
|
583
|
+
self._table.SetCellValue(i, 2, str(WALOUS_OCS2HYDROLOGY[v]))
|
523
584
|
self._table.SetCellAlignment(i, 1, wx.ALIGN_CENTER, wx.ALIGN_CENTER)
|
524
585
|
self._table.SetCellAlignment(i, 2, wx.ALIGN_CENTER, wx.ALIGN_CENTER)
|
525
586
|
|
@@ -575,11 +636,11 @@ class DlgMapWalousOCS2Manning(DlgMapWalous2Manning):
|
|
575
636
|
|
576
637
|
def __init__(self, parent, title:str = _("Mapping WALOUS value to ...")):
|
577
638
|
|
578
|
-
super(DlgMapWalousOCS2Manning, self).__init__(parent, title= title)
|
639
|
+
super(DlgMapWalousOCS2Manning, self).__init__(parent, title= title, which='OCS_MANNING')
|
579
640
|
|
580
641
|
self._table.SetColLabelValue(2, _("Land Use - OCS"))
|
581
642
|
|
582
|
-
for i, (k, v) in enumerate(
|
643
|
+
for i, (k, v) in enumerate(WALOUS_OCS2MANNING.items()):
|
583
644
|
self._table.SetColLabelValue(1, _("Value - OCS"))
|
584
645
|
self._table.SetCellValue(i, 2, str(v))
|
585
646
|
|
@@ -593,11 +654,11 @@ class DlgMapWalous2Hydrology(DlgMapWalous2Manning):
|
|
593
654
|
|
594
655
|
def __init__(self, parent, title:str = _("Mapping WALOUS value to ...")):
|
595
656
|
|
596
|
-
super(DlgMapWalous2Hydrology, self).__init__(parent, title= title)
|
657
|
+
super(DlgMapWalous2Hydrology, self).__init__(parent, title= title, which='OCS_HYDROLOGY')
|
597
658
|
|
598
659
|
self._table.SetColLabelValue(2, _("Land Use - OCS"))
|
599
660
|
|
600
|
-
for i, (k, v) in enumerate(
|
661
|
+
for i, (k, v) in enumerate(WALOUS_OCS2HYDROLOGY.items()):
|
601
662
|
self._table.SetColLabelValue(1, _("Value - OCS"))
|
602
663
|
self._table.SetCellValue(i, 2, str(v))
|
603
664
|
|
@@ -2500,7 +2500,15 @@ class UI_Manager_2D_GPU():
|
|
2500
2500
|
|
2501
2501
|
pgbar = wx.ProgressDialog(_('Creating simulations ...'), _('Please wait ...'), maximum=len(hydro), parent=self._frame, style = wx.PD_APP_MODAL | wx.PD_AUTO_HIDE)
|
2502
2502
|
|
2503
|
-
|
2503
|
+
try:
|
2504
|
+
allsims = self._parent.create_simulation(Path(path), hydro, destroy_if_exists, preserve_ic, callback=pgbar.Update)
|
2505
|
+
except Exception as e:
|
2506
|
+
logging.error(_('Error while creating simulations !'))
|
2507
|
+
logging.error(str(e))
|
2508
|
+
dlg = wx.MessageDialog(None, _('Error while creating simulations !\n\n{}'.format(str(e))), _('Error'), wx.OK | wx.ICON_ERROR)
|
2509
|
+
dlg.ShowModal()
|
2510
|
+
dlg.Destroy()
|
2511
|
+
allsims = None
|
2504
2512
|
|
2505
2513
|
pgbar.Destroy()
|
2506
2514
|
|