Commit 894a7c84 authored by Theophile Terraz's avatar Theophile Terraz
Browse files

speed up View/Results/PlotXY

Showing with 67 additions and 40 deletions
+67 -40
......@@ -133,49 +133,18 @@ class PlotXY(PamhyrPlot):
)
self.plot_selected.set_visible(False)
# Display point under water
poly_l_x = []
poly_l_y = []
poly_r_x = []
poly_r_y = []
for profile in reach.profiles:
water_z = profile.get_ts_key(
self._current_timestamp, "Z"
)
pgeo = profile.geometry
x, y = reduce(
lambda acc, pts: (acc[0] + [pts.x], acc[1] + [pts.y]),
filter(
lambda pts: pts.z < water_z,
pgeo.points
),
([], [])
)
poly_x = [0]
poly_y = [0]
poly_l_x.append(x[0])
poly_l_y.append(y[0])
poly_r_x.append(x[-1])
poly_r_y.append(y[-1])
self.fill = self.canvas.axes.fill(poly_x, poly_y, color='blue', alpha=1)
self.canvas.axes.plot(
x, y, lw=1.,
color='b',
markersize=1,
marker='o'
)
poly_x = poly_l_x + list(reversed(poly_r_x)) + [poly_l_x[0]]
poly_y = poly_l_y + list(reversed(poly_r_y)) + [poly_l_y[0]]
self.canvas.axes.fill(poly_x, poly_y, color='blue', alpha=1)
self.canvas.axes.autoscale_view(True, True, True)
self.canvas.axes.autoscale()
#self.canvas.axes.autoscale_view(True, True, True)
#self.canvas.axes.autoscale()
self.canvas.figure.tight_layout()
self.canvas.figure.canvas.draw_idle()
if self.toolbar is not None:
self.toolbar.update()
self.update()
def set_reach(self, reach_id):
self._current_reach_id = reach_id
......@@ -184,11 +153,69 @@ class PlotXY(PamhyrPlot):
def set_profile(self, profile_id):
self._current_profile_id = profile_id
self.draw()
self.update_profile()
def set_timestamp(self, timestamp):
self._current_timestamp = timestamp
self.draw()
self.update_poly()
def update_profile(self):
reach = self.results.river.reach(self._current_reach_id)
if self.display_current:
# Current profile
profile = reach.profile(self._current_profile_id).geometry
self.plot_selected, = self.canvas.axes.plot(
profile.x(),
profile.y(),
lw=1., markersize=3,
marker='+', color="b"
)
self.plot_selected.set_visible(False)
self.canvas.draw_idle()
def update_poly(self):
reach = self.results.river.reach(self._current_reach_id)
profile = reach.profile(self._current_profile_id).geometry
# Display water
poly_l_x = []
poly_l_y = []
poly_r_x = []
poly_r_y = []
for profile in reach.profiles:
water_z = profile.get_ts_key(
self._current_timestamp, "Z"
)
ptX = profile.get_ts_key(
self._current_timestamp, "ptX"
)
ptY = profile.get_ts_key(
self._current_timestamp, "ptY"
)
poly_l_x.append(ptX.x)
poly_l_y.append(ptX.y)
poly_r_x.append(ptY.x)
poly_r_y.append(ptY.y)
#self.canvas.axes.plot(
#x, y, lw=1.,
#color='b',
#markersize=1,
#marker='o'
#)
poly_x = poly_l_x + list(reversed(poly_r_x)) + [poly_l_x[0]]
poly_y = poly_l_y + list(reversed(poly_r_y)) + [poly_l_y[0]]
poly = []
for i in range(len(poly_x)):
poly.append([poly_x[i], poly_y[i]])
self.fill[0].set_xy(poly)
self.canvas.draw_idle()
def update(self):
self.draw()
self.update_profile()
self.update_poly()
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment