mirror of https://gitlab.com/pamhyr/pamhyr2
Compare commits
5 Commits
e19c3229bd
...
32cbc6bc3e
| Author | SHA1 | Date |
|---|---|---|
|
|
32cbc6bc3e | |
|
|
7d7a05c04c | |
|
|
6ac268b668 | |
|
|
19c72892a8 | |
|
|
9717968e08 |
|
|
@ -386,26 +386,26 @@ class Mage(CommandLineSolver):
|
||||||
return files
|
return files
|
||||||
|
|
||||||
def _export_LC(self, study, lateral, f, qlog, name="0"):
|
def _export_LC(self, study, lateral, f, qlog, name="0"):
|
||||||
if lateral.edge is None:
|
if lateral.reach is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
if lateral.is_deleted():
|
if lateral.is_deleted():
|
||||||
return
|
return
|
||||||
|
|
||||||
edges = study.river.enable_edges()
|
edges = study.river.enable_edges()
|
||||||
if lateral.edge not in edges:
|
if lateral.reach not in edges:
|
||||||
return
|
return
|
||||||
|
|
||||||
eid, _ = next(
|
eid, _ = next(
|
||||||
filter(
|
filter(
|
||||||
lambda e: e[1] == lateral.edge,
|
lambda e: e[1] == lateral.reach,
|
||||||
enumerate(edges)
|
enumerate(edges)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
name = f"{eid+1:>3}"
|
name = f"{eid+1:>3}"
|
||||||
# name = f"Reach_{lateral.edge.id + 1:>3}".replace(" ", "0")
|
# name = f"Reach_{lateral.reach.id + 1:>3}".replace(" ", "0")
|
||||||
f.write(f"* {lateral.edge.name} ({name}) {lateral.lctype}\n")
|
f.write(f"* {lateral.reach.name} ({name}) {lateral.lctype}\n")
|
||||||
f.write(
|
f.write(
|
||||||
f"${name} " +
|
f"${name} " +
|
||||||
f"{lateral.begin_rk:>10.4f} {lateral.end_rk:>10.4f}\n"
|
f"{lateral.begin_rk:>10.4f} {lateral.end_rk:>10.4f}\n"
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ import logging
|
||||||
from functools import reduce
|
from functools import reduce
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
from tools import timer, trace
|
from tools import timer, trace, logger_exception
|
||||||
from View.Tools.PamhyrPlot import PamhyrPlot
|
from View.Tools.PamhyrPlot import PamhyrPlot
|
||||||
|
|
||||||
from PyQt5.QtCore import (
|
from PyQt5.QtCore import (
|
||||||
|
|
@ -68,6 +68,7 @@ class PlotH(PamhyrPlot):
|
||||||
|
|
||||||
self._line_max = []
|
self._line_max = []
|
||||||
self._line = []
|
self._line = []
|
||||||
|
self._add_data_lines = []
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def results(self):
|
def results(self):
|
||||||
|
|
@ -117,15 +118,17 @@ class PlotH(PamhyrPlot):
|
||||||
|
|
||||||
self.set_ticks_time_formater()
|
self.set_ticks_time_formater()
|
||||||
|
|
||||||
|
self.draw_additional_data(0)
|
||||||
|
|
||||||
self.enable_legend()
|
self.enable_legend()
|
||||||
|
|
||||||
self.canvas.draw_idle()
|
self.canvas.draw_idle()
|
||||||
self.update_idle
|
self.update_idle()
|
||||||
|
|
||||||
self.draw_current()
|
self.draw_current()
|
||||||
self._init = True
|
self._init = True
|
||||||
|
|
||||||
def draw_data(self, res_id):
|
def draw_data(self, res_id):
|
||||||
|
|
||||||
results = self.results[res_id]
|
results = self.results[res_id]
|
||||||
reach = results.river.reach(self._current_reach_id)
|
reach = results.river.reach(self._current_reach_id)
|
||||||
for i, p in enumerate(self._current_profile_id):
|
for i, p in enumerate(self._current_profile_id):
|
||||||
|
|
@ -152,6 +155,28 @@ class PlotH(PamhyrPlot):
|
||||||
)
|
)
|
||||||
self._line.append(line)
|
self._line.append(line)
|
||||||
|
|
||||||
|
def draw_additional_data(self, res_id):
|
||||||
|
results = self.results[res_id]
|
||||||
|
|
||||||
|
self._add_data_lines = []
|
||||||
|
|
||||||
|
for data in results.get("additional_data"):
|
||||||
|
data = data._data
|
||||||
|
x, y = data['x'], data['y']
|
||||||
|
legend = data['legend']
|
||||||
|
unit = data['unit']
|
||||||
|
|
||||||
|
if data['type_x'] == 'time' and data['type_y'] == 'discharge':
|
||||||
|
line, = self.canvas.axes.plot(
|
||||||
|
x, y, marker="+",
|
||||||
|
label=legend + ' ' + unit
|
||||||
|
)
|
||||||
|
|
||||||
|
self._add_data_lines.append(line)
|
||||||
|
|
||||||
|
self.enable_legend()
|
||||||
|
self.canvas.draw_idle()
|
||||||
|
|
||||||
def draw_current(self):
|
def draw_current(self):
|
||||||
self._current, = self.canvas.axes.plot(
|
self._current, = self.canvas.axes.plot(
|
||||||
[self._current_timestamp, self._current_timestamp],
|
[self._current_timestamp, self._current_timestamp],
|
||||||
|
|
@ -220,6 +245,10 @@ class PlotH(PamhyrPlot):
|
||||||
self.update_current()
|
self.update_current()
|
||||||
self.update_idle()
|
self.update_idle()
|
||||||
|
|
||||||
|
def update_additional_data(self):
|
||||||
|
self.draw_additional_data(0)
|
||||||
|
self.update_idle()
|
||||||
|
|
||||||
def update_all(self):
|
def update_all(self):
|
||||||
self._current_reach_id = self._parent._get_current_reach()
|
self._current_reach_id = self._parent._get_current_reach()
|
||||||
self._current_profile_id = self._parent._get_current_profiles_list()
|
self._current_profile_id = self._parent._get_current_profiles_list()
|
||||||
|
|
|
||||||
|
|
@ -210,6 +210,29 @@ class PlotRKC(PamhyrPlot):
|
||||||
linestyle='dotted',
|
linestyle='dotted',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def draw_additional_data(self, res_id):
|
||||||
|
results = self.results[res_id]
|
||||||
|
|
||||||
|
self._add_data_lines = []
|
||||||
|
|
||||||
|
for data in results.get("additional_data"):
|
||||||
|
data = data._data
|
||||||
|
|
||||||
|
tx, ty = data['type_x'], data['type_y']
|
||||||
|
x, y = data['x'], data['y']
|
||||||
|
legend = data['legend']
|
||||||
|
unit = data['unit']
|
||||||
|
|
||||||
|
if tx == 'water_elevation' and ty == 'time':
|
||||||
|
line, = self.canvas.axes.plot(
|
||||||
|
x, y, marker="+",
|
||||||
|
label=legend + ' ' + unit
|
||||||
|
)
|
||||||
|
|
||||||
|
self._add_data_lines.append(line)
|
||||||
|
|
||||||
|
self.canvas.draw_idle()
|
||||||
|
|
||||||
def draw_current(self, reach):
|
def draw_current(self, reach):
|
||||||
rk = reach.geometry.get_rk()
|
rk = reach.geometry.get_rk()
|
||||||
z_min = reach.geometry.get_z_min()
|
z_min = reach.geometry.get_z_min()
|
||||||
|
|
@ -332,6 +355,10 @@ class PlotRKC(PamhyrPlot):
|
||||||
alpha=0.7, interpolate=True
|
alpha=0.7, interpolate=True
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def update_additional_data(self):
|
||||||
|
self.draw_additional_data(0)
|
||||||
|
self.update_idle()
|
||||||
|
|
||||||
def update_current(self):
|
def update_current(self):
|
||||||
results = self.results[self._current_res_id]
|
results = self.results[self._current_res_id]
|
||||||
reach = results.river.reach(self._current_reach_id)
|
reach = results.river.reach(self._current_reach_id)
|
||||||
|
|
|
||||||
|
|
@ -68,6 +68,9 @@ class PlotXY(PamhyrPlot):
|
||||||
|
|
||||||
self._plot_img = {}
|
self._plot_img = {}
|
||||||
|
|
||||||
|
self._geotiff_img = []
|
||||||
|
self._geotiff_bounds = []
|
||||||
|
|
||||||
self._parent = parent
|
self._parent = parent
|
||||||
self._timestamps = parent._timestamps
|
self._timestamps = parent._timestamps
|
||||||
self._current_timestamp = max(self._timestamps)
|
self._current_timestamp = max(self._timestamps)
|
||||||
|
|
@ -203,7 +206,6 @@ class PlotXY(PamhyrPlot):
|
||||||
self.canvas.axes.add_collection(self.line_xy_collection)
|
self.canvas.axes.add_collection(self.line_xy_collection)
|
||||||
|
|
||||||
def draw_other_profiles(self, reaches):
|
def draw_other_profiles(self, reaches):
|
||||||
|
|
||||||
for reach in reaches:
|
for reach in reaches:
|
||||||
for xy in zip(reach.geometry.get_x(),
|
for xy in zip(reach.geometry.get_x(),
|
||||||
reach.geometry.get_y()):
|
reach.geometry.get_y()):
|
||||||
|
|
@ -325,6 +327,24 @@ class PlotXY(PamhyrPlot):
|
||||||
alpha=0.7
|
alpha=0.7
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def add_geotiff(self, img, bounds):
|
||||||
|
self._geotiff_img.append(img)
|
||||||
|
self._geotiff_bounds.append(bounds)
|
||||||
|
|
||||||
|
def draw_add_geotiff(self):
|
||||||
|
xlim = self.canvas.axes.get_xlim()
|
||||||
|
ylim = self.canvas.axes.get_ylim()
|
||||||
|
|
||||||
|
for i, img in enumerate(self._geotiff_img):
|
||||||
|
bounds = self._geotiff_bounds[i]
|
||||||
|
|
||||||
|
self.canvas.axes.imshow(img.transpose((1, 2, 0)),
|
||||||
|
extent=bounds)
|
||||||
|
|
||||||
|
self.idle()
|
||||||
|
self.canvas.axes.set_xlim(xlim)
|
||||||
|
self.canvas.axes.set_ylim(ylim)
|
||||||
|
|
||||||
def draw_geotiff(self):
|
def draw_geotiff(self):
|
||||||
if not _rasterio_loaded:
|
if not _rasterio_loaded:
|
||||||
return
|
return
|
||||||
|
|
@ -361,6 +381,7 @@ class PlotXY(PamhyrPlot):
|
||||||
if not geotiff.is_enabled():
|
if not geotiff.is_enabled():
|
||||||
self._plot_img[geotiff].set(alpha=0.5)
|
self._plot_img[geotiff].set(alpha=0.5)
|
||||||
|
|
||||||
|
self.draw_add_geotiff()
|
||||||
self.idle()
|
self.idle()
|
||||||
|
|
||||||
def set_reach(self, reach_id):
|
def set_reach(self, reach_id):
|
||||||
|
|
|
||||||
|
|
@ -1284,24 +1284,22 @@ class ResultsWindow(PamhyrWindow):
|
||||||
# b[1] bottom
|
# b[1] bottom
|
||||||
# b[2] right
|
# b[2] right
|
||||||
# b[3] top
|
# b[3] top
|
||||||
xlim = self.canvas.axes.get_xlim()
|
bounds = [b[0], b[2], b[1], b[3]]
|
||||||
ylim = self.canvas.axes.get_ylim()
|
|
||||||
if b[2] > b[0] and b[1] < b[3]:
|
if not (b[2] > b[0] and b[1] < b[3]):
|
||||||
self.canvas.axes.imshow(img.transpose((1, 2, 0)),
|
xlim = self.canvas.axes.get_xlim()
|
||||||
extent=[b[0], b[2], b[1], b[3]])
|
ylim = self.canvas.axes.get_ylim()
|
||||||
else:
|
|
||||||
dlg = CoordinatesDialog(
|
dlg = CoordinatesDialog(
|
||||||
xlim, ylim,
|
xlim, ylim,
|
||||||
trad=self._trad,
|
trad=self._trad,
|
||||||
parent=self
|
parent=self
|
||||||
)
|
)
|
||||||
if dlg.exec():
|
if dlg.exec():
|
||||||
self.canvas.axes.imshow(img.transpose((1, 2, 0)),
|
bounds = dlg.values
|
||||||
extent=dlg.values)
|
|
||||||
self.plot_xy.idle()
|
self.plot_xy.add_geotiff(img, bounds)
|
||||||
self.canvas.axes.set_xlim(xlim)
|
self.plot_xy.draw_add_geotiff()
|
||||||
self.canvas.axes.set_ylim(ylim)
|
|
||||||
return
|
|
||||||
|
|
||||||
def import_data(self):
|
def import_data(self):
|
||||||
file_types = [
|
file_types = [
|
||||||
|
|
@ -1323,6 +1321,8 @@ class ResultsWindow(PamhyrWindow):
|
||||||
|
|
||||||
x, y = self.read_csv_file_data(filename)
|
x, y = self.read_csv_file_data(filename)
|
||||||
data = self.read_csv_file_format(x, y)
|
data = self.read_csv_file_format(x, y)
|
||||||
|
if data is None:
|
||||||
|
return
|
||||||
|
|
||||||
results = self._results[self._current_results[0]]
|
results = self._results[self._current_results[0]]
|
||||||
data_lst = results.get("additional_data")
|
data_lst = results.get("additional_data")
|
||||||
|
|
@ -1396,32 +1396,9 @@ class ResultsWindow(PamhyrWindow):
|
||||||
def update_plot_additional_data(self):
|
def update_plot_additional_data(self):
|
||||||
results = self._results[self._current_results[0]]
|
results = self._results[self._current_results[0]]
|
||||||
|
|
||||||
|
self.plot_rkc.update_additional_data()
|
||||||
|
self.plot_h.update_additional_data()
|
||||||
|
|
||||||
for data in results.get("additional_data"):
|
for data in results.get("additional_data"):
|
||||||
data = data._data
|
|
||||||
x, y = data['x'], data['y']
|
|
||||||
legend = data['legend']
|
|
||||||
unit = data['unit']
|
|
||||||
|
|
||||||
if (
|
|
||||||
data['type_x'] == 'water_elevation' and
|
|
||||||
data['type_y'] == 'time'
|
|
||||||
):
|
|
||||||
line = self.canvas_2.axes.plot(
|
|
||||||
x, y, marker="+",
|
|
||||||
label=legend + ' ' + unit
|
|
||||||
)
|
|
||||||
self.plot_rkc.canvas.draw_idle()
|
|
||||||
self.plot_rkc.update_idle()
|
|
||||||
|
|
||||||
if data['type_x'] == 'time' and data['type_y'] == 'discharge':
|
|
||||||
line = self.canvas_4.axes.plot(
|
|
||||||
x, y, marker="+",
|
|
||||||
label=legend + ' ' + unit
|
|
||||||
)
|
|
||||||
self.plot_h._line.append(line)
|
|
||||||
self.plot_h.enable_legend()
|
|
||||||
self.plot_h.canvas.draw_idle()
|
|
||||||
self.plot_h.update_idle()
|
|
||||||
|
|
||||||
for p in self._additional_plot:
|
for p in self._additional_plot:
|
||||||
self._additional_plot[p].add_imported_plot(data)
|
self._additional_plot[p].add_imported_plot(data)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue