mirror of https://gitlab.com/pamhyr/pamhyr2
Results: Update plot KPC.
parent
a08b2c77d6
commit
6055065e27
|
|
@ -16,6 +16,8 @@
|
|||
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import logging
|
||||
|
||||
from tools import timer
|
||||
from View.Tools.PamhyrPlot import PamhyrPlot
|
||||
|
||||
|
|
@ -23,6 +25,8 @@ from PyQt5.QtCore import (
|
|||
QCoreApplication
|
||||
)
|
||||
|
||||
logger = logging.getLogger()
|
||||
|
||||
_translate = QCoreApplication.translate
|
||||
|
||||
|
||||
|
|
@ -42,6 +46,15 @@ class PlotKPC(PamhyrPlot):
|
|||
self._current_reach_id = reach_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
|
||||
def results(self):
|
||||
return self.data
|
||||
|
|
@ -53,56 +66,83 @@ class PlotKPC(PamhyrPlot):
|
|||
|
||||
@timer
|
||||
def draw(self, highlight=None):
|
||||
self.canvas.axes.cla()
|
||||
self.canvas.axes.grid(color='grey', linestyle='--', linewidth=0.5)
|
||||
self.init_axes()
|
||||
|
||||
if self.results is None:
|
||||
return
|
||||
|
||||
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()
|
||||
z_min = reach.geometry.get_z_min()
|
||||
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(
|
||||
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:
|
||||
kp = reach.geometry.get_kp()
|
||||
z_min = reach.geometry.get_z_min()
|
||||
|
||||
# Water elevation
|
||||
water_z = list(
|
||||
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
|
||||
)
|
||||
)
|
||||
|
||||
self.canvas.axes.plot(
|
||||
kp, water_z, lw=1.,
|
||||
color='b',
|
||||
color=self.color_plot_river_water,
|
||||
linestyle='dotted',
|
||||
)
|
||||
|
||||
self.canvas.axes.fill_between(
|
||||
kp, z_min, water_z,
|
||||
color='skyblue', alpha=0.7, interpolate=True
|
||||
)
|
||||
def draw_current(self, reach):
|
||||
kp = reach.geometry.get_kp()
|
||||
z_min = reach.geometry.get_z_min()
|
||||
z_max = reach.geometry.get_z_max()
|
||||
|
||||
self.profile, = self.canvas.axes.plot(
|
||||
[
|
||||
|
|
@ -113,31 +153,57 @@ class PlotKPC(PamhyrPlot):
|
|||
z_max[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):
|
||||
self._current_reach_id = reach_id
|
||||
self._current_profile_id = 0
|
||||
self.update()
|
||||
self.draw()
|
||||
|
||||
def set_profile(self, profile_id):
|
||||
self._current_profile_id = profile_id
|
||||
self.update_profil()
|
||||
self.update_current()
|
||||
|
||||
def set_timestamp(self, timestamp):
|
||||
self._current_timestamp = timestamp
|
||||
self.update()
|
||||
|
||||
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)
|
||||
kp = reach.geometry.get_kp()
|
||||
z_min = reach.geometry.get_z_min()
|
||||
|
|
|
|||
Loading…
Reference in New Issue