diff --git a/src/Model/Geometry/ProfileXYZ.py b/src/Model/Geometry/ProfileXYZ.py index 9d31a97db46c36497b55854f5895d020928b7985..ee765c22d09a678bef3be2311eaa8795ca0c2f36 100644 --- a/src/Model/Geometry/ProfileXYZ.py +++ b/src/Model/Geometry/ProfileXYZ.py @@ -402,12 +402,12 @@ class ProfileXYZ(Profile, SQLSubModel): return abs(rg.dist(rd)) def wet_perimeter(self, z): - poly = self.wet_polygon(z) + line = self.wet_line(z) - if poly is None: + if line is None: return 0 - return poly.length + return line.length def wet_area(self, z): poly = self.wet_polygon(z) @@ -417,6 +417,26 @@ class ProfileXYZ(Profile, SQLSubModel): return poly.area + def wet_radius(self, z): + p = self.wet_perimeter(z) + a = self.wet_area(z) + + if p == 0: + return 0 + + return a/p + + def wet_line(self, z): + points = self.wet_points(z) + if len(points) < 3: + return None + + z = map(lambda p: p.z, points) + station = self._get_station(points) + + line = geometry.LineString(list(zip(station, z))) + return line + def wet_polygon(self, z): points = self.wet_points(z) if len(points) < 3: diff --git a/src/View/Results/Table.py b/src/View/Results/Table.py index 7ce91f38a37d962cad2f2642fa143e6b1676ce69..1b16a882219e670d46ac5b60a20d1ab81d002401 100644 --- a/src/View/Results/Table.py +++ b/src/View/Results/Table.py @@ -86,12 +86,39 @@ class TableModel(PamhyrTableModel): elif self._headers[column] == "discharge": v = self._lst[row].get_ts_key(self._timestamp, "Q") return f"{v:.4f}" - elif self._headers[column] == "speed": + elif self._headers[column] == "velocity": q = self._lst[row].get_ts_key(self._timestamp, "Q") z = self._lst[row].get_ts_key(self._timestamp, "Z") v = self._lst[row].geometry.speed(q, z) return f"{v:.4f}" + elif self._headers[column] == "width": + pt_left, pt_right = self._lst[row].get_ts_key( + self._timestamp, + "water_limits" + ) + v = pt_left.dist_2d(pt_right) + return f"{v:.4f}" + elif self._headers[column] == "depth": + z = self._lst[row].get_ts_key(self._timestamp, "Z") + z_min = self._lst[row].geometry.z_min() + v = z - z_min + return f"{v:.4f}" + elif self._headers[column] == "wet_area": + z = self._lst[row].get_ts_key(self._timestamp, "Z") + v = self._lst[row].geometry.wet_area(z) + return f"{v:.4f}" + elif self._headers[column] == "wet_perimeter": + z = self._lst[row].get_ts_key(self._timestamp, "Z") + v = self._lst[row].geometry.wet_perimeter(z) + return f"{v:.4f}" + elif self._headers[column] == "hydraulic_radius": + z = self._lst[row].get_ts_key(self._timestamp, "Z") + v = self._lst[row].geometry.wet_radius(z) + return f"{v:.4f}" + else: + v = 0.0 + return f"{v:.4f}" return QVariant() diff --git a/src/View/Results/translate.py b/src/View/Results/translate.py index 55c9c45ef8da71b9c8b12fb8118af40c8b473c25..05ae7d6bda48025f23ee0c8f51d65634cdf0915e 100644 --- a/src/View/Results/translate.py +++ b/src/View/Results/translate.py @@ -57,5 +57,10 @@ class ResultsTranslate(MainTranslate): "name": _translate("Results", "Profile"), "water_elevation": self._dict["unit_water_elevation"], "discharge": self._dict["unit_discharge"], - "speed": self._dict["unit_speed"], + "velocity": self._dict["unit_speed"], + "width": self._dict["unit_width"], + "depth": self._dict["unit_height"], + "wet_area": self._dict["unit_wet_area"], + "wet_perimeter": self._dict["unit_wet_perimeter"], + "hydraulic_radius": self._dict["unit_hydraulic_radius"], } diff --git a/src/View/Translate.py b/src/View/Translate.py index 16b198b5583323a14c46f704c276743b9cfc483b..a9c3d8ee16fba40ef04afb76111e7407d356d82d 100644 --- a/src/View/Translate.py +++ b/src/View/Translate.py @@ -61,7 +61,7 @@ class UnitTranslate(CommonWordTranslate): self._dict["unit_water_elevation"] = _translate( "Unit", "Water elevation (m)" ) - self._dict["unit_speed"] = _translate("Unit", "Speed (m/s)") + self._dict["unit_speed"] = _translate("Unit", "Velocity (m/s)") self._dict["unit_discharge"] = _translate("Unit", "Discharge (m³/s)") self._dict["unit_area"] = _translate("Unit", "Area (hectare)") @@ -71,6 +71,14 @@ class UnitTranslate(CommonWordTranslate): self._dict["unit_date_s"] = _translate("Unit", "Date (sec)") self._dict["unit_date_iso"] = _translate("Unit", "Date (ISO format)") + self._dict["unit_wet_area"] = _translate("Unit", "Wet Area (m²)") + self._dict["unit_wet_perimeter"] = _translate( + "Unit", "Wet Perimeter (m)" + ) + self._dict["unit_hydraulic_radius"] = _translate( + "Unit", "Hydraulic Radius (m)" + ) + class MainTranslate(UnitTranslate): def __init__(self):