wolfhece 2.2.1__py3-none-any.whl → 2.2.3__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.
File without changes
wolfhece/lifewatch.py ADDED
@@ -0,0 +1,88 @@
1
+ from enum import Enum
2
+ from PIL import Image
3
+
4
+ class LifeWatch_Legend(Enum):
5
+ """
6
+ https://www.mdpi.com/2306-5729/8/1/13
7
+
8
+ Map Class Map Code Related EAGLE Code Percentage of Land Area [%] Based on 2018 Product
9
+ Water 10 LCC-3 0.73
10
+ Natural Material Surfaces with less than 10% vegetation 15 LCC-1_2 0.32
11
+ Artificially sealed ground surface 20 LCC-1_1_1_3 5.75
12
+ Building, specific structures and facilities 21 LCC-1_1_1_1 || LCC-1_1_1_2 1.99
13
+ Herbaceous in rotation during the year (e.g., crops) 30 LCC-2_2 23.94
14
+ Grassland with intensive management 35 LCC-2_2 27.57
15
+ Grassland and scrub of biological interest 40 LCC-2_2 1.82
16
+ Inundated grassland and scrub of biological interest 45 LCC-2_2 & LCH-4_4_2 0.22
17
+ Vegetation of recently disturbed area (e.g., clear cut) 48 LCC-2_2 & LCH-3_8 2.64
18
+ Coniferous trees (≥3 m) 50 LCC-2_1_1 & LCH-3_1_1 11.24
19
+ Small coniferous trees (<3 m) 51 LCC-2_1_2 & LCH-3_1_1 0.40
20
+ Broadleaved trees (≥3 m) 55 LCC-2_1_1 & LCH-3_1_2 21.63
21
+ Small broadleaved trees (<3 m) and shrubs 56 LCC-2_1_2 & LCH-3_1_2 1.75
22
+
23
+ Color Table (RGB with 256 entries) from tiff file
24
+ 10: 10,10,210,255
25
+ 11: 254,254,254,255
26
+ 15: 215,215,215,255
27
+ 20: 20,20,20,255
28
+ 21: 210,0,0,255
29
+ 30: 230,230,130,255
30
+ 35: 235,170,0,255
31
+ 40: 240,40,240,255
32
+ 45: 145,245,245,255
33
+ 46: 246,146,246,255
34
+ 48: 148,112,0,255
35
+ 50: 50,150,50,255
36
+ 51: 0,151,151,255
37
+ 55: 55,255,0,255
38
+ 56: 156,255,156,255
39
+ """
40
+ WATER = (10, (10, 210, 255))
41
+ NATURAL_MATERIAL_SURFACES = (15, (215, 215, 215, 255))
42
+ ARTIFICIALLY_SEALED_GROUND_SURFACE = (20, (20, 20, 20, 255))
43
+ BUILDING = (21, (210, 0, 0, 255))
44
+ HERBACEOUS_ROTATION = (30, (230, 230, 130, 255))
45
+ GRASSLAND_INTENSIVE_MANAGEMENT = (35, (235, 170, 0, 255))
46
+ GRASSLAND_SCRUB_BIOLOGICAL_INTEREST = (40, (240, 40, 240, 255))
47
+ INUNDATED_GRASSLAND_SCRUB_BIOLOGICAL_INTEREST = (45, (145, 245, 245, 255))
48
+ VEGETATION_RECENTLY_DISTURBED_AREA = (48, (148, 112, 0, 255))
49
+ CONIFEROUS_TREES = (50, (50, 150, 50, 255))
50
+ SMALL_CONIFEROUS_TREES = (51, (0, 151, 151, 255))
51
+ BROADLEAVED_TREES = (55, (55, 255, 0, 255))
52
+ SMALL_BROADLEAVED_TREES_SHRUBS = (56, (156, 255, 156, 255))
53
+
54
+ NODATA11 = (11, (254,254,254,255)) # Not used
55
+ NODATA46 = (46, (246,146,246,255)) # Not used
56
+ NODATA100 = (100, (0, 0, 0, 255)) # Outside Belgium/Wallonia
57
+
58
+ if __name__ == "__main__":
59
+ import numpy as np
60
+ n = 4
61
+
62
+ DIR = r'E:\MODREC-Vesdre\vesdre-data\LifeWatch'
63
+
64
+ # Tif file is very large, so we need to use PIL to open it
65
+ Image.MAX_IMAGE_PIXELS = 15885900000
66
+ img = Image.open(DIR + r'\lifewatch_LC2018_vx19_2mLB08cog.tif',)
67
+ img = np.asarray(img)
68
+
69
+ ij11 = np.where(img == 11)
70
+ ij46 = np.where(img == 46)
71
+
72
+ print(ij11[0].shape) # must be 0
73
+ print(ij11[1].shape) # must be 0
74
+
75
+ img = img[::n,:-img.shape[1]//2:n]
76
+ print(np.unique(img))
77
+
78
+ img = Image.open(DIR +r'\lifewatch_LC2022_vx20_2mLB08cog.tif',)
79
+ img = np.asarray(img)
80
+
81
+ ij11 = np.where(img == 11) # must be 0
82
+ ij46 = np.where(img == 46) # must be 0
83
+
84
+ print(ij11[0].shape)
85
+ print(ij11[1].shape)
86
+
87
+ img = img[::n,:-img.shape[1]//2:n]
88
+ print(np.unique(img))
@@ -2341,8 +2341,8 @@ class UI_Manager_2D_GPU():
2341
2341
  cursim._save_json()
2342
2342
  except Exception as e:
2343
2343
  self._wp[cursim] = None
2344
- logging.debug(_('Error while saving parameters for simulation {}'.format(cursim.path.name)))
2345
- logging.debug(str(e))
2344
+ logging.error(_('Error while saving parameters for simulation {}'.format(cursim.path.name)))
2345
+ logging.error(str(e))
2346
2346
 
2347
2347
  def _callbackwp_destroy(self):
2348
2348
  """ Callback for wolfparam """
@@ -2355,8 +2355,8 @@ class UI_Manager_2D_GPU():
2355
2355
  cursim._save_json()
2356
2356
  except Exception as e:
2357
2357
  self._wp[cursim] = None
2358
- logging.debug(_('Error while saving parameters for simulation {}'.format(cursim.path.name)))
2359
- logging.debug(str(e))
2358
+ logging.error(_('Error while saving parameters for simulation {}'.format(cursim.path.name)))
2359
+ logging.error(str(e))
2360
2360
 
2361
2361
  def OnActivateTreeElem(self, e):
2362
2362
  """
wolfhece/wolf_array.py CHANGED
@@ -10,13 +10,15 @@ copying or distribution of this file, via any medium, is strictly prohibited.
10
10
 
11
11
  import os
12
12
  import sys
13
+
14
+ import numpy as np
15
+ import numpy.ma as ma
16
+
13
17
  from typing import Union, Literal
14
18
  from matplotlib.axis import Axis
15
19
  from matplotlib.figure import Figure
16
20
  import matplotlib.pyplot as plt
17
21
  from matplotlib.colors import Colormap
18
- import numpy as np
19
- import numpy.ma as ma
20
22
  import math as m
21
23
  import logging
22
24
  import json
@@ -40,7 +42,6 @@ import re
40
42
  import wx
41
43
  from scipy.interpolate import interp2d, griddata
42
44
  from scipy.ndimage import laplace, label, sum_labels
43
- import pygltflib
44
45
  from shapely.geometry import Point, LineString, MultiLineString, Polygon, MultiPolygon, MultiPoint
45
46
  from shapely.ops import linemerge, substring, polygonize_full
46
47
  from shapely import contains, contains_properly, contains_xy, touches, prepare, destroy_prepared, is_prepared
@@ -56,12 +57,6 @@ except ImportError as e:
56
57
  print(e)
57
58
  raise Exception(_('Error importing modules'))
58
59
 
59
- try:
60
- from osgeo import gdal
61
- except ImportError as e:
62
- print(e)
63
- raise Exception(_('Error importing GDAL library'))
64
-
65
60
  try:
66
61
  from .Coordinates_operations import reproject_and_resample_raster
67
62
  except ImportError as e:
@@ -132,6 +127,13 @@ VERSION_RGB = 3
132
127
 
133
128
  from numba import jit
134
129
 
130
+ try:
131
+ from osgeo import gdal, osr
132
+ gdal.UseExceptions()
133
+ except ImportError as e:
134
+ print(e)
135
+ raise Exception(_('Error importing GDAL library'))
136
+
135
137
  @jit(nopython=True)
136
138
  def custom_gradient(array: np.ndarray):
137
139
  """ Calculate the gradient manually """
@@ -878,7 +880,7 @@ class header_wolf():
878
880
  locpath = Path(filename)
879
881
 
880
882
  if filename.endswith('.tif') or filename.endswith('.tiff') :
881
- from osgeo import gdal
883
+ # from osgeo import gdal
882
884
 
883
885
  raster:gdal.Dataset
884
886
  raster = gdal.Open(filename)
@@ -932,7 +934,7 @@ class header_wolf():
932
934
 
933
935
  elif filename.endswith('.vrt'):
934
936
  # Virtual raster
935
- from osgeo import gdal
937
+ # from osgeo import gdal
936
938
 
937
939
  raster:gdal.Dataset
938
940
  raster = gdal.Open(filename)
@@ -4059,7 +4061,7 @@ class SelectionData():
4059
4061
  selunique, counts = np.unique(self.myselection, return_counts=True, axis=0)
4060
4062
 
4061
4063
  # les éléments énumérés plus d'une fois doivent être enlevés
4062
- # on trie par ordre décroissant
4064
+ # on trie par ordre décroissant
4063
4065
  locsort = sorted(zip(counts.tolist(), selunique.tolist()), reverse=True)
4064
4066
  counts = [x[0] for x in locsort]
4065
4067
  sel = [tuple(x[1]) for x in locsort]
@@ -5492,6 +5494,11 @@ class WolfArray(Element_To_Draw, header_wolf):
5492
5494
 
5493
5495
  return self.alpha
5494
5496
 
5497
+ # def find_minmax(self, update=False):
5498
+
5499
+ # if update:
5500
+ # [self.xmin, self.xmax], [self.ymin, self.ymax] = self.get_bounds()
5501
+
5495
5502
  @property
5496
5503
  def memory_usage(self):
5497
5504
  """
@@ -6099,7 +6106,7 @@ class WolfArray(Element_To_Draw, header_wolf):
6099
6106
  :param extent: suffix to add to the filename before the extension '.tif' (only if outdir is provided)
6100
6107
  :param EPSG: EPSG code, by default 31370 (Lambert 72)
6101
6108
  """
6102
- from osgeo import gdal, osr, gdalconst
6109
+ # from osgeo import gdal, osr, gdalconst
6103
6110
 
6104
6111
  outdir = str(outdir)
6105
6112
  extent = str(extent)
@@ -6378,7 +6385,7 @@ class WolfArray(Element_To_Draw, header_wolf):
6378
6385
  :param which: band to import
6379
6386
  :param crop: crop the data - [xmin, xmax, ymin, ymax]
6380
6387
  """
6381
- from osgeo import gdal, osr, gdalconst
6388
+ # from osgeo import gdal, osr, gdalconst
6382
6389
 
6383
6390
  if fn !='':
6384
6391
  pass
@@ -7831,9 +7838,9 @@ class WolfArray(Element_To_Draw, header_wolf):
7831
7838
 
7832
7839
  if type(other) == float:
7833
7840
  if other != 0.:
7834
- newArray.array = np.ma.masked_array(self.array + other, self.array.mask)
7841
+ newArray.array = np.ma.masked_array(self.array + other, self.array.mask, dtype=self.array.dtype)
7835
7842
  else:
7836
- newArray.array = np.ma.masked_array(self.array + other.array, self.array.mask)
7843
+ newArray.array = np.ma.masked_array(self.array + other.array, self.array.mask, dtype=self.array.dtype)
7837
7844
  newArray.count()
7838
7845
 
7839
7846
  assert newArray.array.dtype == self.array.dtype, _('Bad dtype')
@@ -7860,9 +7867,9 @@ class WolfArray(Element_To_Draw, header_wolf):
7860
7867
 
7861
7868
  if type(other) == float:
7862
7869
  if other != 0.:
7863
- newArray.array = np.ma.masked_array(self.array * other, self.array.mask)
7870
+ newArray.array = np.ma.masked_array(self.array * other, self.array.mask, dtype=self.array.dtype)
7864
7871
  else:
7865
- newArray.array = np.ma.masked_array(self.array * other.array, self.array.mask)
7872
+ newArray.array = np.ma.masked_array(self.array * other.array, self.array.mask, dtype=self.array.dtype)
7866
7873
  newArray.count()
7867
7874
 
7868
7875
  assert newArray.array.dtype == self.array.dtype, _('Bad dtype')
@@ -7889,9 +7896,9 @@ class WolfArray(Element_To_Draw, header_wolf):
7889
7896
 
7890
7897
  if type(other) == float:
7891
7898
  if other != 0.:
7892
- newArray.array = np.ma.masked_array(self.array - other, self.array.mask)
7899
+ newArray.array = np.ma.masked_array(self.array - other, self.array.mask, dtype=self.array.dtype)
7893
7900
  else:
7894
- newArray.array = np.ma.masked_array(self.array - other.array, self.array.mask)
7901
+ newArray.array = np.ma.masked_array(self.array - other.array, self.array.mask, dtype=self.array.dtype)
7895
7902
  newArray.count()
7896
7903
 
7897
7904
  assert newArray.array.dtype == self.array.dtype, _('Bad dtype')
@@ -7916,7 +7923,7 @@ class WolfArray(Element_To_Draw, header_wolf):
7916
7923
  newArray.origz = self.origz
7917
7924
  newArray.translz = self.translz
7918
7925
 
7919
- newArray.array = np.ma.masked_array(self.array ** other, self.array.mask)
7926
+ newArray.array = np.ma.masked_array(self.array ** other, self.array.mask, dtype=self.array.dtype)
7920
7927
  newArray.count()
7921
7928
 
7922
7929
  assert newArray.array.dtype == self.array.dtype, _('Bad dtype')
@@ -7943,9 +7950,9 @@ class WolfArray(Element_To_Draw, header_wolf):
7943
7950
 
7944
7951
  if type(other) == float:
7945
7952
  if other != 0.:
7946
- newArray.array = np.ma.masked_array(self.array / other, self.array.mask)
7953
+ newArray.array = np.ma.masked_array(self.array / other, self.array.mask, dtype=self.array.dtype)
7947
7954
  else:
7948
- newArray.array = np.ma.masked_array(np.where(other == 0., 0., self.array / other.array), self.array.mask)
7955
+ newArray.array = np.ma.masked_array(np.where(other == 0., 0., self.array / other.array), self.array.mask, dtype=self.array.dtype)
7949
7956
  newArray.count()
7950
7957
 
7951
7958
  assert newArray.array.dtype == self.array.dtype, _('Bad dtype')
@@ -9287,9 +9294,20 @@ class WolfArray(Element_To_Draw, header_wolf):
9287
9294
  elif self.wolftype in [WOLF_ARRAY_FULL_INTEGER16, WOLF_ARRAY_FULL_INTEGER16_2]:
9288
9295
  value=np.int16(value)
9289
9296
  elif self.wolftype in [WOLF_ARRAY_FULL_INTEGER8]:
9290
- value=np.int8(value)
9297
+ try:
9298
+ value = np.int8(value)
9299
+ except:
9300
+ value = 0
9301
+ logging.warning(_('Value too high for int8 conversion'))
9302
+ logging.warning(_('Value set to 0'))
9303
+
9291
9304
  elif self.wolftype in [WOLF_ARRAY_FULL_UINTEGER8]:
9292
- value=np.uint8(value)
9305
+ try:
9306
+ value = np.uint8(value)
9307
+ except:
9308
+ value = 0
9309
+ logging.warning(_('Value too high for int8 conversion'))
9310
+ logging.warning(_('Value set to 0'))
9293
9311
  except:
9294
9312
  logging.error(_('Type not supported : {} - {}'.format(value, type(value))))
9295
9313
  logging.warning(_('Masking operation compromised'))
@@ -9688,6 +9706,13 @@ class WolfArray(Element_To_Draw, header_wolf):
9688
9706
  for cur in self.viewers3d:
9689
9707
  cur.update_palette(self.idx, self.mypal.get_colors_f32().flatten(), self.mypal.values.astype(np.float32))
9690
9708
 
9709
+ def find_minmax(self, update=False):
9710
+ """ Find the min and max values of the array
9711
+
9712
+ ATTENTION : Just to conform to the interface of the Element_To_Draw class
9713
+ """
9714
+ if update:
9715
+ [self.xmin, self.xmax], [self.ymin, self.ymax] = self.get_bounds()
9691
9716
 
9692
9717
  def plot(self, sx:float=None, sy:float=None, xmin:float=None, ymin:float=None, xmax:float=None, ymax:float=None, size:float=None):
9693
9718
  """
@@ -9709,17 +9734,17 @@ class WolfArray(Element_To_Draw, header_wolf):
9709
9734
  if self.plotted and sx is None:
9710
9735
  sx = self.sx
9711
9736
  sy = self.sy
9712
- xmin = self.xmin
9713
- xmax = self.xmax
9714
- ymin = self.ymin
9715
- ymax = self.ymax
9737
+ xmin = self._xmin_plot
9738
+ xmax = self._xmax_plot
9739
+ ymin = self._ymin_plot
9740
+ ymax = self._ymax_plot
9716
9741
  else:
9717
9742
  self.sx = sx
9718
9743
  self.sy = sy
9719
- self.xmin = xmin
9720
- self.xmax = xmax
9721
- self.ymin = ymin
9722
- self.ymax = ymax
9744
+ self._xmin_plot = xmin
9745
+ self._xmax_plot = xmax
9746
+ self._ymin_plot = ymin
9747
+ self._ymax_plot = ymax
9723
9748
 
9724
9749
  nbpix = min(sx * self.dx, sy * self.dy)
9725
9750
  if nbpix >= 1.:
wolfhece/wolf_texture.py CHANGED
@@ -26,7 +26,7 @@ import math
26
26
  import numpy as np
27
27
 
28
28
  from .PyTranslate import _
29
- from .PyWMS import getIGNFrance, getWalonmap, getVlaanderen
29
+ from .PyWMS import getIGNFrance, getWalonmap, getVlaanderen, getLifeWatch
30
30
  from .textpillow import Font_Priority, Text_Image,Text_Infos
31
31
  from .drawing_obj import Element_To_Draw
32
32
 
@@ -253,7 +253,8 @@ class imagetexture(Element_To_Draw):
253
253
  def __init__(self, which: str, label: str, cat: str, subc: str, mapviewer,
254
254
  xmin:float, xmax:float, ymin:float, ymax:float,
255
255
  width:int = 1000, height:int = 1000,
256
- France:bool = False, epsg='31370', Vlaanderen:bool = False) -> None:
256
+ France:bool = False, epsg='31370', Vlaanderen:bool = False,
257
+ LifeWatch:bool = False) -> None:
257
258
 
258
259
  super().__init__(label+cat+subc, plotted=False, mapviewer=mapviewer, need_for_wx=False)
259
260
 
@@ -264,6 +265,7 @@ class imagetexture(Element_To_Draw):
264
265
 
265
266
  self.France = France
266
267
  self.Vlaanderen = Vlaanderen
268
+ self.LifeWatch = LifeWatch
267
269
 
268
270
  self.epsg = epsg
269
271
 
@@ -306,6 +308,11 @@ class imagetexture(Element_To_Draw):
306
308
  mybytes = getVlaanderen(self.category,
307
309
  self.xmin, self.ymin, self.xmax, self.ymax,
308
310
  self.width, self.height, False)
311
+
312
+ elif self.LifeWatch:
313
+ mybytes = getLifeWatch(self.category + '_' + self.subcategory,
314
+ self.xmin, self.ymin, self.xmax, self.ymax,
315
+ self.width, self.height, False)
309
316
  else:
310
317
  mybytes = getWalonmap(self.category + '/' + self.subcategory,
311
318
  self.xmin, self.ymin, self.xmax, self.ymax,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wolfhece
3
- Version: 2.2.1
3
+ Version: 2.2.3
4
4
  Author-email: Pierre Archambeau <pierre.archambeau@uliege.be>
5
5
  Project-URL: Homepage, https://uee.uliege.be/hece
6
6
  Project-URL: Issues, https://uee.uliege.be/hece
@@ -69,6 +69,8 @@ Requires-Dist: plyfile
69
69
  Requires-Dist: tabulate
70
70
  Requires-Dist: ipympl
71
71
  Requires-Dist: contextily
72
+ Requires-Dist: pefile
73
+ Requires-Dist: wolfpydike
72
74
 
73
75
  Ce paquet contient l'interface graphique Python du logiciel WOLF (HECE - ULiège) de même que plusieurs outils de traitements topographique, hydraulique et hydrologique.
74
76
 
@@ -5,19 +5,20 @@ wolfhece/GraphProfile.py,sha256=OCgJo0YFFBI6H1z-5egJsOOoWF_iziiza0-bbPejNMc,6965
5
5
  wolfhece/Lidar2002.py,sha256=bX-nIzdpjD7rOfEgJpTeaW6rIdAXwDp_z4YTM9CgANY,6068
6
6
  wolfhece/ManageParams.py,sha256=EeuUI5Vvh9ixCvYf8YShMC1s1Yacc7OxOCN7q81gqiQ,517
7
7
  wolfhece/Model1D.py,sha256=SI4oNF_J3MdjiWZoizS8kuRXLMVyymX9dYfYJNVCQVI,476989
8
+ wolfhece/PandasGrid.py,sha256=YIleVkUkoP2MjtQBZ9Xgwk61zbgMj4Pmjj-clVTfPRs,2353
8
9
  wolfhece/PyConfig.py,sha256=Y0wtSIFpAMYa7IByh7hbW-WEOVjNsQEduq7vhIYdZQw,16716
9
10
  wolfhece/PyCrosssections.py,sha256=igU_ELrg5VrHU6RNbF5tHxPyVImpR3xdpfopJYc7haw,114711
10
- wolfhece/PyDraw.py,sha256=sSCWZhBSakxp34ifrSyB_Oz57xCm6b-x6_J1Jd87jtY,603334
11
- wolfhece/PyGui.py,sha256=B7-pAQ0tOkXVIb_3BSjNVROFF9s23lGCSBaQD5NxvOQ,145093
11
+ wolfhece/PyDraw.py,sha256=GVwGT4mG0XnIq9fV5Vvg1jeMMSv6609TAi_OkSj4gGo,629784
12
+ wolfhece/PyGui.py,sha256=IU97wVlmer3Q2MpWbJv4MQWH7nYbc5uN4pRzhr4jdlM,145197
12
13
  wolfhece/PyGuiHydrology.py,sha256=sKafpOopBg50L5llZCI_fZtbebVTDtxvoRI6-osUwhg,14745
13
- wolfhece/PyHydrographs.py,sha256=jwtSNMMACwarxrtN1UeQYth99UNrhwPx1IGgUwcooHA,3774
14
- wolfhece/PyPalette.py,sha256=mTknZlfioRGX7iJVoKG1Yc0pQooZA_KYyFsAzvLY4Rk,34344
15
- wolfhece/PyParams.py,sha256=wVgzJC5Bs8rfx6NdUdcFDtnsaPBYJgRn3A-rROk49MQ,99525
14
+ wolfhece/PyHydrographs.py,sha256=1P5XAURNqCvtSsMQXhOn1ihjTpr725sRsZdlCEhhk6M,3730
15
+ wolfhece/PyPalette.py,sha256=SnzMfzpVblbvq1kItLp52jufk6-R1b0QX3fF6RUKKT4,34842
16
+ wolfhece/PyParams.py,sha256=Dh9C_WYICMjo3m9roRySsu8ZgFzzYhSr6RpbaXZni0M,99423
16
17
  wolfhece/PyPictures.py,sha256=m1kY0saW6Y9Q0bDCo47lW6XxDkBrbQG-Fd8uVn8G5ic,2514
17
18
  wolfhece/PyTranslate.py,sha256=4appkmNeHHZLFmUtaA_k5_5QL-5ymxnbVN4R2OblmtE,622
18
- wolfhece/PyVertex.py,sha256=qFf8UPvkbwumRRfjpBcgZmqpHtcEtIEoUh30rWFF-lQ,45205
19
- wolfhece/PyVertexvectors.py,sha256=2kjtKwdYiGif-NVok8rS9T7Ok8jYMGN4tzy6zXoTxh8,325764
20
- wolfhece/PyWMS.py,sha256=WmOzHP02wVcB5RGJAlENL_NzF9rYfvLxslRFyxaEt1Q,6615
19
+ wolfhece/PyVertex.py,sha256=PDKpLFPqE1ORzfi36xKIjuKsxR8DR0iNMsLhAGw11rY,45205
20
+ wolfhece/PyVertexvectors.py,sha256=0lt0YyHIz_IxgXqdqPlTDruDwjeP6L1Dw6B2Q35a8kQ,325801
21
+ wolfhece/PyWMS.py,sha256=_HwJh3WVc0eHNCOPlQx40TVCdfXQF86Lb-_qpbzTC2M,8829
21
22
  wolfhece/RatingCurve.py,sha256=bUjIrQjvIjkD4V-z8bZmA6pe1ILtYNM0-3fT6YUY1RU,22498
22
23
  wolfhece/RatingCurveData.py,sha256=5UvnIm89BwqjnEbLCcY3CA8WoFd_xHJbooNy62fX5iY,57660
23
24
  wolfhece/RatingCurve_xml.py,sha256=cUjReVMHFKtakA2wVey5zz6lCgHlSr72y7ZfswZDvTM,33891
@@ -28,6 +29,7 @@ wolfhece/_add_path.py,sha256=nudniS-lsgHwXXq5o626XRDzIeYj76GoGKYt6lcu2Nc,616
28
29
  wolfhece/analyze_vect.py,sha256=3lkMwaQ4KRddBVRvlP9PcM66wZwwC0eCmypP91AW-os,6015
29
30
  wolfhece/cli.py,sha256=U8D7e_OezfrRfgMsa4TyQ7rI4voLKSY3RK-c8fb6rrw,3156
30
31
  wolfhece/color_constants.py,sha256=Snc5RX11Ydi756EkBp_83C7DiAQ_Z1aHD9jFIBsosAU,37121
32
+ wolfhece/dike.py,sha256=eG9EDCRk46Nlzpg5OycUeOag_T8joyJ2wzTkQgAT5F0,30710
31
33
  wolfhece/drawing_obj.py,sha256=7vY04B6r08nurTTFmBXHyR5tVIF1YzAEw_uz4pqTDIw,4233
32
34
  wolfhece/eikonal.py,sha256=iDeDs571sVXGe4IsPSJ1Sa4hX8Ri2jWE7u83xzvA2K8,23189
33
35
  wolfhece/flow_SPWMI.py,sha256=XDAelwAY-3rYOR0WKW3fgYJ_r8DU4IP6Y5xULW421tk,20956
@@ -39,6 +41,7 @@ wolfhece/ins.py,sha256=uUeLMS1n3GPnfJhxl0Z2l-UXpmPUgthuwct282OOEzk,36184
39
41
  wolfhece/irm_qdf.py,sha256=DMdDEAYbgYxApObm6w-dZbBmA8ec6PghBLXR2lUEZLc,27457
40
42
  wolfhece/ismember.py,sha256=fkLvaH9fhx-p0QrlEzqa6ySO-ios3ysjAgXVXzLgSpY,2482
41
43
  wolfhece/lagrange_multiplier.py,sha256=0G-M7b2tGzLx9v0oNYYq4_tLAiHcs_39B4o4W3TUVWM,6567
44
+ wolfhece/lifewatch.py,sha256=TOqmbD_fuxXLvrnx401z5OxMqOBBSn-7Yg6flndWXFE,3324
42
45
  wolfhece/matplotlib_fig.py,sha256=vnFI6sghw9N9jKhR8X1Z4aWli_5fPNylZQtFuujFJDY,84075
43
46
  wolfhece/multiprojects.py,sha256=Sd6Bl6YP33jlR79A6rvSLu23vq8sqbFYL8lWuVPkEpE,21549
44
47
  wolfhece/picc.py,sha256=0X_pzhSBoVxgtTfJ37pkOQO3Vbr9yurPaD1nVeurx8k,8531
@@ -55,21 +58,21 @@ wolfhece/rain_SPWMI.py,sha256=qCfcmF7LajloOaCwnTrrSMzyME03YyilmRUOqrPrv3U,13846
55
58
  wolfhece/textpillow.py,sha256=map7HsGYML_o5NHRdFg2s_TVQed_lDnpYNDv27MM0Vw,14130
56
59
  wolfhece/tools2d_dll.py,sha256=oU0m9XYAf4CZsMoB68IuKeE6SQh-AqY7O5NVED8r9uw,13125
57
60
  wolfhece/tools_mpl.py,sha256=gQ3Jg1iuZiecmMqa5Eli2ZLSkttu68VXL8YmMDBaEYU,564
58
- wolfhece/wolf_array.py,sha256=RcyJHpoTBudR-dkG5NjS4-X0CgyfHVflZACJAXPBOts,485378
61
+ wolfhece/wolf_array.py,sha256=t6-gLy1Op3Lx6Nmxv-Yo7cQIW62BinFDRP7x6Qpb5u8,486606
59
62
  wolfhece/wolf_hist.py,sha256=7jeVrgSkM3ErJO6SRMH_PGzfLjIdw8vTy87kesldggk,3582
60
- wolfhece/wolf_texture.py,sha256=ecoXXmmcLuyG1oPqU2dB_k03qMTCLTVQoSq1xi1EalU,17359
63
+ wolfhece/wolf_texture.py,sha256=IvFtekT5iLU2sivZOOlJXpE4CevjTQYSxHaOp4cH_wI,17723
61
64
  wolfhece/wolf_tiles.py,sha256=v-HohqaWuMYdn75XLnA22dlloAG90iwnIqrgnB0ASQ4,10488
62
65
  wolfhece/wolf_vrt.py,sha256=wbxXVN7TL9zgdyF79S-4e3pje6wJEAgBEfF_Y8kkzxs,14271
63
66
  wolfhece/wolf_zi_db.py,sha256=baE0niMCzybWGSvPJc5FNxo9ZxsGfU4p-FmfiavFHAs,12967
64
67
  wolfhece/wolfresults_2D.py,sha256=5Ser0lcfoGbsHLASx_1UtxmanYDGSuOCMgaadSNTHzs,218154
65
68
  wolfhece/xyz_file.py,sha256=1pzLFmmdHca4yBVR9Jitic6N82rY28mRytGC1zMbY28,6615
66
- wolfhece/acceptability/Parallels.py,sha256=njrJFH_tTdQUg2px-QqQR6VdhImP1TEujLhpM3JEKNo,4001
69
+ wolfhece/acceptability/Parallels.py,sha256=2wVkfJYor4yl7VYiAZiGGTFwtAab2z66ZfRtBliVweE,4088
67
70
  wolfhece/acceptability/__init__.py,sha256=hfgoPKLDpX7drN1Vpvux-_5Lfyc_7feT2C2zQr5v-Os,258
68
71
  wolfhece/acceptability/_add_path.py,sha256=nudniS-lsgHwXXq5o626XRDzIeYj76GoGKYt6lcu2Nc,616
69
72
  wolfhece/acceptability/acceptability.py,sha256=dLsYVwPiYH33M7y2vVzlLVd9q8dLgDIeTuJ8f20L4ig,28006
70
- wolfhece/acceptability/acceptability_gui.py,sha256=EWM-WfLWKTzMguZHWgRfRQARxb1xINwx0G9VOzmOn5k,74493
73
+ wolfhece/acceptability/acceptability_gui.py,sha256=OR02JhbBzhqtJAhP1tXudP3Tbi6qkhbu1Kfn6oY-Zds,72307
71
74
  wolfhece/acceptability/cli.py,sha256=ul_GmDnSgKSgA7z5ZIzeA_MlS2uqo-Xi48bqmWUS-Qk,19141
72
- wolfhece/acceptability/func.py,sha256=Aj85M01b09ENb9vN3q6isnJO5a2wNlNfiwhHbguhg_w,68263
75
+ wolfhece/acceptability/func.py,sha256=OP9Gd3l3BQ4_93Zl0rQjGqKf-we_Ncpmu-YkwrZFAkQ,72545
73
76
  wolfhece/apps/ManageParams.py,sha256=9okXHGHKEayA9iKTnv8jsVYCP2up5kr6hDaKO_fMCaQ,748
74
77
  wolfhece/apps/Optimisation_hydro.py,sha256=ySIaVsFNEx4PaHFLlT2QW9BiwChVcTNd2TBnW1aICsI,810
75
78
  wolfhece/apps/WolfPython.png,sha256=K3dcbeZUiJCFNwOAAlGMaRGLJ56yM8WD2I_0bk0xT1g,104622
@@ -77,13 +80,13 @@ wolfhece/apps/WolfPython2.png,sha256=VMPV-M-3BCOg8zOJss8bXwPmzRYZy8Fo-XtnVYNgbaw
77
80
  wolfhece/apps/WolfPython3.png,sha256=3G84zx14HnlB9YXMY4VUAO7IB3eu7JFvi4Kpmc_4zBE,403298
78
81
  wolfhece/apps/__init__.py,sha256=OzzKItATWV0mDkz_LC2L3w5sgT2rt8ExXXCbR_FwvlY,24
79
82
  wolfhece/apps/acceptability.py,sha256=hMIxTRNQARTTWJJaakb6kEK9udNh-w64VDgxxezVk3k,790
80
- wolfhece/apps/check_install.py,sha256=vrrkPu0ay5Ru25JKrYqzdVnyfnlzY3rDLYFGDJOptko,3989
83
+ wolfhece/apps/check_install.py,sha256=ULUN2frWsMK2a-aKu5an6qx7JBJ9JJWGK9sWWTqYpYA,4001
81
84
  wolfhece/apps/check_version.py,sha256=Zze7ltzcM2ZzIGMwkcASIjapCG8CEzzW9kwNscA3NhM,1768
82
85
  wolfhece/apps/curvedigitizer.py,sha256=lEJJwgAfulrrWQc-U6ij6sj59hWN3SZl4Yu1kQxVzzA,9106
83
86
  wolfhece/apps/hydrometry.py,sha256=lhhJsFeb4zGL4bNQTs0co85OQ_6ssL1Oy0OUJCzhfYE,656
84
87
  wolfhece/apps/isocurrent.py,sha256=dagmGR8ja9QQ1gwz_8fU-N052hIw-W0mWGVkzLu6C7I,4247
85
- wolfhece/apps/splashscreen.py,sha256=SrustmIQeXnsiD-92OzjdGhBi-S7c_j-cSvuX4T6rtg,2929
86
- wolfhece/apps/version.py,sha256=E_lGl4BWE12swHHPwJTWvzfUAgEj2g4eoDA_PFNSTYA,387
88
+ wolfhece/apps/splashscreen.py,sha256=eCPAUYscZPWDYKBHDBWum_VIcE7WXOCBe1GLHL3KUmU,3088
89
+ wolfhece/apps/version.py,sha256=lVoU-2zAdKqdc2HowaZyYIpzDeY0BVhAVNi5RcXr7ig,387
87
90
  wolfhece/apps/wolf.py,sha256=j_CgvsL8rwixbVvVD5Z0s7m7cHZ86gmFLojKGuetMls,729
88
91
  wolfhece/apps/wolf2D.py,sha256=4z_OPQ3IgaLtjexjMKX9ppvqEYyjFLt1hcfFABy3-jU,703
89
92
  wolfhece/apps/wolf_logo.bmp,sha256=ruJ4MA51CpGO_AYUp_dB4SWKHelvhOvd7Q8NrVOjDJk,3126
@@ -92,6 +95,8 @@ wolfhece/apps/wolf_logo3.bmp,sha256=AxRvS_uc2MJn_ksMExPhFEDJ0_PmlR3xU13gzfc28xk,
92
95
  wolfhece/apps/wolf_logo4.bmp,sha256=N6d_NZ3V2M-qtSdTM0LP3PhU2TtltB_UNW6Z2WiLrvM,5830
93
96
  wolfhece/apps/wolfcompare2Darrays.py,sha256=AfEJjku_oSWWqyCIDOqId0quZrS_NpTIFN4fHcVDWb4,4179
94
97
  wolfhece/apps/wolfhydro.py,sha256=EsXTtXhnsQV1j-tiFYcyfMrJpjFv1MrWiftwODdi_8I,817
98
+ wolfhece/assets/__init__.py,sha256=FRDE8PiJAWxX9PMXsShRMZ8YADAY4WIgKMRh52rmhiw,23
99
+ wolfhece/assets/speedometer.py,sha256=Oqttbw-AB9niaQRNDd0bmyu-ozyOHoYRQd1dApywwdU,5877
95
100
  wolfhece/bernoulli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
96
101
  wolfhece/bernoulli/chamber.py,sha256=ZWNjTAmTaH8u8J00n8uEib7dy84mUfHWN43805W_Qsw,2354
97
102
  wolfhece/bernoulli/fluids.py,sha256=-mPv3EtCcIEfvTI7oSELtOjUFiKhKANu8w96NnUnrvU,464
@@ -107,6 +112,9 @@ wolfhece/clientserver/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
107
112
  wolfhece/clientserver/clientserver.py,sha256=sNJ8STw0kqUjCB4AerqZNbzCtl5WRe_JRvhe7whNoSE,2798
108
113
  wolfhece/coupling/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
109
114
  wolfhece/coupling/hydrology_2d.py,sha256=QBIcgujfOX1xX3ARF2PQz6Uqwu3j6EaRw0QlGjG_H7k,53090
115
+ wolfhece/drowning_victims/Class.py,sha256=W7oliBnGE_4i2NwkLgOqdq4eo0EuDdR1qMDF1fGfYUo,94132
116
+ wolfhece/drowning_victims/Functions.py,sha256=hlAOyzt15GYe0urDPYquJaV6i0LyDj7X5BAUGE6ppso,47535
117
+ wolfhece/drowning_victims/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
110
118
  wolfhece/eva/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
111
119
  wolfhece/eva/bootstrap.py,sha256=Ys4xTDIvG_QtxCKWLYzb3_XAZU441jGX7fHIbd9Mvr0,840
112
120
  wolfhece/eva/hydrogramme_mono.py,sha256=uZFIgJJ-JogMFzt7D7OnyVaHvgxCQJPZz9W9FgnuthA,8138
@@ -276,7 +284,7 @@ wolfhece/report/reporting.py,sha256=JUEXovx_S4jpYkJEBU0AC-1Qw2OkkWyV3VAp6iOfSHc,
276
284
  wolfhece/report/wolf_report.png,sha256=NoSV58LSwb-oxCcZScRiJno-kxDwRdm_bK-fiMsKJdA,592485
277
285
  wolfhece/scenario/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
278
286
  wolfhece/scenario/check_scenario.py,sha256=d-LWa_FxmPxTSc_H1lDHwqLB6TCqj1IUrRJhatfPMMA,5623
279
- wolfhece/scenario/config_manager.py,sha256=uJvMry-ApxSDnrlDANkF_8a67VH5tOCbRIQQCtPu9SI,113836
287
+ wolfhece/scenario/config_manager.py,sha256=5_USTuhaAYDNQaqDt2VA0wssv2f53rgjGnMt1vkoc48,113836
280
288
  wolfhece/scenario/imposebc_void.py,sha256=PqA_99hKcaqK5zsK6IRIc5Exgg3WVpgWU8xpwNL49zQ,5571
281
289
  wolfhece/scenario/update_void.py,sha256=Yb7TMIUx9Gzm9_6qRMJnF39Uqi17dIkMmscSXo2WaTs,10033
282
290
  wolfhece/shaders/fragment_shader_texture.glsl,sha256=w6h8d5mJqFaGbao0LGmjRcFFdcEQ3ICIl9JpuT71K5k,177
@@ -305,8 +313,8 @@ wolfhece/ui/wolf_multiselection_collapsiblepane.py,sha256=8PlMYrb_8jI8h9F0_EagpM
305
313
  wolfhece/ui/wolf_times_selection_comparison_models.py,sha256=ORy7fz4dcp691qKzaOZHrRLZ0uXNhL-LIHxmpDGL6BI,5007
306
314
  wolfhece/wintab/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
307
315
  wolfhece/wintab/wintab.py,sha256=8A-JNONV6ujgsgG3lM5Uw-pVgglPATwKs86oBzzljoc,7179
308
- wolfhece-2.2.1.dist-info/METADATA,sha256=YHBhMrSW-_ghRKpHukFs1j-NKs4iHqfDKgIcjsBhJkA,2694
309
- wolfhece-2.2.1.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
310
- wolfhece-2.2.1.dist-info/entry_points.txt,sha256=ZZ-aSfbpdcmo-wo84lRFzBN7LaSnD1XRGSaAKVX-Gpc,522
311
- wolfhece-2.2.1.dist-info/top_level.txt,sha256=EfqZXMVCn7eILUzx9xsEu2oBbSo9liWPFWjIHik0iCI,9
312
- wolfhece-2.2.1.dist-info/RECORD,,
316
+ wolfhece-2.2.3.dist-info/METADATA,sha256=7nhPe_QhpAi0TfGLOiKVOAdqSKC1Niqz3xWKfBIEqqM,2744
317
+ wolfhece-2.2.3.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
318
+ wolfhece-2.2.3.dist-info/entry_points.txt,sha256=ZZ-aSfbpdcmo-wo84lRFzBN7LaSnD1XRGSaAKVX-Gpc,522
319
+ wolfhece-2.2.3.dist-info/top_level.txt,sha256=EfqZXMVCn7eILUzx9xsEu2oBbSo9liWPFWjIHik0iCI,9
320
+ wolfhece-2.2.3.dist-info/RECORD,,