more hydraulic values in raw results

adists_release
Theophile Terraz 2024-07-17 11:36:57 +02:00
parent c33913bd58
commit 52c311887a
4 changed files with 66 additions and 6 deletions

View File

@ -402,12 +402,12 @@ class ProfileXYZ(Profile, SQLSubModel):
return abs(rg.dist(rd)) return abs(rg.dist(rd))
def wet_perimeter(self, z): 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 0
return poly.length return line.length
def wet_area(self, z): def wet_area(self, z):
poly = self.wet_polygon(z) poly = self.wet_polygon(z)
@ -417,6 +417,26 @@ class ProfileXYZ(Profile, SQLSubModel):
return poly.area 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): def wet_polygon(self, z):
points = self.wet_points(z) points = self.wet_points(z)
if len(points) < 3: if len(points) < 3:

View File

@ -86,12 +86,39 @@ class TableModel(PamhyrTableModel):
elif self._headers[column] == "discharge": elif self._headers[column] == "discharge":
v = self._lst[row].get_ts_key(self._timestamp, "Q") v = self._lst[row].get_ts_key(self._timestamp, "Q")
return f"{v:.4f}" return f"{v:.4f}"
elif self._headers[column] == "speed": elif self._headers[column] == "velocity":
q = self._lst[row].get_ts_key(self._timestamp, "Q") q = self._lst[row].get_ts_key(self._timestamp, "Q")
z = self._lst[row].get_ts_key(self._timestamp, "Z") z = self._lst[row].get_ts_key(self._timestamp, "Z")
v = self._lst[row].geometry.speed(q, z) v = self._lst[row].geometry.speed(q, z)
return f"{v:.4f}" 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() return QVariant()

View File

@ -57,5 +57,10 @@ class ResultsTranslate(MainTranslate):
"name": _translate("Results", "Profile"), "name": _translate("Results", "Profile"),
"water_elevation": self._dict["unit_water_elevation"], "water_elevation": self._dict["unit_water_elevation"],
"discharge": self._dict["unit_discharge"], "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"],
} }

View File

@ -61,7 +61,7 @@ class UnitTranslate(CommonWordTranslate):
self._dict["unit_water_elevation"] = _translate( self._dict["unit_water_elevation"] = _translate(
"Unit", "Water elevation (m)" "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_discharge"] = _translate("Unit", "Discharge (m³/s)")
self._dict["unit_area"] = _translate("Unit", "Area (hectare)") 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_s"] = _translate("Unit", "Date (sec)")
self._dict["unit_date_iso"] = _translate("Unit", "Date (ISO format)") 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): class MainTranslate(UnitTranslate):
def __init__(self): def __init__(self):