more work on import geo image

terraz_dev
Theophile Terraz 2025-06-06 17:32:02 +02:00
parent 5ba38d5cd6
commit 5fc6951060
5 changed files with 408 additions and 71 deletions

View File

@ -0,0 +1,77 @@
# ShiftDialog.py -- Pamhyr
# Copyright (C) 2023-2024 INRAE
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
# -*- coding: utf-8 -*-
from View.Tools.PamhyrWindow import PamhyrDialog
from PyQt5.QtWidgets import QDoubleSpinBox, QPushButton
class CoordinatesDialog(PamhyrDialog):
_pamhyr_ui = "GeotiffCoordinates"
_pamhyr_name = "ImageCoordinates"
def __init__(self, x, y, trad=None, parent=None):
super(CoordinatesDialog, self).__init__(
title=trad[self._pamhyr_name],
trad=trad,
options=[],
parent=parent
)
self.spinbox = {}
self._init_default_values(x, y)
self.setup_connections()
def _init_default_values(self, x, y):
self._x = x
self._y = y
self._values = {"bottom": x[0],
"top": x[1],
"left": y[0],
"right": y[1]}
self.spinbox = {}
for t in self._values:
self.spinbox[t] = self.find(QDoubleSpinBox, f"doubleSpinBox_{t}")
self.reset(t)
def setup_connections(self):
for t in self._values:
self.find(QPushButton,
f"pushButton_{t}").clicked.connect(lambda state, x=t: self.reset(x))
def reset(self, t):
self.spinbox[t].setValue(self._values[t])
@property
def x(self):
return [self._values["bottom"], self._values["top"]]
@property
def y(self):
return [self._values["left"], self._values["right"]]
@property
def values(self):
return [self._values[t] for t in self._values]
def accept(self):
for t in self._values:
self._values[t] = self.get_double_spin_box(f"doubleSpinBox_{t}")
super().accept()
def reject(self):
self.close()

View File

@ -68,7 +68,7 @@ from View.Results.translate import (
ResultsTranslate,
CompareResultsTranslate
)
from View.Stricklers.Window import StricklersWindow
from View.Results.CoordinatesDialog import CoordinatesDialog
_translate = QCoreApplication.translate
@ -1192,12 +1192,17 @@ class ResultsWindow(PamhyrWindow):
# b[1] bottom
# b[2] right
# b[3] top
if b[2] < b[0] and b[1] < b[3]:
if b[2] > b[0] and b[1] < b[3]:
self.canvas.axes.imshow(img.transpose((1, 2, 0)), extent=[b[0], b[2], b[1], b[3]])
else:
x = self.canvas.axes.get_xlim()
y = self.canvas.axes.get_ylim()
self.canvas.axes.imshow(img.transpose((1, 2, 0)), extent=[x[0], x[1], y[0], y[1]])
dlg = CoordinatesDialog(
self.canvas.axes.get_xlim(),
self.canvas.axes.get_ylim(),
trad=self._trad,
parent=self
)
if dlg.exec():
self.canvas.axes.imshow(img.transpose((1, 2, 0)), extent=dlg.values)
self.plot_xy.idle()

View File

