wolfhece 2.1.12__py3-none-any.whl → 2.1.14__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 +111 -75
- wolfhece/PyGui.py +27 -4
- wolfhece/PyParams.py +1 -1
- wolfhece/PyVertexvectors.py +14 -0
- wolfhece/Results2DGPU.py +20 -12
- wolfhece/apps/version.py +1 -1
- wolfhece/fonts/arial.ttf +0 -0
- wolfhece/hydrology/Catchment.py +92 -8
- wolfhece/hydrology/Comparison.py +46 -7
- wolfhece/hydrology/Optimisation.py +63 -4
- wolfhece/hydrology/PyWatershed.py +563 -17
- wolfhece/hydrology/RetentionBasin.py +246 -41
- wolfhece/hydrology/SubBasin.py +42 -9
- wolfhece/hydrology/plot_hydrology.py +58 -0
- wolfhece/libs/WolfDll.dll +0 -0
- wolfhece/picc.py +35 -4
- wolfhece/wolf_array.py +152 -30
- wolfhece/wolfresults_2D.py +18 -4
- {wolfhece-2.1.12.dist-info → wolfhece-2.1.14.dist-info}/METADATA +1 -1
- {wolfhece-2.1.12.dist-info → wolfhece-2.1.14.dist-info}/RECORD +23 -23
- {wolfhece-2.1.12.dist-info → wolfhece-2.1.14.dist-info}/WHEEL +1 -1
- {wolfhece-2.1.12.dist-info → wolfhece-2.1.14.dist-info}/entry_points.txt +0 -0
- {wolfhece-2.1.12.dist-info → wolfhece-2.1.14.dist-info}/top_level.txt +0 -0
wolfhece/picc.py
CHANGED
@@ -33,6 +33,9 @@ class Picc_data(Element_To_Draw):
|
|
33
33
|
self.cloud = None
|
34
34
|
self._colors = {'Habitation': [255, 0, 0], 'Annexe': [0, 255, 0], 'Culture, sport ou loisir': [0, 0, 255], 'Autre': [10, 10, 10]}
|
35
35
|
|
36
|
+
self.active_vector = None
|
37
|
+
self.active_zone = None
|
38
|
+
|
36
39
|
return None
|
37
40
|
|
38
41
|
def read_data(self, data_dir:Path = None, bbox:Union[Polygon, list[float]] = None, colorize:bool = True) -> None:
|
@@ -74,8 +77,9 @@ class Picc_data(Element_To_Draw):
|
|
74
77
|
|
75
78
|
try:
|
76
79
|
self.data_dir = Path(pathname).parent
|
80
|
+
data_dir = self.data_dir
|
77
81
|
self._filename_vector = Path(pathname).name
|
78
|
-
self.zones = Zones(pathname, bbox = bbox, mapviewer=self.mapviewer)
|
82
|
+
self.zones = Zones(pathname, bbox = bbox, mapviewer=self.mapviewer, parent=self)
|
79
83
|
self.zones.prep_listogl()
|
80
84
|
except:
|
81
85
|
logging.error(_('File not found : {}').format(pathname))
|
@@ -88,9 +92,10 @@ class Picc_data(Element_To_Draw):
|
|
88
92
|
pathname = dirDialog.GetPath()
|
89
93
|
|
90
94
|
try:
|
91
|
-
self.data_dir = Path(pathname)
|
95
|
+
self.data_dir = Path(pathname).parent
|
96
|
+
data_dir = self.data_dir
|
92
97
|
self._filename_vector = ''
|
93
|
-
self.zones = Zones(
|
98
|
+
self.zones = Zones(pathname, bbox = bbox, mapviewer=self.mapviewer, parent=self)
|
94
99
|
self.zones.prep_listogl()
|
95
100
|
|
96
101
|
except:
|
@@ -100,7 +105,7 @@ class Picc_data(Element_To_Draw):
|
|
100
105
|
pointfile = data_dir / self._filename_points
|
101
106
|
|
102
107
|
if pointfile.exists():
|
103
|
-
self.cloud = cloud_vertices(data_dir / self._filename_points, bbox = bbox)
|
108
|
+
self.cloud = cloud_vertices(data_dir / self._filename_points, bbox = bbox, mapviewer=self.mapviewer)
|
104
109
|
self.cloud.myprop.width = 3
|
105
110
|
self.cloud.myprop.color = getIfromRGB([0, 0, 255])
|
106
111
|
else:
|
@@ -168,6 +173,32 @@ class Picc_data(Element_To_Draw):
|
|
168
173
|
else:
|
169
174
|
logging.warning(_('No cloud properties to show !'))
|
170
175
|
|
176
|
+
def Active_vector(self, vector_to_activate:vector):
|
177
|
+
""" Activate a vector """
|
178
|
+
|
179
|
+
self.active_vector = vector_to_activate
|
180
|
+
self.active_zone = vector_to_activate.parentzone
|
181
|
+
|
182
|
+
if self.mapviewer is not None:
|
183
|
+
self.mapviewer.Active_vector(vector_to_activate)
|
184
|
+
|
185
|
+
else:
|
186
|
+
logging.warning(_('No mapviewer to activate vector !'))
|
187
|
+
|
188
|
+
def Active_zone(self, zone_to_activate:zone):
|
189
|
+
""" Activate a zone """
|
190
|
+
|
191
|
+
self.active_zone = zone_to_activate
|
192
|
+
|
193
|
+
if len(zone_to_activate.myvectors) > 0:
|
194
|
+
self.active_vector = zone_to_activate.myvectors[0]
|
195
|
+
|
196
|
+
if self.mapviewer is not None:
|
197
|
+
self.mapviewer.Active_vector(self.active_vector)
|
198
|
+
|
199
|
+
else:
|
200
|
+
logging.warning(_('No mapviewer to activate zone !'))
|
201
|
+
|
171
202
|
class Cadaster_data(Picc_data):
|
172
203
|
""" Read and show cadaster data """
|
173
204
|
|
wolfhece/wolf_array.py
CHANGED
@@ -348,11 +348,13 @@ class header_wolf():
|
|
348
348
|
"""
|
349
349
|
Get indices from coordinates
|
350
350
|
|
351
|
-
:param xy = numpy array containing (x, y, [z]) coordinates
|
351
|
+
:param xy = numpy array containing (x, y, [z]) coordinates - shape (n, 2) or (n, 3)
|
352
352
|
:param scale = scaling of the spatial resolution (dx,dy,[dz])
|
353
353
|
:param aswolf = if True, return if one-based (as Wolf VB6 or Fortran), otherwise 0-based (default Python standard)
|
354
354
|
:param abs = if True, remove translation from (x, y, [z]) (coordinate from global space)
|
355
355
|
:param forcedims2 = if True, force to return only 2 indices even if z is supplied
|
356
|
+
|
357
|
+
:return : numpy array containing (i, j, [k]) indices - shape (n, 2) or (n, 3)
|
356
358
|
"""
|
357
359
|
|
358
360
|
locxy = xy.copy()
|
@@ -494,24 +496,47 @@ class header_wolf():
|
|
494
496
|
""" alias for get_xy_from_ij """
|
495
497
|
return self.get_xy_from_ij(i, j, k, scale, aswolf, abs)
|
496
498
|
|
497
|
-
def
|
498
|
-
""" alias for get_xy_from_ij_array
|
499
|
+
def ij2xy_np(self, ij:np.ndarray, scale:float=1., aswolf:bool=False, abs:bool=True) -> np.ndarray:
|
500
|
+
""" alias for get_xy_from_ij_array
|
501
|
+
|
502
|
+
:param ij = numpy array containing (i, j, [k]) indices
|
503
|
+
:param scale = scaling of the spatial resolution (dx,dy,[dz])
|
504
|
+
:param aswolf = if True, input is one-based (as Wolf VB6 or Fortran), otherwise 0-based (default Python standard)
|
505
|
+
:param abs = if True, add translation to results (x, y, [z]) (coordinate to global space)
|
506
|
+
|
507
|
+
..warning: 'ij' is not the result of np.where() but if you want to use np.where() you can use the following code:
|
508
|
+
```
|
509
|
+
np.vstack((ij[0], ij[1])).T
|
510
|
+
```
|
511
|
+
|
512
|
+
:return : numpy array containing (x, y, [z]) coordinates - shape (n, 2) or (n, 3)
|
513
|
+
"""
|
499
514
|
return self.get_xy_from_ij_array(ij, scale, aswolf, abs)
|
500
515
|
|
501
516
|
def xy2ij(self, x:float, y:float, z:float=0., scale:float=1., aswolf:bool=False, abs:bool=True, forcedims2:bool=False) -> Union[tuple[np.int32,np.int32], tuple[np.int32,np.int32,np.int32]]:
|
502
517
|
""" alias for get_ij_from_xy """
|
503
518
|
return self.get_ij_from_xy(x, y, z, scale, aswolf, abs, forcedims2)
|
504
519
|
|
505
|
-
def
|
506
|
-
"""
|
520
|
+
def xy2ij_np(self, xy:np.ndarray, scale:float=1., aswolf:bool=False, abs:bool=True) -> np.ndarray:
|
521
|
+
"""
|
522
|
+
alias for get_ij_from_xy_array
|
523
|
+
|
524
|
+
:param xy = numpy array containing (x, y, [z]) coordinates - shape (n, 2) or (n, 3)
|
525
|
+
:param scale = scaling of the spatial resolution (dx,dy,[dz])
|
526
|
+
:param aswolf = if True, return if one-based (as Wolf VB6 or Fortran), otherwise 0-based (default Python standard)
|
527
|
+
:param abs = if True, remove translation from (x, y, [z]) (coordinate from global space)
|
528
|
+
:param forcedims2 = if True, force to return only 2 indices even if z is supplied
|
529
|
+
|
530
|
+
:return : numpy array containing (i, j, [k]) indices - shape (n, 2) or (n, 3)
|
531
|
+
"""
|
507
532
|
return self.get_xy_from_ij_array(xy, scale, aswolf, abs)
|
508
533
|
|
509
|
-
def
|
534
|
+
def xyz2ijk_np(self, xyz:np.ndarray, scale:float=1., aswolf:bool=False, abs:bool=True) -> np.ndarray:
|
510
535
|
""" alias for get_xy_from_ij_array """
|
511
536
|
assert xyz.shape[1] == 3, _('xyz must be a 2D array with 3 columns')
|
512
537
|
return self.get_xy_from_ij_array(xyz, scale, aswolf, abs)
|
513
538
|
|
514
|
-
def
|
539
|
+
def ijk2xyz_np(self, ijk:np.ndarray, scale:float=1., aswolf:bool=False, abs:bool=True) -> np.ndarray:
|
515
540
|
""" alias for get_xy_from_ij_array """
|
516
541
|
assert ijk.shape[1] == 3, _('ijk must be a 2D array with 3 columns')
|
517
542
|
return self.get_xy_from_ij_array(ijk, scale, aswolf, abs)
|
@@ -653,7 +678,7 @@ class header_wolf():
|
|
653
678
|
|
654
679
|
else:
|
655
680
|
if not os.path.exists(filename + '.txt'):
|
656
|
-
logging.info(_('File {} does not exist --
|
681
|
+
logging.info(_('File {} does not exist -- Maybe be a parameter.json exists or retry !'.format(filename + '.txt')))
|
657
682
|
return
|
658
683
|
|
659
684
|
with open(filename + '.txt', 'r') as f:
|
@@ -2961,6 +2986,89 @@ class SelectionData():
|
|
2961
2986
|
|
2962
2987
|
self.update_nb_nodes_selection()
|
2963
2988
|
|
2989
|
+
def dilate_selection(self, nb_iterations:int, use_mask:bool = True, structure:np.ndarray = None):
|
2990
|
+
""" Extend the selection """
|
2991
|
+
|
2992
|
+
if self.myselection == 'all':
|
2993
|
+
logging.info(_('Cannot extend selection when all nodes are selected'))
|
2994
|
+
return
|
2995
|
+
|
2996
|
+
if len(self.myselection) == 0:
|
2997
|
+
logging.info(_('No nodes selected'))
|
2998
|
+
return
|
2999
|
+
|
3000
|
+
if nb_iterations < 1:
|
3001
|
+
logging.info(_('Number of iterations must be greater than 0'))
|
3002
|
+
return
|
3003
|
+
|
3004
|
+
if self.parent.array is None:
|
3005
|
+
logging.info(_('No array to select from'))
|
3006
|
+
return
|
3007
|
+
|
3008
|
+
from scipy import ndimage
|
3009
|
+
|
3010
|
+
xy = self.myselection
|
3011
|
+
ij = [self.parent.get_ij_from_xy(x, y) for x, y in xy]
|
3012
|
+
|
3013
|
+
selected = np.zeros(self.parent.array.shape, dtype=bool)
|
3014
|
+
for i, j in ij:
|
3015
|
+
selected[i, j] = True
|
3016
|
+
|
3017
|
+
selected = ndimage.binary_dilation(selected,
|
3018
|
+
iterations=nb_iterations,
|
3019
|
+
mask=~self.parent.array.mask if use_mask else None,
|
3020
|
+
structure=structure)
|
3021
|
+
|
3022
|
+
ij = np.argwhere(selected)
|
3023
|
+
ij = np.vstack([ij[:, 0], ij[:, 1]]).T
|
3024
|
+
xy = self.parent.ij2xy_np(ij)
|
3025
|
+
|
3026
|
+
self.myselection = xy.tolist()
|
3027
|
+
|
3028
|
+
self.update_nb_nodes_selection()
|
3029
|
+
|
3030
|
+
def erode_selection(self, nb_iterations:int, use_mask:bool = True, structure:np.ndarray = None):
|
3031
|
+
""" Reduce the selection """
|
3032
|
+
|
3033
|
+
if self.myselection == 'all':
|
3034
|
+
logging.info(_('Cannot reduce selection when all nodes are selected'))
|
3035
|
+
return
|
3036
|
+
|
3037
|
+
if len(self.myselection) == 0:
|
3038
|
+
logging.info(_('No nodes selected'))
|
3039
|
+
return
|
3040
|
+
|
3041
|
+
if nb_iterations < 1:
|
3042
|
+
logging.info(_('Number of iterations must be greater than 0'))
|
3043
|
+
return
|
3044
|
+
|
3045
|
+
if self.parent.array is None:
|
3046
|
+
logging.info(_('No array to select from'))
|
3047
|
+
return
|
3048
|
+
|
3049
|
+
from scipy import ndimage
|
3050
|
+
|
3051
|
+
xy = self.myselection
|
3052
|
+
ij = [self.parent.get_ij_from_xy(x, y) for x, y in xy]
|
3053
|
+
|
3054
|
+
selected = np.zeros(self.parent.array.shape, dtype=bool)
|
3055
|
+
|
3056
|
+
for i, j in ij:
|
3057
|
+
selected[i, j] = True
|
3058
|
+
|
3059
|
+
selected = ndimage.binary_erosion(selected,
|
3060
|
+
iterations=nb_iterations,
|
3061
|
+
mask=~self.parent.array.mask if use_mask else None,
|
3062
|
+
structure=structure)
|
3063
|
+
|
3064
|
+
ij = np.argwhere(selected)
|
3065
|
+
ij = np.vstack([ij[:, 0], ij[:, 1]]).T
|
3066
|
+
xy = self.parent.ij2xy_np(ij)
|
3067
|
+
|
3068
|
+
self.myselection = xy.tolist()
|
3069
|
+
|
3070
|
+
self.update_nb_nodes_selection()
|
3071
|
+
|
2964
3072
|
def update_nb_nodes_selection(self):
|
2965
3073
|
""" Update the number of selected nodes """
|
2966
3074
|
|
@@ -2969,21 +3077,23 @@ class SelectionData():
|
|
2969
3077
|
else:
|
2970
3078
|
nb = len(self.myselection)
|
2971
3079
|
|
2972
|
-
|
2973
|
-
|
2974
|
-
|
2975
|
-
|
2976
|
-
|
2977
|
-
|
2978
|
-
|
2979
|
-
|
2980
|
-
|
2981
|
-
|
2982
|
-
|
2983
|
-
|
2984
|
-
|
2985
|
-
|
2986
|
-
|
3080
|
+
self.update_plot_selection = True
|
3081
|
+
if self.wx_exists:
|
3082
|
+
if nb > 10000:
|
3083
|
+
if not self.hideselection:
|
3084
|
+
self.update_plot_selection = False # on met par défaut à False car OpenGL va demander une MAJ de l'affichage le temps que l'utilisateur réponde
|
3085
|
+
dlg = wx.MessageDialog(None,
|
3086
|
+
'Large selection !!' + str(nb) + '\n Do you want plot the selected cells?',
|
3087
|
+
style=wx.YES_NO)
|
3088
|
+
ret = dlg.ShowModal()
|
3089
|
+
if ret == wx.ID_YES:
|
3090
|
+
self.update_plot_selection = True
|
3091
|
+
else:
|
3092
|
+
self.update_plot_selection = False
|
3093
|
+
self.hideselection = True
|
3094
|
+
dlg.Destroy()
|
3095
|
+
else:
|
3096
|
+
self.update_plot_selection = True
|
2987
3097
|
|
2988
3098
|
if nb>0:
|
2989
3099
|
if self.myselection=='all':
|
@@ -4458,10 +4568,13 @@ class WolfArray(Element_To_Draw, header_wolf):
|
|
4458
4568
|
arr=self.array
|
4459
4569
|
if arr.dtype == np.float32:
|
4460
4570
|
arr_type = gdal.GDT_Float32
|
4571
|
+
nullvalue = self.nullvalue
|
4461
4572
|
elif arr.dtype == np.float64:
|
4462
4573
|
arr_type = gdal.GDT_Float64
|
4574
|
+
nullvalue = self.nullvalue
|
4463
4575
|
else:
|
4464
4576
|
arr_type = gdal.GDT_Int32
|
4577
|
+
nullvalue = int(self.nullvalue)
|
4465
4578
|
|
4466
4579
|
driver: gdal.Driver
|
4467
4580
|
out_ds: gdal.Dataset
|
@@ -4481,7 +4594,7 @@ class WolfArray(Element_To_Draw, header_wolf):
|
|
4481
4594
|
-self.dy])
|
4482
4595
|
|
4483
4596
|
band = out_ds.GetRasterBand(1)
|
4484
|
-
band.SetNoDataValue(
|
4597
|
+
band.SetNoDataValue(nullvalue)
|
4485
4598
|
band.WriteArray(np.flipud(arr.data.transpose()))
|
4486
4599
|
band.FlushCache()
|
4487
4600
|
band.ComputeStatistics(True)
|
@@ -5372,6 +5485,7 @@ class WolfArray(Element_To_Draw, header_wolf):
|
|
5372
5485
|
"""
|
5373
5486
|
|
5374
5487
|
sel = np.asarray(xy)
|
5488
|
+
z = np.asarray(z)
|
5375
5489
|
|
5376
5490
|
if len(sel) == 1:
|
5377
5491
|
ijall = np.asarray(self.get_ij_from_xy(sel[0, 0], sel[0, 1])).transpose()
|
@@ -6091,7 +6205,7 @@ class WolfArray(Element_To_Draw, header_wolf):
|
|
6091
6205
|
|
6092
6206
|
if self.filename.endswith('.tif'):
|
6093
6207
|
self.import_geotif(which= which_band, crop = self.cropini)
|
6094
|
-
self.mask_data(self.nullvalue)
|
6208
|
+
# self.mask_data(self.nullvalue)
|
6095
6209
|
self.loaded = True
|
6096
6210
|
elif self.filename.endswith('.npy'):
|
6097
6211
|
# Numpy format
|
@@ -6207,7 +6321,7 @@ class WolfArray(Element_To_Draw, header_wolf):
|
|
6207
6321
|
self.write_txt_header()
|
6208
6322
|
self.write_array()
|
6209
6323
|
|
6210
|
-
def rebin(self, factor:float, operation:Literal['mean', 'sum']='mean') -> None:
|
6324
|
+
def rebin(self, factor:float, operation:Literal['mean', 'sum', 'min']='mean') -> None:
|
6211
6325
|
"""
|
6212
6326
|
Change resolution - in place
|
6213
6327
|
|
@@ -6216,7 +6330,7 @@ class WolfArray(Element_To_Draw, header_wolf):
|
|
6216
6330
|
If you want to keep current data, copy the WolfArray into a new variable -> newWA = Wolfarray(mold=curWA)
|
6217
6331
|
"""
|
6218
6332
|
operation = operation.lower()
|
6219
|
-
if not operation in ['sum', 'mean']:
|
6333
|
+
if not operation in ['sum', 'mean', 'min']:
|
6220
6334
|
raise ValueError("Operator not supported.")
|
6221
6335
|
|
6222
6336
|
if np.mod(self.nbx,factor) != 0 or np.mod(self.nby,factor) != 0 :
|
@@ -6692,8 +6806,11 @@ class WolfArray(Element_To_Draw, header_wolf):
|
|
6692
6806
|
return newWolfArray
|
6693
6807
|
|
6694
6808
|
def extend(self, x_ext:int, y_ext:int):
|
6809
|
+
"""
|
6810
|
+
Extend the array
|
6695
6811
|
|
6696
|
-
|
6812
|
+
Crop is the opposite
|
6813
|
+
"""
|
6697
6814
|
|
6698
6815
|
assert x_ext >= 0 and y_ext >= 0
|
6699
6816
|
assert self.nbdims == 2, "Only 2D arrays are supported"
|
@@ -6851,6 +6968,11 @@ class WolfArray(Element_To_Draw, header_wolf):
|
|
6851
6968
|
if self.array is None:
|
6852
6969
|
return
|
6853
6970
|
|
6971
|
+
if self.wolftype != WOLF_ARRAY_FULL_SINGLE:
|
6972
|
+
self._tmp_float32 = self.array.astype(dtype=np.float32)
|
6973
|
+
else:
|
6974
|
+
self._tmp_float32 = None
|
6975
|
+
|
6854
6976
|
if self.mypal.automatic:
|
6855
6977
|
if onzoom != []:
|
6856
6978
|
self.mypal.isopop(self.get_working_array(onzoom), self.nbnotnullzoom)
|
@@ -7062,10 +7184,10 @@ class WolfArray(Element_To_Draw, header_wolf):
|
|
7062
7184
|
if self.wolftype != WOLF_ARRAY_FULL_SINGLE:
|
7063
7185
|
if self.nbnotnull != self.nbx * self.nby:
|
7064
7186
|
if self.nbnotnull > 0:
|
7065
|
-
wolfogl.addme(self.
|
7187
|
+
wolfogl.addme(self._tmp_float32, self.rgb, ox, oy, dx, dy, jstart,
|
7066
7188
|
jend, istart, iend, cursize, self.nullvalue, self.alpha)
|
7067
7189
|
elif self.nbnotnull > 0:
|
7068
|
-
wolfogl.addmeall(self.
|
7190
|
+
wolfogl.addmeall(self._tmp_float32, self.rgb, ox, oy, dx, dy, jstart,
|
7069
7191
|
jend, istart, iend, cursize, self.nullvalue, self.alpha)
|
7070
7192
|
else:
|
7071
7193
|
if self.nbnotnull != self.nbx * self.nby:
|
wolfhece/wolfresults_2D.py
CHANGED
@@ -1434,7 +1434,7 @@ class OneWolfResult:
|
|
1434
1434
|
self._sedimentdensity = 2.65
|
1435
1435
|
self._force_update_shields = True # Force la MAJ du Shields si le diametre ou la densité change
|
1436
1436
|
|
1437
|
-
self.mngselection = SelectionData(self.current)
|
1437
|
+
# self.mngselection = SelectionData(self.current)
|
1438
1438
|
|
1439
1439
|
@property
|
1440
1440
|
def SelectionData(self) -> SelectionDataMB:
|
@@ -1716,6 +1716,9 @@ class OneWolfResult:
|
|
1716
1716
|
self._current.idx = self.idx
|
1717
1717
|
self._current.nullvalue = nullvalue
|
1718
1718
|
|
1719
|
+
self.mngselection = SelectionData(self._current)
|
1720
|
+
|
1721
|
+
|
1719
1722
|
@property
|
1720
1723
|
def min_field_size(self):
|
1721
1724
|
return self._min_field_size
|
@@ -2008,7 +2011,10 @@ class Wolfresults_2D(Element_To_Draw):
|
|
2008
2011
|
self._epsilon_default = self.epsilon
|
2009
2012
|
|
2010
2013
|
self.loaded=True
|
2014
|
+
|
2011
2015
|
self.current_result = -1
|
2016
|
+
self._step_interval = 1
|
2017
|
+
|
2012
2018
|
self.mypal = wolfpalette(None,'Colors')
|
2013
2019
|
self.mypal.default16()
|
2014
2020
|
self.mypal.automatic = True
|
@@ -2308,6 +2314,14 @@ class Wolfresults_2D(Element_To_Draw):
|
|
2308
2314
|
|
2309
2315
|
return x>=xmin and x<=xmax and y>=ymin and y<=ymax
|
2310
2316
|
|
2317
|
+
@property
|
2318
|
+
def step_interval_results(self):
|
2319
|
+
return self._step_interval
|
2320
|
+
|
2321
|
+
@step_interval_results.setter
|
2322
|
+
def step_interval_results(self, value:int):
|
2323
|
+
self._step_interval = value
|
2324
|
+
|
2311
2325
|
@property
|
2312
2326
|
def nullvalue(self):
|
2313
2327
|
""" Get nullvalue from the first block """
|
@@ -2875,7 +2889,7 @@ class Wolfresults_2D(Element_To_Draw):
|
|
2875
2889
|
Lecture du pas suivant
|
2876
2890
|
"""
|
2877
2891
|
|
2878
|
-
self.current_result +=
|
2892
|
+
self.current_result += self._step_interval
|
2879
2893
|
self._update_result_view()
|
2880
2894
|
|
2881
2895
|
def _sanitize_result_step(self, which_step:int=-1):
|
@@ -3006,7 +3020,7 @@ class Wolfresults_2D(Element_To_Draw):
|
|
3006
3020
|
"""
|
3007
3021
|
|
3008
3022
|
# if self.current_result > 0:
|
3009
|
-
self.current_result -=
|
3023
|
+
self.current_result -= self._step_interval
|
3010
3024
|
self._update_result_view()
|
3011
3025
|
|
3012
3026
|
def get_h_for_block(self, block: Union[int, str]) -> WolfArray:
|
@@ -4026,7 +4040,7 @@ class Wolfresults_2D(Element_To_Draw):
|
|
4026
4040
|
if self.current_result==-1:
|
4027
4041
|
self.read_oneresult(-1)
|
4028
4042
|
else:
|
4029
|
-
self.current_result+=
|
4043
|
+
self.current_result+= self._step_interval
|
4030
4044
|
self.current_result = min(nb,self.current_result)
|
4031
4045
|
self.read_oneresult(self.current_result)
|
4032
4046
|
|
@@ -6,22 +6,22 @@ wolfhece/ManageParams.py,sha256=Wgt5Zh7QBtyiwTAltPHunSLqt4XuVuRH76GTUrXabS4,219
|
|
6
6
|
wolfhece/Model1D.py,sha256=-cMz-ePSYzrKVVDidiDOz6cojEZ3y6u9gIb7RPwT6Y8,476593
|
7
7
|
wolfhece/PyConfig.py,sha256=oGSL1WsLM9uinlNP4zGBLK3uHPmBfduUi7R-VtWuRFA,8034
|
8
8
|
wolfhece/PyCrosssections.py,sha256=f4dNYRUGZKePruaaBiTcn5vlrw8TFTj9XwTDrdiF_uU,112450
|
9
|
-
wolfhece/PyDraw.py,sha256=
|
10
|
-
wolfhece/PyGui.py,sha256=
|
9
|
+
wolfhece/PyDraw.py,sha256=mwewDF61NQuG4Yh8p5lkla3-h5QxRD7eBBTS4jfEdMM,379576
|
10
|
+
wolfhece/PyGui.py,sha256=fqy8f3tLt7myJskVvspTQ_ZO7kaiSNKmcfFLrfr4w7M,103174
|
11
11
|
wolfhece/PyGuiHydrology.py,sha256=wKhR-KthPRyzJ887NmsozmUpm2CIQIwO3IbYORCYjrE,7290
|
12
12
|
wolfhece/PyHydrographs.py,sha256=GKK8U0byI45H9O_e4LAOOi7Aw0Tg7Q0Lx322stPg5IQ,3453
|
13
13
|
wolfhece/PyPalette.py,sha256=Vl5RrBIC_a5-mZKUtBd5kG0mif946B7OtS3fnehkmOc,25012
|
14
|
-
wolfhece/PyParams.py,sha256=
|
14
|
+
wolfhece/PyParams.py,sha256=V1Pe4rsBpWBA5kI5rRG7B5ijPHAdpM1i2uyxhnrwX94,96896
|
15
15
|
wolfhece/PyPictures.py,sha256=-mJB0JL2YYiEK3D7_ssDkvYiMWK4ve9kXhozQXNeSx8,2216
|
16
16
|
wolfhece/PyTranslate.py,sha256=4appkmNeHHZLFmUtaA_k5_5QL-5ymxnbVN4R2OblmtE,622
|
17
17
|
wolfhece/PyVertex.py,sha256=dHTjyYYTn0F_NWerlAOBKHV79RUzEEtMJMldQtVc1Cs,40092
|
18
|
-
wolfhece/PyVertexvectors.py,sha256=
|
18
|
+
wolfhece/PyVertexvectors.py,sha256=C0uB7MTUeNB3XNxf1R98epvcqoLJIlExvI1zwom48jA,223945
|
19
19
|
wolfhece/PyWMS.py,sha256=t6jVZpTxTNSLJxABk8A79cEMWTKoRM_S_SXRipsHLzw,4493
|
20
20
|
wolfhece/RatingCurve.py,sha256=YSQvSvdMHE6hSlWVBF5Oe0-Fh3waNMpOdmcymaCCTis,21706
|
21
21
|
wolfhece/RatingCurveData.py,sha256=5UvnIm89BwqjnEbLCcY3CA8WoFd_xHJbooNy62fX5iY,57660
|
22
22
|
wolfhece/RatingCurve_xml.py,sha256=vbLxSWwHPsCAsR13KaG5WVmVn_cha7-6cF4zj7Diiz8,33593
|
23
23
|
wolfhece/ReadDataDCENN.py,sha256=4OMDBgkZ_v7OWmVhyQ-reab7MPxGhFEDY2qS8yThhdM,1240
|
24
|
-
wolfhece/Results2DGPU.py,sha256=
|
24
|
+
wolfhece/Results2DGPU.py,sha256=pC7jHQhzSJPmGiboNNLG619yVYaOUT_O5_yhKMzslxA,20563
|
25
25
|
wolfhece/__init__.py,sha256=FRDE8PiJAWxX9PMXsShRMZ8YADAY4WIgKMRh52rmhiw,23
|
26
26
|
wolfhece/_add_path.py,sha256=nudniS-lsgHwXXq5o626XRDzIeYj76GoGKYt6lcu2Nc,616
|
27
27
|
wolfhece/cli.py,sha256=rHxZGgs_R776VCWhs36pYFoiuiQycwgGTVOLK-JNzjE,1937
|
@@ -35,7 +35,7 @@ wolfhece/ins.py,sha256=0aU1mo4tYbw64Gwzrqbh-NCTH1tukmk0mpPHjRPHZXU,12661
|
|
35
35
|
wolfhece/irm_qdf.py,sha256=749SlAXiN1oXp5tfBJoPNJWxydQlY55K0qvIM5YexlM,15436
|
36
36
|
wolfhece/ismember.py,sha256=fkLvaH9fhx-p0QrlEzqa6ySO-ios3ysjAgXVXzLgSpY,2482
|
37
37
|
wolfhece/multiprojects.py,sha256=K40kM09xNkQSjiwANTsA4CpaW7KEkawpBkpoiehk9yo,21251
|
38
|
-
wolfhece/picc.py,sha256=
|
38
|
+
wolfhece/picc.py,sha256=UCWX1Y6Xb-iviI4qF-MgBSDZDWQn_tlKNfKRBUY75ow,8504
|
39
39
|
wolfhece/pyGui1D.py,sha256=pzLWXQ_w3Y_yI846w1GklFO9h5lWZOqiUzg1BUPkuRI,121616
|
40
40
|
wolfhece/pybridges.py,sha256=4PRSsWngDmQnlVuN2tJj0C_HT1h47ExH9QTUPs_Wxlg,57215
|
41
41
|
wolfhece/pydike.py,sha256=G4jfSZaAHHr4VWEJqnXSvEswXvlOz1yhbhQ6uu3AqyM,1943
|
@@ -48,13 +48,13 @@ wolfhece/rain_SPWMI.py,sha256=YqsF-yFro3y_a6MfVRFfr-Rxi7NR1gl_i8VX7scmzes,13548
|
|
48
48
|
wolfhece/test_Results2DGPU.py,sha256=NOJ_hFXrcLSQXS1dtsqXRQltqIZtDSHMz_EgAJ2_FHU,307
|
49
49
|
wolfhece/textpillow.py,sha256=zEfLrKhfCDyMaVuQOUjHqz6MGKeQ4aewMxOsWi5-wKI,13832
|
50
50
|
wolfhece/tools_mpl.py,sha256=q8Yc4aukPPiUcEzREvZRM_em67XqXaahdoaNt0DETfE,266
|
51
|
-
wolfhece/wolf_array.py,sha256=
|
51
|
+
wolfhece/wolf_array.py,sha256=lUedE9UgJNR7IoGIwixrDWyKICXt0OFXjkgkmMjbZAw,335654
|
52
52
|
wolfhece/wolf_hist.py,sha256=JpRXvzJLUP-RkSkvth3DQWglgTMFI2ZEUDb4RYOfeeI,3284
|
53
53
|
wolfhece/wolf_texture.py,sha256=llQ7aV8scWXIkhpri9XjaPejzoBJsGfsln2ZnlRbFkU,16270
|
54
54
|
wolfhece/wolf_tiles.py,sha256=F2JsJHdAP8fIffNJdG_J26bonCIRtIwMmxKFqdSCRDA,10088
|
55
55
|
wolfhece/wolf_vrt.py,sha256=un5CKzAUmzSsjLXK7YLnQEWz8FLoafXJs8oqUvS_-h0,10271
|
56
56
|
wolfhece/wolf_zi_db.py,sha256=Ok0MxQYZMMLRJN1QY-HSplLhUzzb6gkXgBQ3ihhLQHk,12669
|
57
|
-
wolfhece/wolfresults_2D.py,sha256=
|
57
|
+
wolfhece/wolfresults_2D.py,sha256=6VbONzD2lMFCnZ2-gyBk7pW9LcBmSWkZxiVLTMKVPIQ,159403
|
58
58
|
wolfhece/xyz_file.py,sha256=aQOcTHkHRhXHxL_WxTHwzygp6e47San7SHSpxKQU0dw,5457
|
59
59
|
wolfhece/apps/ManageParams.py,sha256=heg5L4fMn0ettR7Bad_Q680o_JWnTbe3WFkL_9IziAk,312
|
60
60
|
wolfhece/apps/Optimisation_hydro.py,sha256=mHazBazTUGyxPbHPXhaQim8vqIeOOuKPjH0B48VWduA,374
|
@@ -66,7 +66,7 @@ wolfhece/apps/check_install.py,sha256=jrKR-njqnpIh6ZJqvP6KbDUPVCfwTNQj4glQhcyzs9
|
|
66
66
|
wolfhece/apps/curvedigitizer.py,sha256=avWERHuVxPnJBOD_ibczwW_XG4vAenqWS8W1zjhBox8,4898
|
67
67
|
wolfhece/apps/isocurrent.py,sha256=4XnNWPa8mYUK7V4zdDRFrHFIXNG2AN2og3TqWKKcqjY,3811
|
68
68
|
wolfhece/apps/splashscreen.py,sha256=LkEVMK0eCc84NeCWD3CGja7fuQ_k1PrZdyqD3GQk_8c,2118
|
69
|
-
wolfhece/apps/version.py,sha256=
|
69
|
+
wolfhece/apps/version.py,sha256=iAAc-eeR7zIz-iR6FeTQIhd8wNdBHE1QcClTeElRpg4,388
|
70
70
|
wolfhece/apps/wolf.py,sha256=gqfm-ZaUJqNsfCzmdtemSeqLw-GVdSVix-evg5WArJI,293
|
71
71
|
wolfhece/apps/wolf2D.py,sha256=gWD9ee2-1pw_nUxjgRaJMuSe4kUT-RWhOeoTt_Lh1mM,267
|
72
72
|
wolfhece/apps/wolf_logo.bmp,sha256=ruJ4MA51CpGO_AYUp_dB4SWKHelvhOvd7Q8NrVOjDJk,3126
|
@@ -91,26 +91,26 @@ wolfhece/eva/joint_models.py,sha256=KTal-jVJmeEWXPQ5mKyT032q186Drz3IFdc60daz-t0,
|
|
91
91
|
wolfhece/eva/mixture_models.py,sha256=WRzGxE2rQ-RkQUskL6IlSeUqEWlAeezJrNhkr0QpeOI,15923
|
92
92
|
wolfhece/eva/pyseries.py,sha256=Oz2QCPGrbebAwQL1Vl-kc4t1OkzS-pCuj5rZwDGEJ-I,118536
|
93
93
|
wolfhece/fonts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
94
|
-
wolfhece/fonts/arial.ttf,sha256=
|
94
|
+
wolfhece/fonts/arial.ttf,sha256=lXZrWPfYabD6LPbm_rJsGyHN8mMfHFhj_JvSBtXG6O4,915212
|
95
95
|
wolfhece/fonts/helvetica.ttf,sha256=X4Zd3zdUmuRGMLE6UB-BMIbirpdK3Ia5czfNnuSx5P8,317968
|
96
96
|
wolfhece/fonts/sanserif.ttf,sha256=Nvv5eMgTl5-bWgV37B7E1-vZpAZPNJwjtJSzMNDrl9A,42696
|
97
97
|
wolfhece/ftp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
98
98
|
wolfhece/ftp/downloader.py,sha256=NANzxSzdcp25dFMYin5QA9UnFexNe6-W2AqqTzUE4f4,5223
|
99
|
-
wolfhece/hydrology/Catchment.py,sha256=
|
100
|
-
wolfhece/hydrology/Comparison.py,sha256=
|
99
|
+
wolfhece/hydrology/Catchment.py,sha256=QGTgdt6HQ9ZVzsROdebzZaabZGlgdCh9sQI_soDAL2I,139051
|
100
|
+
wolfhece/hydrology/Comparison.py,sha256=FC7syHzczIWERM7AxZWKlak2vbzKuXt2x5XiPYyzUY8,83810
|
101
101
|
wolfhece/hydrology/Dumping.py,sha256=GKYvkKgCfJQT1XEF1ceh7evdhlpZRPcuf6VlBdH-TaM,2085
|
102
|
-
wolfhece/hydrology/Optimisation.py,sha256=
|
102
|
+
wolfhece/hydrology/Optimisation.py,sha256=JD72GXAWL6fwagCrCVb0qMEFuYvUlO1vDigteV4EIuA,142220
|
103
103
|
wolfhece/hydrology/Outlet.py,sha256=fpetH2ZKnTKIBNuVclxrncc5OAxWUGI5_ed9gXh6fD4,10201
|
104
104
|
wolfhece/hydrology/PostProcessHydrology.py,sha256=SiW5FIf8FeQL9ItWG8ODt612k5m59aogSLgpsXinr8I,6944
|
105
|
-
wolfhece/hydrology/PyWatershed.py,sha256=
|
106
|
-
wolfhece/hydrology/RetentionBasin.py,sha256=
|
107
|
-
wolfhece/hydrology/SubBasin.py,sha256=
|
105
|
+
wolfhece/hydrology/PyWatershed.py,sha256=NO2f4XVA8JxW06ysUhlAN4VYVlv3oCqhhyQ8BeTC7d4,92823
|
106
|
+
wolfhece/hydrology/RetentionBasin.py,sha256=cV-Rn-Ya7vWHnkl6pHcQ8GFx5HX-wM7uHI4_Zry-kks,82605
|
107
|
+
wolfhece/hydrology/SubBasin.py,sha256=b5RawgPmfVWUJhkv-nEVSbdN3ytIxpov7kjBSvMrd1c,171159
|
108
108
|
wolfhece/hydrology/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
109
109
|
wolfhece/hydrology/constant.py,sha256=nRn4IuQ1FZakQtS6z9IpVHeudMfU_7KQ66LCxY6NX4k,1227
|
110
110
|
wolfhece/hydrology/cst_exchanges.py,sha256=u0Bs4SBOjgp6n6xuKusHvUCI0abeiEIUpBZRr11RExg,17569
|
111
111
|
wolfhece/hydrology/data_treatment.py,sha256=oCoG1xhUra0GtKnCCJ5s9E0DXoZ3MuUOn2Y0Lq5cEH8,34649
|
112
112
|
wolfhece/hydrology/forcedexchanges.py,sha256=WPIhAHBfnPLornxbImrvdqMI0tKO7ERHrLrHWJ6YRUY,1941
|
113
|
-
wolfhece/hydrology/plot_hydrology.py,sha256=
|
113
|
+
wolfhece/hydrology/plot_hydrology.py,sha256=3Qn_on3ca0IdCSclcZhVPNowQMI0DjRcn8wSDE2loyA,34604
|
114
114
|
wolfhece/hydrology/read.py,sha256=tTU-zCDJ9aI859XTc99R0WhOSZS2q7IZXhRNCpeRqqo,9010
|
115
115
|
wolfhece/hydrology/slope_manager.py,sha256=uZzq7Ba3RMbZL5LPaxdCpkgTVNBAUJs1X_d2sQqHkUs,5262
|
116
116
|
wolfhece/hydrology/wolfMap_treatment.py,sha256=5LO49yj1M-s9sGaK0hVgMtuT3t1yPJq9wd6LDh-GXaA,10288
|
@@ -163,7 +163,7 @@ wolfhece/lazviewer/viewer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
|
|
163
163
|
wolfhece/lazviewer/viewer/viewer.exe,sha256=pF5nwE8vMWlEzkk-SOekae9zpOsPhTWhZbqaJntumJc,202240
|
164
164
|
wolfhece/lazviewer/viewer/viewer.py,sha256=8_MQCaQOS0Z_oRPiGoRy1lq-aCirReX3hWEBjQID0ig,24665
|
165
165
|
wolfhece/libs/MSVCP140.dll,sha256=2GrBWBI6JFuSdZLIDMAg_qKcjErdwURGbEYloAypx3o,565640
|
166
|
-
wolfhece/libs/WolfDll.dll,sha256=
|
166
|
+
wolfhece/libs/WolfDll.dll,sha256=E8SeV0AHVXW5ikAQuVtijqIvaYx7UIMeqvnnsmTMCT8,132934144
|
167
167
|
wolfhece/libs/WolfOGL.c,sha256=tBWGfpFFe8gfRjImUUlqdxhcRpQ6ytEWU7Z6PC0v9as,1085242
|
168
168
|
wolfhece/libs/WolfOGL.pyx,sha256=kc1uxbO2wQx0Qoe7BVQnqTJgUWYx_Vtf1wzXMxzf8bI,65911
|
169
169
|
wolfhece/libs/api-ms-win-crt-heap-l1-1-0.dll,sha256=r0euvgZa8vBFoZ8g7H5Upuc8DD6aUQimMJWnIyt1OBo,19720
|
@@ -267,8 +267,8 @@ wolfhece/sounds/sonsw2.wav,sha256=pFLVt6By0_EPQNt_3KfEZ9a1uSuYTgQSX1I_Zurv9Rc,11
|
|
267
267
|
wolfhece/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
268
268
|
wolfhece/ui/wolf_multiselection_collapsiblepane.py,sha256=yGbU_JsF56jsmms0gh7mxa7tbNQ_SxqhpAZxhm-mTy4,14860
|
269
269
|
wolfhece/ui/wolf_times_selection_comparison_models.py,sha256=wCxGRnE3kzEkWlWA6-3X8ADOFux_B0a5QWJ2GnXTgJw,4709
|
270
|
-
wolfhece-2.1.
|
271
|
-
wolfhece-2.1.
|
272
|
-
wolfhece-2.1.
|
273
|
-
wolfhece-2.1.
|
274
|
-
wolfhece-2.1.
|
270
|
+
wolfhece-2.1.14.dist-info/METADATA,sha256=wY1eN44TVbJRXbZOTfGdkZIwii_vMv1Ytyr1a-NOXyE,2282
|
271
|
+
wolfhece-2.1.14.dist-info/WHEEL,sha256=y4mX-SOX4fYIkonsAGA5N0Oy-8_gI4FXw5HNI1xqvWg,91
|
272
|
+
wolfhece-2.1.14.dist-info/entry_points.txt,sha256=AIu1KMswrdsqNq_2jPtrRIU4tLjuTnj2dCY-pxIlshw,276
|
273
|
+
wolfhece-2.1.14.dist-info/top_level.txt,sha256=EfqZXMVCn7eILUzx9xsEu2oBbSo9liWPFWjIHik0iCI,9
|
274
|
+
wolfhece-2.1.14.dist-info/RECORD,,
|
File without changes
|
File without changes
|