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/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
- WALOUS_OCS = { "Couvert herbacé en rotation dans l'année": 1.,
89
- "Couvert herbacé toute l'année": 2.,
90
- "Résineux (>3 m)": 3.,
91
- "Feuillus (> 3m)": 4.,
92
- "Résineux (<= 3m)": 5.,
93
- "Feuillus (<= 3m)": 6.,
94
- "Sols nus": 7.,
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
- HYDROLOGY_LANDUSE_EN = {"forest" : 1.,
122
- "meadow" : 2.,
123
- "crop" : 3.,
124
- "paved/urban" : 4.,
125
- "river" : 5.,
126
- "water body" : 6.,
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['MAJ_NIV1', 'MAJ_NIV2'], pal:wolfpalette):
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 == 'MAJ_NIV1':
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 == 'MAJ_NIV2':
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 (shp)
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('.shp')
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['MAJ_NIV1','MAJ_NIV2'] ='MAJ_NIV1',
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['Mapping'].replace('_', ''))
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:str = 'MAJ_NIV1'):
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 == 'MAJ_NIV1':
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(WALOUS2MANNING_MAJ_NIV1[v]))
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 == 'MAJ_NIV2':
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(WALOUS2MANNING_MAJ_NIV2[v]))
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(WALOUSOCS2MANNING.items()):
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(WALOUS2HYDROLOGY.items()):
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
- allsims = self._parent.create_simulation(Path(path), hydro, destroy_if_exists, preserve_ic, callback=pgbar.Update)
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