mirror of https://gitlab.com/pamhyr/pamhyr2
Results: Update plot KPC.
parent
a08b2c77d6
commit
6055065e27
|
|
@ -16,6 +16,8 @@
|
||||||
|
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import logging
|
||||||
|
|
||||||
from tools import timer
|
from tools import timer
|
||||||
from View.Tools.PamhyrPlot import PamhyrPlot
|
from View.Tools.PamhyrPlot import PamhyrPlot
|
||||||
|
|
||||||
|
|
@ -23,6 +25,8 @@ from PyQt5.QtCore import (
|
||||||
QCoreApplication
|
QCoreApplication
|
||||||
)
|
)
|
||||||
|
|
||||||
|
logger = logging.getLogger()
|
||||||
|
|
||||||
_translate = QCoreApplication.translate
|
_translate = QCoreApplication.translate
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -42,6 +46,15 @@ class PlotKPC(PamhyrPlot):
|
||||||
self._current_reach_id = reach_id
|
self._current_reach_id = reach_id
|
||||||
self._current_profile_id = profile_id
|
self._current_profile_id = profile_id
|
||||||
|
|
||||||
|
self.label_x = _translate("Results", "KP (m)")
|
||||||
|
self.label_y = _translate("Results", "Elevation (m)")
|
||||||
|
|
||||||
|
self.label_bottom = _translate("Results", "River bottom")
|
||||||
|
self.label_water = _translate("Results", "Water elevation")
|
||||||
|
self.label_water_max = _translate("Results", "Max water elevation")
|
||||||
|
|
||||||
|
self._isometric_axis = False
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def results(self):
|
def results(self):
|
||||||
return self.data
|
return self.data
|
||||||
|
|
@ -53,56 +66,83 @@ class PlotKPC(PamhyrPlot):
|
||||||
|
|
||||||
@timer
|
@timer
|
||||||
def draw(self, highlight=None):
|
def draw(self, highlight=None):
|
||||||
self.canvas.axes.cla()
|
self.init_axes()
|
||||||
self.canvas.axes.grid(color='grey', linestyle='--', linewidth=0.5)
|
|
||||||
|
|
||||||
if self.results is None:
|
if self.results is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
reach = self.results.river.reach(self._current_reach_id)
|
reach = self.results.river.reach(self._current_reach_id)
|
||||||
|
|
||||||
self.canvas.axes.set_ylabel(
|
|
||||||
_translate("MainWindow_reach", "Elevation (m)"),
|
|
||||||
color='black', fontsize=11
|
|
||||||
)
|
|
||||||
self.canvas.axes.set_xlabel(
|
|
||||||
_translate("MainWindow_reach", "KP (m)"),
|
|
||||||
color='black', fontsize=11
|
|
||||||
)
|
|
||||||
|
|
||||||
|
self.draw_bottom(reach)
|
||||||
|
self.draw_water_elevation(reach)
|
||||||
|
self.draw_water_elevation_max(reach)
|
||||||
|
self.draw_current(reach)
|
||||||
|
|
||||||
|
# self.enable_legend()
|
||||||
|
|
||||||
|
self.idle()
|
||||||
|
self._init = True
|
||||||
|
|
||||||
|
def draw_bottom(self, reach):
|
||||||
kp = reach.geometry.get_kp()
|
kp = reach.geometry.get_kp()
|
||||||
z_min = reach.geometry.get_z_min()
|
z_min = reach.geometry.get_z_min()
|
||||||
z_max = reach.geometry.get_z_max()
|
z_max = reach.geometry.get_z_max()
|
||||||
|
|
||||||
self.canvas.axes.set_xlim(
|
|
||||||
left=min(kp), right=max(kp)
|
|
||||||
)
|
|
||||||
|
|
||||||
self.line_kp_zmin = self.canvas.axes.plot(
|
self.line_kp_zmin = self.canvas.axes.plot(
|
||||||
kp, z_min,
|
kp, z_min,
|
||||||
color='grey', lw=1.
|
color=self.color_plot_river_bottom,
|
||||||
|
lw=1.
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def draw_water_elevation(self, reach):
|
||||||
if len(reach.geometry.profiles) != 0:
|
if len(reach.geometry.profiles) != 0:
|
||||||
kp = reach.geometry.get_kp()
|
kp = reach.geometry.get_kp()
|
||||||
|
z_min = reach.geometry.get_z_min()
|
||||||
|
|
||||||
# Water elevation
|
|
||||||
water_z = list(
|
water_z = list(
|
||||||
map(
|
map(
|
||||||
lambda p: p.get_ts_key(self._current_timestamp, "Z"),
|
lambda p: p.get_ts_key(
|
||||||
|
self._current_timestamp, "Z"
|
||||||
|
),
|
||||||
|
reach.profiles
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self.water = self.canvas.axes.plot(
|
||||||
|
kp, water_z,
|
||||||
|
lw=1., color=self.color_plot_river_water,
|
||||||
|
)
|
||||||
|
|
||||||
|
self.water_fill = self.canvas.axes.fill_between(
|
||||||
|
kp, z_min, water_z,
|
||||||
|
color=self.color_plot_river_water_zone,
|
||||||
|
alpha=0.7,
|
||||||
|
interpolate=True
|
||||||
|
)
|
||||||
|
|
||||||
|
def draw_water_elevation_max(self, reach):
|
||||||
|
if len(reach.geometry.profiles) != 0:
|
||||||
|
kp = reach.geometry.get_kp()
|
||||||
|
z_min = reach.geometry.get_z_min()
|
||||||
|
|
||||||
|
water_z = list(
|
||||||
|
map(
|
||||||
|
lambda p: max(p.get_key("Z")),
|
||||||
reach.profiles
|
reach.profiles
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
self.canvas.axes.plot(
|
self.canvas.axes.plot(
|
||||||
kp, water_z, lw=1.,
|
kp, water_z, lw=1.,
|
||||||
color='b',
|
color=self.color_plot_river_water,
|
||||||
|
linestyle='dotted',
|
||||||
)
|
)
|
||||||
|
|
||||||
self.canvas.axes.fill_between(
|
def draw_current(self, reach):
|
||||||
kp, z_min, water_z,
|
kp = reach.geometry.get_kp()
|
||||||
color='skyblue', alpha=0.7, interpolate=True
|
z_min = reach.geometry.get_z_min()
|
||||||
)
|
z_max = reach.geometry.get_z_max()
|
||||||
|
|
||||||
self.profile, = self.canvas.axes.plot(
|
self.profile, = self.canvas.axes.plot(
|
||||||
[
|
[
|
||||||
|
|
@ -113,31 +153,57 @@ class PlotKPC(PamhyrPlot):
|
||||||
z_max[self._current_profile_id],
|
z_max[self._current_profile_id],
|
||||||
z_min[self._current_profile_id]
|
z_min[self._current_profile_id]
|
||||||
],
|
],
|
||||||
color='red', lw=1.
|
color=self.color_plot,
|
||||||
|
lw=1.
|
||||||
)
|
)
|
||||||
|
|
||||||
self.canvas.figure.tight_layout()
|
|
||||||
self.canvas.figure.canvas.draw_idle()
|
|
||||||
if self.toolbar is not None:
|
|
||||||
self.toolbar.update()
|
|
||||||
|
|
||||||
def set_reach(self, reach_id):
|
def set_reach(self, reach_id):
|
||||||
self._current_reach_id = reach_id
|
self._current_reach_id = reach_id
|
||||||
self._current_profile_id = 0
|
self._current_profile_id = 0
|
||||||
self.update()
|
self.draw()
|
||||||
|
|
||||||
def set_profile(self, profile_id):
|
def set_profile(self, profile_id):
|
||||||
self._current_profile_id = profile_id
|
self._current_profile_id = profile_id
|
||||||
self.update_profil()
|
self.update_current()
|
||||||
|
|
||||||
def set_timestamp(self, timestamp):
|
def set_timestamp(self, timestamp):
|
||||||
self._current_timestamp = timestamp
|
self._current_timestamp = timestamp
|
||||||
self.update()
|
self.update()
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
self.draw()
|
if not self._init:
|
||||||
|
self.draw()
|
||||||
|
|
||||||
def update_profil(self):
|
self.update_water_elevation()
|
||||||
|
|
||||||
|
self.update_idle()
|
||||||
|
|
||||||
|
def update_water_elevation(self):
|
||||||
|
reach = self.results.river.reach(self._current_reach_id)
|
||||||
|
kp = reach.geometry.get_kp()
|
||||||
|
z_min = reach.geometry.get_z_min()
|
||||||
|
|
||||||
|
water_z = list(
|
||||||
|
map(
|
||||||
|
lambda p: p.get_ts_key(
|
||||||
|
self._current_timestamp, "Z"
|
||||||
|
),
|
||||||
|
reach.profiles
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self.water[0].set_data(
|
||||||
|
kp, water_z
|
||||||
|
)
|
||||||
|
|
||||||
|
self.water_fill.remove()
|
||||||
|
self.water_fill = self.canvas.axes.fill_between(
|
||||||
|
kp, z_min, water_z,
|
||||||
|
color=self.color_plot_river_water_zone,
|
||||||
|
alpha=0.7, interpolate=True
|
||||||
|
)
|
||||||
|
|
||||||
|
def update_current(self):
|
||||||
reach = self.results.river.reach(self._current_reach_id)
|
reach = self.results.river.reach(self._current_reach_id)
|
||||||
kp = reach.geometry.get_kp()
|
kp = reach.geometry.get_kp()
|
||||||
z_min = reach.geometry.get_z_min()
|
z_min = reach.geometry.get_z_min()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue