Commit 634d0a41 authored by Pierre-Antoine Rouby's avatar Pierre-Antoine Rouby
Browse files

Geometry: Update guidelines computation.

* src/Model/Geometry/Reach.py (compute_guidelines): Now return complete and incomplete guidelines names.
Showing with 76 additions and 73 deletions
+76 -73
......@@ -227,9 +227,7 @@ class ProfileXYZ(Profile):
station_i = (normalized_direction_vec[0] * xi +
normalized_direction_vec[1] * yi)
station.append(station_i)
ret = np.array(station)
constant = ret[index_first_named_point]
elif first_named_point is None:
vector = Vector1d(first_point_not_nan,
......
......@@ -166,9 +166,11 @@ class Reach:
# Guidelines
def _compute_guidelines_cache(self, guide_set, named_points):
def _compute_guidelines_cache(self, guide_set, named_points,
complete, incomplete):
# Reset guide lines cache
self._guidelines = {}
self._guidelines_is_valid = len(incomplete) == 0
# Make a list of point for each guideline
for guide in guide_set:
......@@ -190,7 +192,7 @@ class Reach:
"""Compute reach guideline and check if is valid for all profiles
Returns:
True if all guide line is valid
Tuple of complete and incomplete guidelines name.
"""
# Get all point contains into a guideline
named_points = [profile.named_points() for profile in self._profiles]
......@@ -207,20 +209,24 @@ class Reach:
points_name
)
# All guide line is valid
is_ok = reduce(
bool.__and__,
map(
lambda l: len(set(l).symmetric_difference(guide_set)) == 0,
points_name
# Get incomplete guideline
incomplete = set(
reduce(
lambda acc, h: acc[1] + h[1],
map(
lambda l: list(set(l).symmetric_difference(guide_set)),
points_name
)
)
)
self._guidelines_is_valid = is_ok
complete = guide_set - incomplete
# Compute guideline and put data in cache
self._compute_guidelines_cache(guide_set, named_points)
self._compute_guidelines_cache(guide_set, named_points,
complete, incomplete)
return is_ok
return (complete, incomplete)
def _map_guidelines_points(self, func):
return list(
......
......@@ -240,7 +240,7 @@ class GeometryWindow(QMainWindow, WindowToolKit):
for x, y in zip(self._reach.get_x(), self._reach.get_y())
]
self.line_ld_1 = self.ui.canvas_1.axes.plot(
self.line_gl_1 = self.ui.canvas_1.axes.plot(
self._reach.get_guidelines_x(),
self._reach.get_guidelines_y()
)
......@@ -319,7 +319,7 @@ class GeometryWindow(QMainWindow, WindowToolKit):
self.after_plot_selected_2.set_visible(False)
try:
self.line_kp_zld = [
self.line_kp_zgl = [
self.ui.canvas_2.axes.plot(
self._reach.get_kp(), i, lw=1.
) for i in self.model.z_complete_guideline()
......@@ -348,10 +348,10 @@ class GeometryWindow(QMainWindow, WindowToolKit):
self._reach.profile(ind).y
)
for i in range(len(self.line_ld_1)):
self.line_ld_1[i].set_data(
[x[i] for x in self.get_x_complete_list_ld],
[y[i] for y in self.get_y_complete_list_ld]
for i in range(len(self.line_gl_1)):
self.line_gl_1[i].set_data(
[x[i] for x in self.get_x_complete_list_gl],
[y[i] for y in self.get_y_complete_list_gl]
)
self.tableView.model().blockSignals(False)
......@@ -374,8 +374,8 @@ class GeometryWindow(QMainWindow, WindowToolKit):
)
try:
for i in range(len(self.line_kp_zld)):
self.line_kp_zld[i][0].set_data(
for i in range(len(self.line_kp_zgl)):
self.line_kp_zgl[i][0].set_data(
kp, self.model.z_complete_guideline()[i]
)
except:
......@@ -391,9 +391,9 @@ class GeometryWindow(QMainWindow, WindowToolKit):
selected_profile = 0
station = self._reach.profile(selected_profile).get_station()
station_plus_1 = self._reach.profile(selected_profile + 1).get_station()
elevation = self._reach.profile(selected_profile).z
elevation_i_plus_1 = self._reach.profile(selected_profile + 1).z
ld = self._reach.profile(selected_profile).name
elevation = self._reach.profile(selected_profile).z()
elevation_i_plus_1 = self._reach.profile(selected_profile + 1).z()
gl = self._reach.profile(selected_profile).name
self.ui.canvas_3.axes.cla()
self.ui.canvas_3.axes.grid(color='grey', linestyle='--', linewidth=0.5)
......@@ -429,54 +429,53 @@ class GeometryWindow(QMainWindow, WindowToolKit):
color=color_profile_i_plus_1, lw=1.6, linestyle='--'
)
self.annotation_3 = []
self.complete_list_ld = self._reach.get_complete_list_ld()
self.incomplete_list_ld = self._reach.get_incomplete_list_ld()
line_2d = [[line_2D] for line_2D in self.line_ld_1]
self.color_complete_ld = self.get_line_ld_colors(line_2d)
self.color_incomplete_ld = 2 * ["#000000"]
x_ld_complete = []
y_ld_complete = []
color_scat_complete_ld = []
x_ld_incomplete = []
y_ld_incomplete = []
color_scat_incomplete_ld = []
for i, txt in enumerate(list(ld)):
if txt.strip() in self.complete_list_ld:
self.complete_gl, self.incomplete_gl = self._reach.compute_guidelines()
line_2d = [[line_2D] for line_2D in self.line_gl_1]
self.color_complete_gl = self.get_line_gl_colors(line_2d)
self.color_incomplete_gl = 2 * ["#000000"]
x_gl_complete = []
y_gl_complete = []
color_scat_complete_gl = []
x_gl_incomplete = []
y_gl_incomplete = []
color_scat_incomplete_gl = []
for i, txt in enumerate(list(gl)):
if txt.strip() in self.complete_gl:
annotation_3 = self.ui.canvas_3.axes.annotate(
txt, (station[i], elevation[i]),
horizontalalignment='left',
verticalalignment='top', annotation_clip=True,
fontsize=10,
color=self.color_complete_ld[
self.complete_list_ld.index(txt)
color=self.color_complete_gl[
self.complete_gl.index(txt)
]
)
annotation_3.set_position((station[i] + 0., elevation[i] + 0.))
self.annotation_3.append(annotation_3)
x_ld_complete.append(station[i])
y_ld_complete.append(elevation[i])
color_scat_complete_ld.append(self.color_complete_ld[self.complete_list_ld.index(txt)])
elif txt.strip() in self.incomplete_list_ld:
x_gl_complete.append(station[i])
y_gl_complete.append(elevation[i])
color_scat_complete_gl.append(self.color_complete_gl[self.complete_gl.index(txt)])
elif txt.strip() in self.incomplete_gl:
annotate = self.ui.canvas_3.axes.annotate(
txt, (station[i], elevation[i]), horizontalalignment='left',
verticalalignment='top', annotation_clip=True, fontsize=11,
color=self.color_incomplete_ld[
self.incomplete_list_ld.index(txt)
color=self.color_incomplete_gl[
self.incomplete_gl.index(txt)
],
size=10
)
self.annotation_3.append(annotate)
x_ld_incomplete.append(station[i])
y_ld_incomplete.append(elevation[i])
color_scat_incomplete_ld.append(
self.color_incomplete_ld[self.incomplete_list_ld.index(txt)]
x_gl_incomplete.append(station[i])
y_gl_incomplete.append(elevation[i])
color_scat_incomplete_gl.append(
self.color_incomplete_gl[self.incomplete_gl.index(txt)]
)
self.tableView.model().blockSignals(False)
......@@ -497,45 +496,45 @@ class GeometryWindow(QMainWindow, WindowToolKit):
x = self.profile(ind).get_station()
y = self._reach.profile(ind).z()
ld = self._reach.profile(ind).name
get_complete_list_ld = self._reach.get_complete_list_ld()
get_incomplete_list_ld = self._reach.get_incomplete_list_ld()
gl = self._reach.profile(ind).name
get_complete_list_gl = self._reach.get_complete_list_gl()
get_incomplete_list_gl = self._reach.get_incomplete_list_gl()
try:
x_ld_complete = []
color_scat_complete_ld = []
x_ld_incomplete = []
color_scat_incomplete_ld = []
for i, txt in enumerate(list(ld)):
if txt in get_complete_list_ld:
x_gl_complete = []
color_scat_complete_gl = []
x_gl_incomplete = []
color_scat_incomplete_gl = []
for i, txt in enumerate(list(gl)):
if txt in get_complete_list_gl:
annotate = self.ui.canvas_3.axes.annotate(
txt, (x[i], y[i]), horizontalalignment='left',
verticalalignment='top', annotation_clip=True,
fontsize=11,
color=self.color_complete_ld[
get_complete_list_ld.index(txt)
color=self.color_complete_gl[
get_complete_list_gl.index(txt)
],
size=10
)
self.annotation_3.append(annotate)
x_ld_complete.append([x[i], y[i]])
color_scat_complete_ld.append(
self.color_complete_ld[self.complete_list_ld.index(txt)]
x_gl_complete.append([x[i], y[i]])
color_scat_complete_gl.append(
self.color_complete_gl[self.complete_gl.index(txt)]
)
elif txt in get_incomplete_list_ld:
elif txt in get_incomplete_list_gl:
annotate = self.ui.canvas_3.axes.annotate(
txt, (x[i], y[i]), horizontalalignment='left',
verticalalignment='top', annotation_clip=True,
fontsize=11,
color=self.color_incomplete_ld[
get_incomplete_list_ld.index(txt)
color=self.color_incomplete_gl[
get_incomplete_list_gl.index(txt)
],
size=10
)
self.annotation_3.append(annotate)
x_ld_incomplete.append([x[i], y[i]])
color_scat_incomplete_ld.append(
self.color_incomplete_ld[get_incomplete_list_ld.index(txt)]
x_gl_incomplete.append([x[i], y[i]])
color_scat_incomplete_gl.append(
self.color_incomplete_gl[get_incomplete_list_gl.index(txt)]
)
except:
print("FIXME")
......@@ -543,7 +542,7 @@ class GeometryWindow(QMainWindow, WindowToolKit):
self.tableView.model().blockSignals(False)
self.ui.canvas_3.figure.canvas.draw_idle()
def get_line_ld_colors(self, line_2d):
def get_line_gl_colors(self, line_2d):
colors = []
for line in line_2d:
......
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