wolfhece 2.1.50__py3-none-any.whl → 2.1.51__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/PyPalette.py +3 -3
- wolfhece/apps/version.py +1 -1
- wolfhece/libs/wolfogl.cp310-win_amd64.pyd +0 -0
- wolfhece/rem/REMMaker.py +14 -24
- wolfhece/rem/RasterViz.py +18 -28
- wolfhece/wolf_array.py +72 -40
- {wolfhece-2.1.50.dist-info → wolfhece-2.1.51.dist-info}/METADATA +8 -8
- {wolfhece-2.1.50.dist-info → wolfhece-2.1.51.dist-info}/RECORD +11 -11
- {wolfhece-2.1.50.dist-info → wolfhece-2.1.51.dist-info}/WHEEL +0 -0
- {wolfhece-2.1.50.dist-info → wolfhece-2.1.51.dist-info}/entry_points.txt +0 -0
- {wolfhece-2.1.50.dist-info → wolfhece-2.1.51.dist-info}/top_level.txt +0 -0
wolfhece/PyPalette.py
CHANGED
@@ -515,9 +515,9 @@ class wolfpalette(wx.Frame, LinearSegmentedColormap):
|
|
515
515
|
def defaultgray(self):
|
516
516
|
"""Palette grise par défaut dans WOLF"""
|
517
517
|
|
518
|
-
self.nb =
|
519
|
-
self.values = np.asarray([0., 1.], dtype=np.float64)
|
520
|
-
self.colors = np.asarray([[0, 0, 0, 255], [255, 255, 255, 255]], dtype=np.int32)
|
518
|
+
self.nb = 3
|
519
|
+
self.values = np.asarray([0., 0.5, 1.], dtype=np.float64)
|
520
|
+
self.colors = np.asarray([[0, 0, 0, 255], [128, 128, 128, 255], [255, 255, 255, 255]], dtype=np.int32)
|
521
521
|
|
522
522
|
# self.nb = 11
|
523
523
|
# self.values = np.asarray([0., 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.], dtype=np.float64)
|
wolfhece/apps/version.py
CHANGED
Binary file
|
wolfhece/rem/REMMaker.py
CHANGED
@@ -1,13 +1,3 @@
|
|
1
|
-
"""
|
2
|
-
Author: HECE - University of Liege, Pierre Archambeau
|
3
|
-
Date: 2024
|
4
|
-
|
5
|
-
Copyright (c) 2024 University of Liege. All rights reserved.
|
6
|
-
|
7
|
-
This script and its content are protected by copyright law. Unauthorized
|
8
|
-
copying or distribution of this file, via any medium, is strictly prohibited.
|
9
|
-
"""
|
10
|
-
|
11
1
|
#!/usr/bin/env python
|
12
2
|
import os
|
13
3
|
import sys
|
@@ -228,8 +218,8 @@ class REMMaker(object):
|
|
228
218
|
if self.count is not None and self.centerline_shp is None:
|
229
219
|
raise ValueError(f'Obligation de donner un shapefile pour en sélectionner une géométrie.')
|
230
220
|
if self.pres is not None:
|
231
|
-
gdal.Warp(f'{self.dem_name}_warp.tif', self.dem, xRes=self.pres, yRes=self.pres)
|
232
|
-
r = gdal.Open(f'{self.dem_name}_warp.tif', gdal.GA_ReadOnly)
|
221
|
+
gdal.Warp(os.path.join(self.out_dir, f'{self.dem_name}_warp.tif'), self.dem, xRes=self.pres, yRes=self.pres)
|
222
|
+
r = gdal.Open(os.path.join(self.out_dir, f'{self.dem_name}_warp.tif'), gdal.GA_ReadOnly)
|
233
223
|
if self.bounds is not None:
|
234
224
|
band = r.GetRasterBand(1)
|
235
225
|
self.dem_array = band.ReadAsArray()
|
@@ -240,19 +230,19 @@ class REMMaker(object):
|
|
240
230
|
min_x, max_x = sorted([upper_left_x, upper_left_x + x_size * cols])
|
241
231
|
min_y, max_y = sorted([upper_left_y, upper_left_y + y_size * rows])
|
242
232
|
if self.bounds[0] > min_x and self.bounds[1] > min_y and self.bounds[2] < max_x and self.bounds[3] < max_y:
|
243
|
-
gdal.Translate(f'{self.dem_name}_crop.tif', r, projWin=(self.bounds[0],self.bounds[3],self.bounds[2],self.bounds[1]))
|
244
|
-
r = gdal.Open(f'{self.dem_name}_crop.tif', gdal.GA_ReadOnly)
|
233
|
+
gdal.Translate(os.path.join(self.out_dir, f'{self.dem_name}_crop.tif'), r, projWin=(self.bounds[0],self.bounds[3],self.bounds[2],self.bounds[1]))
|
234
|
+
r = gdal.Open(os.path.join(self.out_dir, f'{self.dem_name}_crop.tif'), gdal.GA_ReadOnly)
|
245
235
|
else:
|
246
236
|
raise ValueError(f"bounds choisi hors DEM. Redéfinir des limites contenues dans x={min_x,max_x:.3f} et y={min_y,max_y:.3f}")
|
247
237
|
if self.count is not None:
|
248
238
|
self.rivers:gpd.GeoDataFrame
|
249
239
|
self.rivers = read_file(self.centerline_shp)
|
250
240
|
upper_left_x, x_size, x_rot, upper_left_y, y_rot, y_size = r.GetGeoTransform()
|
251
|
-
gdal.Translate(f'{self.dem_name}_crop.tif', r, projWin=(self.rivers.bounds.iloc[self.count].minx-50*x_size,
|
241
|
+
gdal.Translate(os.path.join(self.out_dir, f'{self.dem_name}_crop.tif'), r, projWin=(self.rivers.bounds.iloc[self.count].minx-50*x_size,
|
252
242
|
self.rivers.bounds.iloc[self.count].maxy-50*y_size,
|
253
243
|
self.rivers.bounds.iloc[self.count].maxx+50*x_size,
|
254
244
|
self.rivers.bounds.iloc[self.count].miny+50*y_size))
|
255
|
-
r = gdal.Open(f'{self.dem_name}_crop.tif', gdal.GA_ReadOnly)
|
245
|
+
r = gdal.Open(os.path.join(self.out_dir, f'{self.dem_name}_crop.tif'), gdal.GA_ReadOnly)
|
256
246
|
self.proj = osr.SpatialReference(wkt=r.GetProjection())
|
257
247
|
self.epsg_code = self.proj.GetAttrValue('AUTHORITY', 1)
|
258
248
|
self.h_unit = self.proj.GetAttrValue('UNIT')
|
@@ -426,9 +416,9 @@ class REMMaker(object):
|
|
426
416
|
self.river_coords = self.ix2coords(self.river_indices)
|
427
417
|
self.river_wses = self.dem_array[self.river_indices]
|
428
418
|
else:
|
429
|
-
self.rivers =
|
419
|
+
self.rivers = os.path.join(self.out_dir, f'{self.dem_name}_river_pts.shp')
|
430
420
|
self.rivers['curvi'] = self.river_curvi
|
431
|
-
self.rivers.to_file(f'{self.dem_name}_river_pts.shp', driver='ESRI Shapefile')
|
421
|
+
self.rivers.to_file(os.path.join(self.out_dir, f'{self.dem_name}_river_pts.shp'), driver='ESRI Shapefile')
|
432
422
|
self.river_coords = np.array([curpt.xy for curpt in self.rivers.geometry])
|
433
423
|
self.river_wses = np.array([curpt.z for curpt in self.rivers.geometry])
|
434
424
|
return
|
@@ -463,9 +453,9 @@ class REMMaker(object):
|
|
463
453
|
logging.info("Interpolating river elevation across DEM extent.")
|
464
454
|
if not self.k:
|
465
455
|
self.k = self.estimate_k()
|
466
|
-
self.rivers = read_file(
|
456
|
+
self.rivers = read_file(self.river_shp)
|
467
457
|
self.rivers['curvi'] = self.river_curvi
|
468
|
-
self.rivers.to_file(
|
458
|
+
self.rivers.to_file(self.river_shp, driver='ESRI Shapefile')
|
469
459
|
logging.info(f"Using k = {self.k} nearest neighbors.")
|
470
460
|
# coords to interpolate over (don't interpolate where DEM is null or on centerline where REM = 0)
|
471
461
|
interp_indices = np.where(~(np.isnan(self.dem_array) | (self.centerline_array == 1)))
|
@@ -513,9 +503,9 @@ class REMMaker(object):
|
|
513
503
|
if self.bounds is None and self.count is None:
|
514
504
|
r = gdal.Open(self.dem, gdal.GA_ReadOnly)
|
515
505
|
if self.bounds is not None or self.count is not None:
|
516
|
-
r = gdal.Open(f'{self.dem_name}_crop.tif', gdal.GA_ReadOnly)
|
506
|
+
r = gdal.Open(os.path.join(self.out_dir, f'{self.dem_name}_crop.tif'), gdal.GA_ReadOnly)
|
517
507
|
if self.pres is not None and self.bounds is None and self.count is None:
|
518
|
-
r = gdal.Open(f'{self.dem_name}_warp.tif', gdal.GA_ReadOnly)
|
508
|
+
r = gdal.Open(os.path.join(self.out_dir, f'{self.dem_name}_warp.tif'), gdal.GA_ReadOnly)
|
519
509
|
driver = gdal.GetDriverByName("GTiff")
|
520
510
|
rem = driver.CreateCopy(self.rem_ras, r, strict=0)
|
521
511
|
# fill with REM array
|
@@ -565,9 +555,9 @@ class REMMaker(object):
|
|
565
555
|
if self.bounds is None and self.count is None:
|
566
556
|
dem_viz = RasterViz(self.dem, out_dir=self.cache_dir, out_ext=".tif")
|
567
557
|
if self.bounds is not None or self.count is not None:
|
568
|
-
dem_viz = RasterViz(f'{self.dem_name}_crop.tif', out_dir=self.cache_dir, out_ext=".tif")
|
558
|
+
dem_viz = RasterViz(os.path.join(self.out_dir, f'{self.dem_name}_crop.tif'), out_dir=self.cache_dir, out_ext=".tif")
|
569
559
|
if self.pres is not None and self.bounds is None and self.count is None:
|
570
|
-
dem_viz = RasterViz(f'{self.dem_name}_warp.tif', out_dir=self.cache_dir, out_ext=".tif")
|
560
|
+
dem_viz = RasterViz(os.path.join(self.out_dir, f'{self.dem_name}_warp.tif'), out_dir=self.cache_dir, out_ext=".tif")
|
571
561
|
dem_viz.make_hillshade(multidirectional=True, z=z)
|
572
562
|
# make color-relief of REM in cache dir
|
573
563
|
rem_viz = RasterViz(self.rem_ras, out_dir=self.cache_dir, out_ext=".tif", make_png=make_png, make_kmz=make_kmz, *args, **kwargs)
|
wolfhece/rem/RasterViz.py
CHANGED
@@ -1,13 +1,3 @@
|
|
1
|
-
"""
|
2
|
-
Author: HECE - University of Liege, Pierre Archambeau
|
3
|
-
Date: 2024
|
4
|
-
|
5
|
-
Copyright (c) 2024 University of Liege. All rights reserved.
|
6
|
-
|
7
|
-
This script and its content are protected by copyright law. Unauthorized
|
8
|
-
copying or distribution of this file, via any medium, is strictly prohibited.
|
9
|
-
"""
|
10
|
-
|
11
1
|
#!/usr/bin/env python
|
12
2
|
import os
|
13
3
|
import sys
|
@@ -26,46 +16,46 @@ This script can be called from Python using its class/methods or as a CLI utilit
|
|
26
16
|
|
27
17
|
CLI Usage:
|
28
18
|
|
29
|
-
"python RasterViz.py viz_type [-z (default=1)] [-alt (default=45)] [-azim (default=315)] [-multidirectional]
|
30
|
-
[-cmap (default=terrain)] [-out_ext tif | img (default=tif)] [-make_png] [-make_kmz] [-docker] [-shell]
|
19
|
+
"python RasterViz.py viz_type [-z (default=1)] [-alt (default=45)] [-azim (default=315)] [-multidirectional]
|
20
|
+
[-cmap (default=terrain)] [-out_ext tif | img (default=tif)] [-make_png] [-make_kmz] [-docker] [-shell]
|
31
21
|
/path/to/dem"
|
32
22
|
|
33
23
|
Options:
|
34
|
-
|
35
|
-
viz_type: string corresponding to raster product to be produced, one of the following strings:
|
24
|
+
|
25
|
+
viz_type: string corresponding to raster product to be produced, one of the following strings:
|
36
26
|
["hillshade", "slope", "aspect", "roughness", "color-relief", "hillshade-color"]
|
37
|
-
|
27
|
+
|
38
28
|
-z: only if using "hillshade" or "hillshade-color" viz_type,
|
39
29
|
factor to scale/exaggerate vertical topographic differences. Default 1 (no rescale).
|
40
|
-
|
41
|
-
-alt: only if using "hillshade" or "hillshade-color" viz_type,
|
30
|
+
|
31
|
+
-alt: only if using "hillshade" or "hillshade-color" viz_type,
|
42
32
|
altitude of light source in degrees [0-90]. Default 45.
|
43
|
-
|
44
|
-
-azim: only if using "hillshade" or "hillshade-color" viz_type,
|
33
|
+
|
34
|
+
-azim: only if using "hillshade" or "hillshade-color" viz_type,
|
45
35
|
azimuth of light source in degrees [0-360]. Default 315.
|
46
|
-
|
47
|
-
-multidirectional: only if using "hillshade" or "hillshade-color" viz_type.
|
36
|
+
|
37
|
+
-multidirectional: only if using "hillshade" or "hillshade-color" viz_type.
|
48
38
|
Makes multidirectional hillshade, overriding alt and azim args.
|
49
|
-
|
39
|
+
|
50
40
|
-cmap: only if using "color-relief" viz_type, name of a matplotlib or seaborn colormap. Default "terrain".
|
51
41
|
(see https://matplotlib.org/stable/gallery/color/colormap_reference.html)
|
52
|
-
|
42
|
+
|
53
43
|
-out_ext: the extension/file format to use for geodata outputs (tif or img). Default "tif".
|
54
|
-
|
44
|
+
|
55
45
|
-make_png: output a png version (EPSG:3857) of the viz_type in addition to the viz raster in source projection.
|
56
|
-
|
46
|
+
|
57
47
|
-make_kmz: output a kmz version of the viz_type in addition to the viz raster in source projection.
|
58
|
-
|
48
|
+
|
59
49
|
-docker: run GDAL commands from within the osgeo/gdal docker container. This makes it run slightly slower but will
|
60
50
|
be needed to run all features if gdal install is on a version <2.2. If using docker, input path must be
|
61
51
|
within the working directory path or a subdirectory.
|
62
|
-
|
52
|
+
|
63
53
|
-shell: call GDAL functions (gdaldem, gdal_translate, gdalwarp) as shell commands instead of using Python bindings.
|
64
54
|
This may be faster than using pure Python but requires additional environment configuration.
|
65
55
|
|
66
56
|
/path/to/dem.tif: path to input DEM, currently assumed to be in GeoTIFF format.
|
67
57
|
|
68
|
-
Notes: Output file naming convention uses the DEM basename as a prefix, then viz_type and file extension.
|
58
|
+
Notes: Output file naming convention uses the DEM basename as a prefix, then viz_type and file extension.
|
69
59
|
E.g. output.tin.tif --> output_hillshade.tif, output_hillshade.png, output_hillshade.kmz.
|
70
60
|
Outputs are saved to the working directory.
|
71
61
|
|
wolfhece/wolf_array.py
CHANGED
@@ -95,6 +95,39 @@ WOLF_ARRAY_MB = [WOLF_ARRAY_MB_SINGLE, WOLF_ARRAY_MB_INTEGER, WOLF_ARRAY_MNAP_IN
|
|
95
95
|
|
96
96
|
VERSION_RGB = 2
|
97
97
|
|
98
|
+
from numba import jit
|
99
|
+
|
100
|
+
@jit(nopython=True)
|
101
|
+
def custom_gradient(array: np.ndarray):
|
102
|
+
""" Calculate the gradient manually """
|
103
|
+
grad_x = np.zeros_like(array)
|
104
|
+
grad_y = np.zeros_like(array)
|
105
|
+
|
106
|
+
for i in range(1, array.shape[0] - 1):
|
107
|
+
for j in range(1, array.shape[1] - 1):
|
108
|
+
grad_x[i, j] = (array[i + 1, j] - array[i - 1, j]) / 2.0
|
109
|
+
grad_y[i, j] = (array[i, j + 1] - array[i, j - 1]) / 2.0
|
110
|
+
|
111
|
+
return grad_x, grad_y
|
112
|
+
|
113
|
+
@jit(nopython=True)
|
114
|
+
def hillshade(array:np.ndarray, azimuth:float, angle_altitude:float) -> np.ndarray:
|
115
|
+
""" Create a hillshade array """
|
116
|
+
|
117
|
+
azimuth = 360.0 - azimuth
|
118
|
+
|
119
|
+
x, y = custom_gradient(array)
|
120
|
+
slope = np.pi / 2. - np.arctan(np.sqrt(x * x + y * y))
|
121
|
+
aspect = np.arctan2(-x, y)
|
122
|
+
azimuthrad = azimuth * np.pi / 180.
|
123
|
+
altituderad = angle_altitude * np.pi / 180.
|
124
|
+
|
125
|
+
shaded = np.sin(altituderad) * np.sin(slope) + np.cos(altituderad) * \
|
126
|
+
np.cos(slope) * np.cos((azimuthrad - np.pi / 2.) - aspect)
|
127
|
+
shaded += 1.
|
128
|
+
shaded *= .5
|
129
|
+
|
130
|
+
return shaded.astype(np.float32)
|
98
131
|
class Rebin_Ops(Enum):
|
99
132
|
MIN = 0
|
100
133
|
MEAN = 1
|
@@ -5757,23 +5790,10 @@ class WolfArray(Element_To_Draw, header_wolf):
|
|
5757
5790
|
return mytri, znull
|
5758
5791
|
|
5759
5792
|
def hillshade(self, azimuth:float, angle_altitude:float):
|
5760
|
-
""" Create a hillshade array """
|
5761
|
-
|
5762
|
-
azimuth = 360.0 - azimuth
|
5763
|
-
|
5764
|
-
x, y = np.gradient(self.array)
|
5765
|
-
slope = np.pi / 2. - np.arctan(np.sqrt(x * x + y * y))
|
5766
|
-
aspect = np.arctan2(-x, y)
|
5767
|
-
azimuthrad = azimuth * np.pi / 180.
|
5768
|
-
altituderad = angle_altitude * np.pi / 180.
|
5769
|
-
|
5770
|
-
shaded = np.sin(altituderad) * np.sin(slope) + np.cos(altituderad) * np.cos(slope) * np.cos(
|
5771
|
-
(azimuthrad - np.pi / 2.) - aspect)
|
5772
|
-
shaded += 1.
|
5773
|
-
shaded *= .5
|
5793
|
+
""" Create a hillshade array -- see "hillshade" function accelerated by JIT"""
|
5774
5794
|
|
5775
5795
|
self.shaded.set_header(self.get_header())
|
5776
|
-
self.shaded.array =
|
5796
|
+
self.shaded.array = hillshade(self.array.data, azimuth, angle_altitude)
|
5777
5797
|
self.shaded.delete_lists()
|
5778
5798
|
|
5779
5799
|
def get_gradient_norm(self):
|
@@ -7616,20 +7636,22 @@ class WolfArray(Element_To_Draw, header_wolf):
|
|
7616
7636
|
WOLF_ARRAY_FULL_INTEGER16,
|
7617
7637
|
WOLF_ARRAY_FULL_INTEGER16_2,
|
7618
7638
|
WOLF_ARRAY_FULL_INTEGER,
|
7619
|
-
WOLF_ARRAY_FULL_DOUBLE
|
7639
|
+
WOLF_ARRAY_FULL_DOUBLE,
|
7640
|
+
WOLF_ARRAY_HILLSHAPE]:
|
7620
7641
|
# FIXME: Currently, only some types are supported in Cython/OpenGL library
|
7621
7642
|
self._tmp_float32 = self.array.astype(dtype=np.float32)
|
7622
7643
|
else:
|
7623
7644
|
self._tmp_float32 = None
|
7624
7645
|
|
7625
7646
|
|
7626
|
-
|
7627
|
-
|
7628
|
-
|
7629
|
-
|
7630
|
-
|
7631
|
-
|
7632
|
-
|
7647
|
+
if VERSION_RGB==1 :
|
7648
|
+
if self.shading:
|
7649
|
+
pond = (self.shaded.array-.5)*2.
|
7650
|
+
pmin = (1. - self.shaded.alpha) * self.rgb
|
7651
|
+
pmax = self.shaded.alpha * np.ones(self.rgb.shape) + (1. - self.shaded.alpha) * self.rgb
|
7652
|
+
for i in range(4):
|
7653
|
+
self.rgb[pond<0,i] = self.rgb[pond<0,i] * (1.+pond[pond<0]) - pmin[pond<0,i] * pond[pond<0]
|
7654
|
+
self.rgb[pond>0,i] = self.rgb[pond>0,i] * (1.-pond[pond>0]) + pmax[pond>0,i] * pond[pond>0]
|
7633
7655
|
|
7634
7656
|
if VERSION_RGB==1 : self.rgb[self.array.mask] = [1., 1., 1., 0.]
|
7635
7657
|
|
@@ -7719,11 +7741,15 @@ class WolfArray(Element_To_Draw, header_wolf):
|
|
7719
7741
|
|
7720
7742
|
if self.wolftype != WOLF_ARRAY_HILLSHAPE and self.shading:
|
7721
7743
|
self.hillshade(self.azimuthhill, self.altitudehill)
|
7722
|
-
|
7723
|
-
|
7744
|
+
|
7745
|
+
if VERSION_RGB==1 :
|
7746
|
+
self.updatepalette(0)
|
7747
|
+
self.shaded.updatepalette(0)
|
7748
|
+
|
7724
7749
|
self.shading=False
|
7725
7750
|
if self.mapviewer is not None:
|
7726
|
-
|
7751
|
+
from .PyDraw import draw_type
|
7752
|
+
if not self.idx + '_hillshade' in self.mapviewer.get_list_keys(drawing_type=draw_type.ARRAYS, checked_state= None) :# .added['arrays'].keys():
|
7727
7753
|
self.mapviewer.add_object('array', newobj=self.shaded, ToCheck=True, id=self.idx + '_hillshade')
|
7728
7754
|
|
7729
7755
|
try:
|
@@ -7739,12 +7765,14 @@ class WolfArray(Element_To_Draw, header_wolf):
|
|
7739
7765
|
mylist = self.mygrid[cursize]['mylists'][i, j]
|
7740
7766
|
if mylist > 0:
|
7741
7767
|
glCallList(self.mygrid[cursize]['mylists'][i, j])
|
7742
|
-
except:
|
7743
|
-
|
7768
|
+
except Exception as e:
|
7769
|
+
logging.error(_('OpenGL error in WolfArray.plot 1 -- Please report this case with the data file and the context in which the error occured'))
|
7770
|
+
logging.error(e)
|
7744
7771
|
|
7745
7772
|
glDisable(GL_BLEND)
|
7746
|
-
except:
|
7747
|
-
logging.error(_('OpenGL error in WolfArray.plot -- Please report this case with the data file and the context in which the error occured'))
|
7773
|
+
except Exception as e:
|
7774
|
+
logging.error(_('OpenGL error in WolfArray.plot 2 -- Please report this case with the data file and the context in which the error occured'))
|
7775
|
+
logging.error(e)
|
7748
7776
|
|
7749
7777
|
self.plotting = False
|
7750
7778
|
|
@@ -7793,9 +7821,7 @@ class WolfArray(Element_To_Draw, header_wolf):
|
|
7793
7821
|
def fillonecellgrid(self, curscale, loci, locj, force=False):
|
7794
7822
|
""" Fill one cell of the plotted grid """
|
7795
7823
|
|
7796
|
-
|
7797
|
-
|
7798
|
-
cursize = curscale # 2**curscale
|
7824
|
+
cursize = curscale
|
7799
7825
|
|
7800
7826
|
if not cursize in self.mygrid.keys():
|
7801
7827
|
return
|
@@ -7875,22 +7901,28 @@ class WolfArray(Element_To_Draw, header_wolf):
|
|
7875
7901
|
elif self.nbnotnull > 0:
|
7876
7902
|
wolfogl.addmeall_double_pal(self.array, self.mypal.colorsflt, self.mypal.values, ox, oy, dx, dy, jstart,
|
7877
7903
|
jend, istart, iend, cursize, self.nullvalue, self.alpha, int(self.mypal.interval_cst))
|
7878
|
-
elif self.wolftype
|
7904
|
+
elif self.wolftype not in [WOLF_ARRAY_FULL_SINGLE, WOLF_ARRAY_HILLSHAPE]:
|
7879
7905
|
if self.nbnotnull != self.nbx * self.nby:
|
7880
7906
|
if self.nbnotnull > 0:
|
7881
7907
|
wolfogl.addme_pal(self._tmp_float32, self.mypal.colorsflt, self.mypal.values, ox, oy, dx, dy, jstart,
|
7882
|
-
jend, istart, iend, cursize, self.nullvalue, self.alpha, int(self.mypal.interval_cst))
|
7908
|
+
jend, istart, iend, cursize, self.nullvalue, self.alpha, int(self.mypal.interval_cst), -1.)
|
7883
7909
|
elif self.nbnotnull > 0:
|
7884
7910
|
wolfogl.addmeall_pal(self._tmp_float32, self.mypal.colorsflt, self.mypal.values, ox, oy, dx, dy, jstart,
|
7885
|
-
jend, istart, iend, cursize, self.nullvalue, self.alpha, int(self.mypal.interval_cst))
|
7911
|
+
jend, istart, iend, cursize, self.nullvalue, self.alpha, int(self.mypal.interval_cst), -1.)
|
7886
7912
|
else:
|
7913
|
+
clr_float = self.mypal.colorsflt.copy()
|
7914
|
+
clr_float[:,3] = self.alpha
|
7915
|
+
if '_hillshade' in self.idx:
|
7916
|
+
clr_float[1,3] = 0.
|
7917
|
+
|
7887
7918
|
if self.nbnotnull != self.nbx * self.nby:
|
7888
7919
|
if self.nbnotnull > 0:
|
7889
|
-
|
7890
|
-
|
7920
|
+
|
7921
|
+
wolfogl.addme_pal(self.array, clr_float, self.mypal.values, ox, oy, dx, dy, jstart, jend, istart, iend, cursize,
|
7922
|
+
self.nullvalue, self.alpha, int(self.mypal.interval_cst), -1.)
|
7891
7923
|
elif self.nbnotnull > 0:
|
7892
|
-
wolfogl.addmeall_pal(self.array,
|
7893
|
-
self.nullvalue, self.alpha, int(self.mypal.interval_cst))
|
7924
|
+
wolfogl.addmeall_pal(self.array, clr_float, self.mypal.values, ox, oy, dx, dy, jstart, jend, istart, iend, cursize,
|
7925
|
+
self.nullvalue, self.alpha, int(self.mypal.interval_cst), -1.)
|
7894
7926
|
|
7895
7927
|
except Exception as e:
|
7896
7928
|
logging.error(repr(e))
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: wolfhece
|
3
|
-
Version: 2.1.
|
3
|
+
Version: 2.1.51
|
4
4
|
Author-email: Pierre Archambeau <pierre.archambeau@uliege.be>
|
5
5
|
License: Copyright (c) 2024 University of Liege. All rights reserved.
|
6
6
|
Project-URL: Homepage, https://uee.uliege.be/hece
|
@@ -13,14 +13,14 @@ Classifier: Topic :: Scientific/Engineering :: Physics
|
|
13
13
|
Requires-Python: <3.11,>=3.10
|
14
14
|
Description-Content-Type: text/markdown
|
15
15
|
Requires-Dist: wxpython
|
16
|
-
Requires-Dist: colorlog
|
16
|
+
Requires-Dist: colorlog==6.7.*
|
17
17
|
Requires-Dist: intel-fortran-rt
|
18
18
|
Requires-Dist: scikit-learn
|
19
19
|
Requires-Dist: cryptography
|
20
|
-
Requires-Dist: jax
|
20
|
+
Requires-Dist: jax==0.4.30
|
21
21
|
Requires-Dist: triangle
|
22
|
-
Requires-Dist: numpy
|
23
|
-
Requires-Dist: pyopengl
|
22
|
+
Requires-Dist: numpy==1.23.*
|
23
|
+
Requires-Dist: pyopengl==3.1.*
|
24
24
|
Requires-Dist: pandas
|
25
25
|
Requires-Dist: geopandas
|
26
26
|
Requires-Dist: scipy
|
@@ -33,7 +33,7 @@ Requires-Dist: graphviz
|
|
33
33
|
Requires-Dist: beautifulsoup4
|
34
34
|
Requires-Dist: requests
|
35
35
|
Requires-Dist: notebook
|
36
|
-
Requires-Dist: matplotlib
|
36
|
+
Requires-Dist: matplotlib==3.6.*
|
37
37
|
Requires-Dist: mkl
|
38
38
|
Requires-Dist: python-gettext
|
39
39
|
Requires-Dist: shapely
|
@@ -49,10 +49,10 @@ Requires-Dist: python-docx
|
|
49
49
|
Requires-Dist: pygltflib
|
50
50
|
Requires-Dist: ezdxf
|
51
51
|
Requires-Dist: pyvista
|
52
|
-
Requires-Dist: tqdm
|
52
|
+
Requires-Dist: tqdm==4.64.*
|
53
53
|
Requires-Dist: osmnx
|
54
54
|
Requires-Dist: tifffile
|
55
|
-
Requires-Dist: numba
|
55
|
+
Requires-Dist: numba==0.58.*
|
56
56
|
Requires-Dist: xmltodict
|
57
57
|
Requires-Dist: opencv-python
|
58
58
|
Requires-Dist: xarray
|
@@ -11,7 +11,7 @@ wolfhece/PyDraw.py,sha256=_Rfx59LMopR0Cx00d1RRF5Gb-WNxfA2v2RjkOfm84Yo,390847
|
|
11
11
|
wolfhece/PyGui.py,sha256=aRWv9tBpRl7sKEd2gHWj8Bss0ZOKbGlUYIehWHFm8WY,105008
|
12
12
|
wolfhece/PyGuiHydrology.py,sha256=f60E8K9eGTnRq5RDF6yvt-ahf2AYegwQ9t25zZ2Mk1A,14946
|
13
13
|
wolfhece/PyHydrographs.py,sha256=jwtSNMMACwarxrtN1UeQYth99UNrhwPx1IGgUwcooHA,3774
|
14
|
-
wolfhece/PyPalette.py,sha256=
|
14
|
+
wolfhece/PyPalette.py,sha256=3ehK6H2PvqSe0zICR1HyNs6KQokR1DmnAh4LwYnLIcU,28009
|
15
15
|
wolfhece/PyParams.py,sha256=wwgmP-_7wiiPLTcyX8a5jR6FyC1D2c4oBPc1VWQqtSA,97383
|
16
16
|
wolfhece/PyPictures.py,sha256=m1kY0saW6Y9Q0bDCo47lW6XxDkBrbQG-Fd8uVn8G5ic,2514
|
17
17
|
wolfhece/PyTranslate.py,sha256=4appkmNeHHZLFmUtaA_k5_5QL-5ymxnbVN4R2OblmtE,622
|
@@ -48,7 +48,7 @@ wolfhece/pywalous.py,sha256=yRaWJjKckXef1d9D5devP0yFHC9uc6kRV4G5x9PNq9k,18972
|
|
48
48
|
wolfhece/rain_SPWMI.py,sha256=qCfcmF7LajloOaCwnTrrSMzyME03YyilmRUOqrPrv3U,13846
|
49
49
|
wolfhece/textpillow.py,sha256=map7HsGYML_o5NHRdFg2s_TVQed_lDnpYNDv27MM0Vw,14130
|
50
50
|
wolfhece/tools_mpl.py,sha256=gQ3Jg1iuZiecmMqa5Eli2ZLSkttu68VXL8YmMDBaEYU,564
|
51
|
-
wolfhece/wolf_array.py,sha256
|
51
|
+
wolfhece/wolf_array.py,sha256=-8D5YtLIC79-mk7LcRsOQ6fFRMBoUAc_p3ulrxxaiEc,370408
|
52
52
|
wolfhece/wolf_hist.py,sha256=7jeVrgSkM3ErJO6SRMH_PGzfLjIdw8vTy87kesldggk,3582
|
53
53
|
wolfhece/wolf_texture.py,sha256=DS5eobLxrq9ljyebYfpMSQPn8shkUAZZVfqrOKN_QUU,16951
|
54
54
|
wolfhece/wolf_tiles.py,sha256=2Ho2I20rHRY81KXxjgLOYISdF4OkJ2d6omeY4shDoGI,10386
|
@@ -72,7 +72,7 @@ wolfhece/apps/check_install.py,sha256=SG024u18G7VRLKynbp7DKD1jImtHwuWwN4bJWHm-YH
|
|
72
72
|
wolfhece/apps/curvedigitizer.py,sha256=_hRR2PWow7PU7rTHIbc6ykZ08tCXcK9uy7RFrb4EKkE,5196
|
73
73
|
wolfhece/apps/isocurrent.py,sha256=MuwTodHxdc6PrqNpphR2ntYf1NLL2n9klTPndGrOHDQ,4109
|
74
74
|
wolfhece/apps/splashscreen.py,sha256=SrustmIQeXnsiD-92OzjdGhBi-S7c_j-cSvuX4T6rtg,2929
|
75
|
-
wolfhece/apps/version.py,sha256=
|
75
|
+
wolfhece/apps/version.py,sha256=v7Yu3aHd9cB-wNpcJSWRz8Ru3iyXgqym6gfyLAymfjE,388
|
76
76
|
wolfhece/apps/wolf.py,sha256=mM6Tyi4DlKQILmO49cDUCip9fYVy-hLXkY3YhZgIeUQ,591
|
77
77
|
wolfhece/apps/wolf2D.py,sha256=yPQGee7fsegoQ8GfWKrWEjX1Az_ApL-UWlBiqPvaIyY,565
|
78
78
|
wolfhece/apps/wolf_logo.bmp,sha256=ruJ4MA51CpGO_AYUp_dB4SWKHelvhOvd7Q8NrVOjDJk,3126
|
@@ -191,7 +191,7 @@ wolfhece/libs/vcomp100.dll,sha256=NKvXc8hc4MrFa9k8ErALA6OmldGfR3zidaZPCZhMVJI,57
|
|
191
191
|
wolfhece/libs/vcruntime140.dll,sha256=gPBsB0DzEBn3b7E5ihESs-AtG4Cu59OnONR1QI17TGA,98720
|
192
192
|
wolfhece/libs/vcruntime140_1.dll,sha256=KZJoe26L6i76Krqne_OribgfhN6LxJQEcs0Xn_01hP8,38304
|
193
193
|
wolfhece/libs/verify_wolf.cp310-win_amd64.pyd,sha256=Cej6r7o8cOF58sXs97kjPN4ddd-ZjDyYZ_WkR0Nmivo,128512
|
194
|
-
wolfhece/libs/wolfogl.cp310-win_amd64.pyd,sha256=
|
194
|
+
wolfhece/libs/wolfogl.cp310-win_amd64.pyd,sha256=l2ZpPh_dGLWcvYxM0BdLHhfSYrLhQI5rT59rRwyQjCY,296448
|
195
195
|
wolfhece/libs/wolfpy.cp310-win_amd64.pyd,sha256=6omqEaxmQll-Gg24e90wVomAB9rO_tyyOES2FewXn58,36457472
|
196
196
|
wolfhece/libs/zlib1.dll,sha256=E9a0e62VgmG1A8ohZzhVCmmfGtbyXxXu4aFeADTNJ30,77824
|
197
197
|
wolfhece/libs/GL/gl.h,sha256=IhsS_fOLa8GW9MpiLZebe9QYRy6uIB_qK_uQMWMOoeg,46345
|
@@ -247,8 +247,8 @@ wolfhece/pythonfortran/example_numpy_memory.py,sha256=o3hzJDw7YtE4v0FXI3-l2VzupC
|
|
247
247
|
wolfhece/pythonfortran/tools.py,sha256=oYh9MguRYEGNGKVbHqQW2V9okZJLs3n4Qs-vLWPmBe4,2462
|
248
248
|
wolfhece/radar/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
249
249
|
wolfhece/radar/wolfradar.py,sha256=mvsVf6-4KCqVF6kWsKfPuM7KPqRdYHuIZAbb8kzXAZU,10032
|
250
|
-
wolfhece/rem/REMMaker.py,sha256=
|
251
|
-
wolfhece/rem/RasterViz.py,sha256=
|
250
|
+
wolfhece/rem/REMMaker.py,sha256=k1kOb_69kNw00HRPbTc_E2XTypiyV0mADDbW5etkBAs,31079
|
251
|
+
wolfhece/rem/RasterViz.py,sha256=fnyMfAJZDoS-rjagsNRGLndS-UYNUzMY4DgenjD3Y_4,29068
|
252
252
|
wolfhece/rem/__init__.py,sha256=S2-J5uEGK_VaMFjRUYFIdSScJjZyuXH4RmMmnG3OG7I,19
|
253
253
|
wolfhece/report/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
254
254
|
wolfhece/report/reporting.py,sha256=JUEXovx_S4jpYkJEBU0AC-1Qw2OkkWyV3VAp6iOfSHc,19494
|
@@ -278,8 +278,8 @@ wolfhece/ui/wolf_multiselection_collapsiblepane.py,sha256=8PlMYrb_8jI8h9F0_EagpM
|
|
278
278
|
wolfhece/ui/wolf_times_selection_comparison_models.py,sha256=ORy7fz4dcp691qKzaOZHrRLZ0uXNhL-LIHxmpDGL6BI,5007
|
279
279
|
wolfhece/wintab/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
280
280
|
wolfhece/wintab/wintab.py,sha256=8A-JNONV6ujgsgG3lM5Uw-pVgglPATwKs86oBzzljoc,7179
|
281
|
-
wolfhece-2.1.
|
282
|
-
wolfhece-2.1.
|
283
|
-
wolfhece-2.1.
|
284
|
-
wolfhece-2.1.
|
285
|
-
wolfhece-2.1.
|
281
|
+
wolfhece-2.1.51.dist-info/METADATA,sha256=QE7DXFrJsneMtWd4s8LYYAPYtycGTAGsF3RYO8exoSo,2541
|
282
|
+
wolfhece-2.1.51.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
|
283
|
+
wolfhece-2.1.51.dist-info/entry_points.txt,sha256=Q5JuIWV4odeIJI3qc6fV9MwRoz0ezqPVlFC1Ppm_vdQ,395
|
284
|
+
wolfhece-2.1.51.dist-info/top_level.txt,sha256=EfqZXMVCn7eILUzx9xsEu2oBbSo9liWPFWjIHik0iCI,9
|
285
|
+
wolfhece-2.1.51.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|