@ -53,9 +53,12 @@ class ResultsTranslate(MainTranslate):
"Results",
"Max water elevation"
)
self._dict["file_all"] = _translate("GeoTIFF", "All files (*)")
self._dict["file_all"] = _translate("Results", "All files (*)")
self._dict["file_geotiff"] = _translate(
"GeoTIFF", "GeoTIFF file (*.tiff *.tif)")
"Results", "GeoTIFF file (*.tiff *.tif)")
self._dict["ImageCoordinates"] = _translate(
"Results", "Image coordinates"
)
self._sub_dict["table_headers_reach"] = {
"name": _translate("Results", "Reach name"),

View File

@ -0,0 +1,188 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>451</width>
<height>206</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="1">
<widget class="QDoubleSpinBox" name="doubleSpinBox_bottom">
<property name="decimals">
<number>4</number>
</property>
<property name="minimum">
<double>-99999999.000000000000000</double>
</property>
<property name="maximum">
<double>99999999.000000000000000</double>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QDoubleSpinBox" name="doubleSpinBox_right">
<property name="decimals">
<number>4</number>
</property>
<property name="minimum">
<double>-99999999.000000000000000</double>
</property>
<property name="maximum">
<double>99999999.000000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_bottom">
<property name="text">
<string>Bottom coordinate</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_left">
<property name="text">
<string>Left coordinate</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QDoubleSpinBox" name="doubleSpinBox_left">
<property name="decimals">
<number>4</number>
</property>
<property name="minimum">
<double>-99999999.000000000000000</double>
</property>
<property name="maximum">
<double>99999999.000000000000000</double>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QDoubleSpinBox" name="doubleSpinBox_top">
<property name="decimals">
<number>4</number>
</property>
<property name="minimum">
<double>-99999999.000000000000000</double>
</property>
<property name="maximum">
<double>99999999.000000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_top">
<property name="text">
<string>Top coordinate</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_right">
<property name="enabled">
<bool>true</bool>
</property>
<property name="text">
<string>Right coordinate</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QPushButton" name="pushButton_bottom">
<property name="text">
<string>Reset</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QPushButton" name="pushButton_top">
<property name="text">
<string>Reset</string>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QPushButton" name="pushButton_left">
<property name="text">
<string>Reset</string>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QPushButton" name="pushButton_right">
<property name="text">
<string>Reset</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="0">
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>Dialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>Dialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS><TS version="2.0" language="fr_FR" sourcelanguage="en_150">
<!DOCTYPE TS>
<TS version="2.1" language="fr_FR" sourcelanguage="en_150">
<context>
<name>About</name>
<message>
@ -944,6 +945,36 @@ Cette fonctionnalité nécessite un bief muni d&apos;une géométrie.</translati
<source>OK</source>
<translation>Ok</translation>
</message>
<message>
<location filename="../View/ui/GeotiffCoordinates.ui" line="54"/>
<source>Bottom coordinate</source>
<translation>Coordonnée bas</translation>
</message>
<message>
<location filename="../View/ui/GeotiffCoordinates.ui" line="61"/>
<source>Left coordinate</source>
<translation>Coordonnée gauche</translation>
</message>
<message>
<location filename="../View/ui/GeotiffCoordinates.ui" line="97"/>
<source>Top coordinate</source>
<translation>Coordonnée haut</translation>
</message>
<message>
<location filename="../View/ui/GeotiffCoordinates.ui" line="107"/>
<source>Right coordinate</source>
<translation>Coordonnée droite</translation>
</message>
<message>
<location filename="../View/ui/GeotiffCoordinates.ui" line="135"/>
<source>Reset</source>
<translation>Rétablir</translation>
</message>
<message>
<location filename="../View/ui/GeotiffCoordinates.ui" line="154"/>
<source>Image coordinates</source>
<translation type="obsolete">Coordonnées de l&apos;image</translation>
</message>
</context>
<context>
<name>Documentation</name>
@ -1235,14 +1266,9 @@ Cette fonctionnalité nécessite un bief muni d&apos;une géométrie.</translati
<translation>Version : @version @codename</translation>
</message>
<message>
<location filename="../View/ui/about.ui" line="94"/>
<source>Copyright &#xa9; 2022-2025 INRAE</source>
<translation type="obsolete">Copyright © 2022-2025 INRAE</translation>
</message>
<message encoding="UTF-8">
<location filename="../View/ui/about.ui" line="94"/>
<source>Copyright © 2022-2025 INRAE</source>
<translation type="unfinished"></translation>
<translation type="obsolete">Copyright © 2022-2025 INRAE</translation>
</message>
</context>
<context>
@ -1278,6 +1304,14 @@ Cette fonctionnalité nécessite un bief muni d&apos;une géométrie.</translati
<translation>Coefficient</translation>
</message>
</context>
<context>
<name>GeoTIFF</name>
<message>
<location filename="../View/Results/translate.py" line="56"/>
<source>All files (*)</source>
<translation type="obsolete">Tous les fichiers (*)</translation>
</message>
</context>
<context>
<name>Geometry</name>
<message>
@ -1539,17 +1573,17 @@ Cette fonctionnalité nécessite un bief muni d&apos;une géométrie.</translati
<context>
<name>MainWindow</name>
<message>
<location filename="../View/Translate.py" line="160"/>
<location filename="../View/Translate.py" line="161"/>
<source>Open debug window</source>
<translation>Ouvrir la fenêtre de débogage</translation>
</message>
<message>
<location filename="../View/Translate.py" line="163"/>
<location filename="../View/Translate.py" line="164"/>
<source>Open SQLite debuging tool (&apos;sqlitebrowser&apos;)</source>
<translation>Ouvrir l&apos;outil de débogage SQLite (&apos;sqlitebrowser&apos;)</translation>
</message>
<message>
<location filename="../View/Translate.py" line="166"/>
<location filename="../View/Translate.py" line="167"/>
<source>Enable this window</source>
<translation>Activer cette fenêtre</translation>
</message>
@ -1614,7 +1648,7 @@ Cette fonctionnalité nécessite un bief muni d&apos;une géométrie.</translati
<translation>Éditer la couche sédimentaire</translation>
</message>
<message>
<location filename="../View/ui/Results.ui" line="275"/>
<location filename="../View/ui/Results.ui" line="276"/>
<source>Ctrl+E</source>
<translation>Ctrl+E</translation>
</message>
@ -2104,17 +2138,17 @@ Cette fonctionnalité nécessite un bief muni d&apos;une géométrie.</translati
<translation>Hydrogramme</translation>
</message>
<message>
<location filename="../View/ui/Results.ui" line="251"/>
<location filename="../View/ui/Results.ui" line="252"/>
<source>Add customized visualization</source>
<translation>Ajouter une visualisation personnalisée</translation>
</message>
<message>
<location filename="../View/ui/Results.ui" line="260"/>
<location filename="../View/ui/Results.ui" line="261"/>
<source>Reload</source>
<translation>Recharger</translation>
</message>
<message>
<location filename="../View/ui/Results.ui" line="269"/>
<location filename="../View/ui/Results.ui" line="270"/>
<source>Export</source>
<translation>Exporter</translation>
</message>
@ -2394,12 +2428,12 @@ Cette fonctionnalité nécessite un bief muni d&apos;une géométrie.</translati
<translation>Maillage</translation>
</message>
<message>
<location filename="../View/Translate.py" line="153"/>
<location filename="../View/Translate.py" line="154"/>
<source>Summary</source>
<translation>Résumé</translation>
</message>
<message>
<location filename="../View/Translate.py" line="156"/>
<location filename="../View/Translate.py" line="157"/>
<source>Checks</source>
<translation>Vérifications</translation>
</message>
@ -2549,12 +2583,12 @@ Cette fonctionnalité nécessite un bief muni d&apos;une géométrie.</translati
<translation>Purger les profiles pour garder un nombre fixer de points</translation>
</message>
<message>
<location filename="../View/ui/EditLateralContribution.ui" line="112"/>
<location filename="../View/ui/EditBoundaryConditionsAdisTS.ui" line="119"/>
<source>Sort points</source>
<translation>Trier les points</translation>
</message>
<message>
<location filename="../View/ui/Results.ui" line="272"/>
<location filename="../View/ui/Results.ui" line="273"/>
<source>Export data as CSV</source>
<translation>Exporter les données au format CSV</translation>
</message>
@ -2619,47 +2653,47 @@ Cette fonctionnalité nécessite un bief muni d&apos;une géométrie.</translati
<translation>Données</translation>
</message>
<message>
<location filename="../View/Translate.py" line="174"/>
<location filename="../View/Translate.py" line="175"/>
<source>Please select a reach</source>
<translation>Veuillez sélectionner un bief</translation>
</message>
<message>
<location filename="../View/Translate.py" line="183"/>
<location filename="../View/Translate.py" line="184"/>
<source>Last open study</source>
<translation>Dernière étude ouverte</translation>
</message>
<message>
<location filename="../View/Translate.py" line="186"/>
<location filename="../View/Translate.py" line="187"/>
<source>Do you want to open again the last open study?</source>
<translation>Voulez-vous rouvrir la dernière étude ?</translation>
</message>
<message>
<location filename="../View/Translate.py" line="177"/>
<location filename="../View/Translate.py" line="178"/>
<source>This edition window need a reach selected into the river network to work on it</source>
<translation>Cette fenêtre d&apos;édition a besoin d&apos;un bief sélectionné dans le réseau pour travailler dessus</translation>
</message>
<message>
<location filename="../View/Translate.py" line="191"/>
<location filename="../View/Translate.py" line="192"/>
<source>Close without saving study</source>
<translation>Fermer sans sauvegarder l&apos;étude</translation>
</message>
<message>
<location filename="../View/Translate.py" line="194"/>
<location filename="../View/Translate.py" line="195"/>
<source>Do you want to save current study before closing it?</source>
<translation>Souhaitez-vous sauvegarder l&apos;étude en cours avant de la fermer ?</translation>
</message>
<message>
<location filename="../View/Translate.py" line="171"/>
<location filename="../View/Translate.py" line="172"/>
<source>Warning</source>
<translation>Avertissement</translation>
</message>
<message>
<location filename="../View/Translate.py" line="198"/>
<location filename="../View/Translate.py" line="199"/>
<source>X (m)</source>
<translation>X (m)</translation>
</message>
<message>
<location filename="../View/Translate.py" line="199"/>
<location filename="../View/Translate.py" line="200"/>
<source>Y (m)</source>
<translation>Y (m)</translation>
</message>
@ -2729,7 +2763,7 @@ Cette fonctionnalité nécessite un bief muni d&apos;une géométrie.</translati
<translation>Activer / Désactiver la sortie AdisTS</translation>
</message>
<message>
<location filename="../View/ui/EditBoundaryConditionsAdisTS.ui" line="88"/>
<location filename="../View/ui/EditBoundaryConditionsAdisTS.ui" line="89"/>
<source>Add a new point in boundary condition or punctual contribution</source>
<translation>Ajouter un nouveau point dans la condition limite</translation>
</message>
@ -2834,12 +2868,12 @@ Cette fonctionnalité nécessite un bief muni d&apos;une géométrie.</translati
<translation>Export données brutes</translation>
</message>
<message>
<location filename="../View/Translate.py" line="200"/>
<location filename="../View/Translate.py" line="201"/>
<source>Yes</source>
<translation>Oui</translation>
</message>
<message>
<location filename="../View/Translate.py" line="201"/>
<location filename="../View/Translate.py" line="202"/>
<source>No</source>
<translation>Non</translation>
</message>
@ -2848,6 +2882,16 @@ Cette fonctionnalité nécessite un bief muni d&apos;une géométrie.</translati
<source>Compare results</source>
<translation>Comparaison de résultats</translation>
</message>
<message>
<location filename="../View/ui/Results.ui" line="281"/>
<source>Geo tiff</source>
<translation>Geo tiff</translation>
</message>
<message>
<location filename="../View/ui/Results.ui" line="284"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Import Geo tiff image&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWindow_reach</name>
@ -3033,7 +3077,7 @@ Cette fonctionnalité nécessite un bief muni d&apos;une géométrie.</translati
<translation>jour</translation>
</message>
<message>
<location filename="../View/Results/translate.py" line="47"/>
<location filename="../View/Results/translate.py" line="48"/>
<source>X (m)</source>
<translation>X (m)</translation>
</message>
@ -3068,27 +3112,27 @@ Cette fonctionnalité nécessite un bief muni d&apos;une géométrie.</translati
<translation>Lecture des résultats</translation>
</message>
<message>
<location filename="../View/Results/translate.py" line="147"/>
<location filename="../View/Results/translate.py" line="154"/>
<source>Water elevation</source>
<translation>Cote de l&apos;eau</translation>
</message>
<message>
<location filename="../View/Results/translate.py" line="51"/>
<location filename="../View/Results/translate.py" line="52"/>
<source>Max water elevation</source>
<translation>Cote maximum de l&apos;eau</translation>
</message>
<message>
<location filename="../View/Results/translate.py" line="57"/>
<location filename="../View/Results/translate.py" line="64"/>
<source>Reach name</source>
<translation>Nom du bief</translation>
</message>
<message>
<location filename="../View/Results/translate.py" line="153"/>
<location filename="../View/Results/translate.py" line="160"/>
<source>Profile</source>
<translation>Profil</translation>
</message>
<message>
<location filename="../View/Results/translate.py" line="49"/>
<location filename="../View/Results/translate.py" line="50"/>
<source>Bottom</source>
<translation>Fond</translation>
</message>
@ -3138,30 +3182,50 @@ Cette fonctionnalité nécessite un bief muni d&apos;une géométrie.</translati
<translation>Masse min</translation>
</message>
<message>
<location filename="../View/Results/translate.py" line="61"/>
<location filename="../View/Results/translate.py" line="68"/>
<source>Variables names</source>
<translation>Noms des variables</translation>
</message>
<message>
<location filename="../View/Results/translate.py" line="74"/>
<location filename="../View/Results/translate.py" line="81"/>
<source>Pollutant name</source>
<translation>Nom des polluants</translation>
</message>
<message>
<location filename="../View/Results/translate.py" line="45"/>
<source>envelop</source>
<translation>enveloppe</translation>
<translation type="obsolete">enveloppe</translation>
</message>
<message>
<location filename="../View/Results/translate.py" line="65"/>
<location filename="../View/Results/translate.py" line="72"/>
<source>Profile name</source>
<translation>Nom du profil</translation>
</message>
<message>
<location filename="../View/Results/translate.py" line="70"/>
<location filename="../View/Results/translate.py" line="46"/>
<source>Solver</source>
<translation>Solveur</translation>
</message>
<message>
<location filename="../View/Results/translate.py" line="45"/>
<source>Envelop</source>
<translation>Enveloppe</translation>
</message>
<message>
<location filename="../View/Results/translate.py" line="57"/>
<source>GeoTIFF file (*.tiff *.tif)</source>
<translation>Fichiers GeoTIFF (*.tiff *.tif)</translation>
</message>
<message>
<location filename="../View/Results/translate.py" line="59"/>
<source>Image coordinates</source>
<translation>Coordonnées de l&apos;image</translation>
</message>
<message>
<location filename="../View/Results/translate.py" line="56"/>
<source>All files (*)</source>
<translation>Tous les fichiers (*)</translation>
</message>
</context>
<context>
<name>SedimentLayers</name>
@ -3579,27 +3643,27 @@ Cette fonctionnalité nécessite un bief muni d&apos;une géométrie.</translati
<translation>Cote (m)</translation>
</message>
<message>
<location filename="../View/Translate.py" line="116"/>
<location filename="../View/Translate.py" line="117"/>
<source>Area (hectare)</source>
<translation>Aire (hectare)</translation>
</message>
<message>
<location filename="../View/Translate.py" line="118"/>
<location filename="../View/Translate.py" line="119"/>
<source>Time (sec)</source>
<translation>Temps (s)</translation>
</message>
<message>
<location filename="../View/Translate.py" line="119"/>
<location filename="../View/Translate.py" line="120"/>
<source>Time (JJJ:HH:MM:SS)</source>
<translation>Temps (JJJ:HH:MM:SS)</translation>
</message>
<message>
<location filename="../View/Translate.py" line="121"/>
<location filename="../View/Translate.py" line="122"/>
<source>Date (sec)</source>
<translation>Date (s)</translation>
</message>
<message>
<location filename="../View/Translate.py" line="122"/>
<location filename="../View/Translate.py" line="123"/>
<source>Date (ISO format)</source>
<translation>Date (format ISO)</translation>
</message>
@ -3624,17 +3688,17 @@ Cette fonctionnalité nécessite un bief muni d&apos;une géométrie.</translati
<translation>Vitesse (m/s)</translation>
</message>
<message>
<location filename="../View/Translate.py" line="137"/>
<location filename="../View/Translate.py" line="138"/>
<source>Wet Perimeter (m)</source>
<translation>Périmètre mouillé (m)</translation>
</message>
<message>
<location filename="../View/Translate.py" line="140"/>
<location filename="../View/Translate.py" line="141"/>
<source>Hydraulic Radius (m)</source>
<translation>Rayon hydraulique (m)</translation>
</message>
<message>
<location filename="../View/Translate.py" line="143"/>
<location filename="../View/Translate.py" line="144"/>
<source>Froude number</source>
<translation>Nombre de Froude</translation>
</message>
@ -3757,52 +3821,52 @@ moyen droit (m)</translation>
<translation>Vitesse min (m/s)</translation>
</message>
<message>
<location filename="../View/Translate.py" line="124"/>
<location filename="../View/Translate.py" line="125"/>
<source>Area</source>
<translation>Aire</translation>
</message>
<message>
<location filename="../View/Translate.py" line="125"/>
<location filename="../View/Translate.py" line="126"/>
<source>Rho</source>
<translation>Rho</translation>
</message>
<message>
<location filename="../View/Translate.py" line="126"/>
<location filename="../View/Translate.py" line="127"/>
<source>Porosity</source>
<translation>Porosité</translation>
</message>
<message>
<location filename="../View/Translate.py" line="127"/>
<location filename="../View/Translate.py" line="128"/>
<source>CDC_RIV</source>
<translation>CDC_RIV</translation>
</message>
<message>
<location filename="../View/Translate.py" line="128"/>
<location filename="../View/Translate.py" line="129"/>
<source>CDC_CAS</source>
<translation>CDC_CAS</translation>
</message>
<message>
<location filename="../View/Translate.py" line="129"/>
<location filename="../View/Translate.py" line="130"/>
<source>APD</source>
<translation>APD</translation>
</message>
<message>
<location filename="../View/Translate.py" line="130"/>
<location filename="../View/Translate.py" line="131"/>
<source>AC</source>
<translation>AC</translation>
</message>
<message>
<location filename="../View/Translate.py" line="131"/>
<location filename="../View/Translate.py" line="132"/>
<source>BC</source>
<translation>BC</translation>
</message>
<message>
<location filename="../View/Translate.py" line="133"/>
<location filename="../View/Translate.py" line="134"/>
<source>Concentration (g/l)</source>
<translation>Concentration (g/l)</translation>
</message>
<message>
<location filename="../View/Translate.py" line="144"/>
<location filename="../View/Translate.py" line="145"/>
<source>Mass (kg)</source>
<translation>Masse</translation>
</message>
@ -3827,27 +3891,27 @@ moyen droit (m)</translation>
<translation>Débit</translation>
</message>
<message>
<location filename="../View/Translate.py" line="110"/>
<location filename="../View/Translate.py" line="111"/>
<source>Discharge Envelop</source>
<translation>Enveloppe du débit</translation>
</message>
<message>
<location filename="../View/Translate.py" line="112"/>
<location filename="../View/Translate.py" line="113"/>
<source>Max Discharge</source>
<translation>Débit max</translation>
</message>
<message>
<location filename="../View/Translate.py" line="114"/>
<location filename="../View/Translate.py" line="115"/>
<source>Min Discharge</source>
<translation>Débit min</translation>
</message>
<message>
<location filename="../View/Translate.py" line="145"/>
<location filename="../View/Translate.py" line="146"/>
<source>Concentration</source>
<translation>Concentration</translation>
</message>
<message>
<location filename="../View/Translate.py" line="136"/>
<location filename="../View/Translate.py" line="137"/>
<source>Wet Area</source>
<translation>Aire mouillée</translation>
</message>