Commit 52c31188 authored by Theophile Terraz's avatar Theophile Terraz
Browse files

more hydraulic values in raw results

Showing with 66 additions and 6 deletions
+66 -6
......@@ -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:
......
......@@ -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()
......
......@@ -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"],
}
......@@ -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):
......
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