All plots are drawn as soon as acoustic file is download. Bottom line river is plotted on acoustic profile.
parent
e701425e03
commit
e204ddba0e
|
|
@ -183,11 +183,14 @@ class AcousticDataTab(QWidget):
|
|||
self.horizontalLayout_radiobutton_gps.addWidget(self.radiobutton_file)
|
||||
|
||||
self.groupbox_gps_value = QGroupBox()
|
||||
self.formLayout_gps_value = QFormLayout(self.groupbox_gps_value)
|
||||
self.gridLayout_gps_value = QGridLayout(self.groupbox_gps_value)
|
||||
self.label_distance_value = QLabel()
|
||||
self.label_distance_value.setText("Distance : ")
|
||||
self.gridLayout_gps_value.addWidget(self.label_distance_value, 0, 0, 1, 1)
|
||||
self.lineEdit_gps_value = QLineEdit()
|
||||
self.formLayout_gps_value.addRow(self.label_distance_value, self.lineEdit_gps_value)
|
||||
self.gridLayout_gps_value.addWidget(self.lineEdit_gps_value, 0, 1, 1, 1)
|
||||
self.label_m_per_record = QLabel("m / record")
|
||||
self.gridLayout_gps_value.addWidget(self.label_m_per_record, 0, 2, 1, 1)
|
||||
|
||||
self.verticalLayout_gps_input_data.addWidget(self.groupbox_gps_value)
|
||||
|
||||
|
|
@ -198,17 +201,17 @@ class AcousticDataTab(QWidget):
|
|||
|
||||
self.combobox_gps_system_choice = QComboBox()
|
||||
self.combobox_gps_system_choice.addItems([" ", "GPS1", "GPS2", "no GPS"])
|
||||
self.gridLayout_groupbox_gps_file.addWidget(self.combobox_gps_system_choice, 0, 0, 1, 1)
|
||||
self.gridLayout_groupbox_gps_file.addWidget(self.combobox_gps_system_choice, 0, 0, 1, 2)
|
||||
self.pushbutton_gps_file = QPushButton()
|
||||
self.pushbutton_gps_file.setIcon(self.icon_folder)
|
||||
self.gridLayout_groupbox_gps_file.addWidget(self.pushbutton_gps_file, 0, 1, 1, 1)
|
||||
self.gridLayout_groupbox_gps_file.addWidget(self.pushbutton_gps_file, 0, 2, 1, 1)
|
||||
self.lineEdit_gps_file = QLineEdit()
|
||||
self.gridLayout_groupbox_gps_file.addWidget(self.lineEdit_gps_file, 0, 2, 1, 1)
|
||||
self.gridLayout_groupbox_gps_file.addWidget(self.lineEdit_gps_file, 0, 3, 1, 2)
|
||||
|
||||
self.label_date_groupbox_gps_file = QLabel()
|
||||
self.gridLayout_groupbox_gps_file.addWidget(self.label_date_groupbox_gps_file, 1, 0, 1, 2)
|
||||
self.label_hour_groupbox_gps_file = QLabel()
|
||||
self.gridLayout_groupbox_gps_file.addWidget(self.label_hour_groupbox_gps_file, 1, 2, 1, 1)
|
||||
self.gridLayout_groupbox_gps_file.addWidget(self.label_hour_groupbox_gps_file, 1, 2, 1, 2)
|
||||
|
||||
# Download Push Button event : connect button clicked signal to open file slot
|
||||
# self.pushButton_gpsfile.clicked.connect(self.open_dialog_box)
|
||||
|
|
@ -221,38 +224,51 @@ class AcousticDataTab(QWidget):
|
|||
|
||||
self.gridLayout_time_offset = QGridLayout()
|
||||
self.label_time_offset = QLabel()
|
||||
self.gridLayout_time_offset.addWidget(self.label_time_offset, 0, 0, 1, 1)
|
||||
# self.gridLayout_time_offset.addWidget(self.label_time_offset, 0, 0, 1, 1)
|
||||
self.gridLayout_groupbox_gps_file.addWidget(self.label_time_offset, 2, 0, 1, 1)
|
||||
self.label_acoustic_gps_time = QLabel()
|
||||
self.label_acoustic_gps_time.setText(
|
||||
"T<span style= vertical-align:sub>acoustic</span> =" + " T<span style= vertical-align:sub>gps</span>")
|
||||
self.gridLayout_time_offset.addWidget(self.label_acoustic_gps_time, 0, 1, 1, 1)
|
||||
# self.gridLayout_time_offset.addWidget(self.label_acoustic_gps_time, 0, 1, 1, 1)
|
||||
self.gridLayout_groupbox_gps_file.addWidget(self.label_acoustic_gps_time, 2, 1, 1, 1)
|
||||
self.combobox_plus_minus = QComboBox()
|
||||
self.combobox_plus_minus.addItem("+")
|
||||
self.combobox_plus_minus.addItem("-")
|
||||
self.gridLayout_time_offset.addWidget(self.combobox_plus_minus, 0, 2, 1, 1)
|
||||
# self.gridLayout_time_offset.addWidget(self.combobox_plus_minus, 0, 2, 1, 1)
|
||||
self.gridLayout_groupbox_gps_file.addWidget(self.combobox_plus_minus, 2, 2, 1, 1)
|
||||
self.spinbox_time_offset_value = QSpinBox()
|
||||
self.gridLayout_time_offset.addWidget(self.spinbox_time_offset_value, 0, 3, 1, 1)
|
||||
# self.gridLayout_time_offset.addWidget(self.spinbox_time_offset_value, 0, 3, 1, 1)
|
||||
self.gridLayout_groupbox_gps_file.addWidget(self.spinbox_time_offset_value, 2, 3, 1, 1)
|
||||
self.label_seconds = QLabel()
|
||||
self.label_seconds.setText("sec")
|
||||
self.gridLayout_time_offset.addWidget(self.label_seconds, 0, 4, 1, 1)
|
||||
# self.gridLayout_time_offset.addWidget(self.label_seconds, 0, 4, 1, 1)
|
||||
self.gridLayout_groupbox_gps_file.addWidget(self.label_seconds, 2, 4, 1, 1)
|
||||
self.verticalLayout_groupbox_download.addLayout(self.gridLayout_time_offset)
|
||||
|
||||
# ++++++++++++++++++++++++++++++++++++++
|
||||
# | Group Box Measurements information |
|
||||
# ++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
self.verticalLayout_groupbox_info = QVBoxLayout(self.groupbox_info)
|
||||
|
||||
self.formLayout_temperature = QFormLayout()
|
||||
self.label_temperature = QLabel("Temperature : ")
|
||||
self.lineEdit_temperature = QLineEdit()
|
||||
self.formLayout_temperature.addRow(self.label_temperature, self.lineEdit_temperature)
|
||||
self.verticalLayout_groupbox_info.addLayout(self.formLayout_temperature)
|
||||
|
||||
self.gridLayout_goupbox_info = QGridLayout()
|
||||
self.verticalLayout_groupbox_info.addLayout(self.gridLayout_goupbox_info)
|
||||
# self.verticalLayout_groupbox_info = QVBoxLayout(self.groupbox_info)
|
||||
#
|
||||
# self.formLayout_temperature = QFormLayout()
|
||||
# self.label_temperature = QLabel("Temperature : ")
|
||||
# self.lineEdit_temperature = QLineEdit()
|
||||
# self.formLayout_temperature.addRow(self.label_temperature, self.lineEdit_temperature)
|
||||
# self.verticalLayout_groupbox_info.addLayout(self.formLayout_temperature)
|
||||
#
|
||||
# self.gridLayout_goupbox_info = QGridLayout()
|
||||
# self.verticalLayout_groupbox_info.addLayout(self.gridLayout_goupbox_info)
|
||||
|
||||
# --- Information for Aquascat ---
|
||||
self.gridLayout_goupbox_info = QGridLayout(self.groupbox_info)
|
||||
|
||||
self.label_temperature = QLabel("Temperature : ")
|
||||
self.gridLayout_goupbox_info.addWidget(self.label_temperature, 0, 0, 1, 1)
|
||||
self.lineEdit_temperature = QLineEdit()
|
||||
self.gridLayout_goupbox_info.addWidget(self.lineEdit_temperature, 0, 1, 1, 1)
|
||||
self.label_degreCelsius = QLabel("°C")
|
||||
self.gridLayout_goupbox_info.addWidget(self.label_degreCelsius, 0, 2, 1, 1)
|
||||
|
||||
self.label_profiles = QLabel()
|
||||
self.label_profiles_per_sec = QLabel()
|
||||
|
|
@ -742,17 +758,17 @@ class AcousticDataTab(QWidget):
|
|||
self.label_rx.show()
|
||||
self.label_tx.show()
|
||||
|
||||
self.gridLayout_goupbox_info.addWidget(self.label_profiles, 0, 0, 1, 1)
|
||||
self.gridLayout_goupbox_info.addWidget(self.label_profiles_per_sec, 0, 1, 1, 1)
|
||||
self.gridLayout_goupbox_info.addWidget(self.label_cells, 1, 0, 1, 1)
|
||||
self.gridLayout_goupbox_info.addWidget(self.label_cell_size, 1, 1, 1, 1)
|
||||
self.gridLayout_goupbox_info.addWidget(self.label_pulse_length, 2, 0, 1, 1)
|
||||
self.gridLayout_goupbox_info.addWidget(self.label_pings_per_sec, 3, 0, 1, 1)
|
||||
self.gridLayout_goupbox_info.addWidget(self.label_pings_per_profile, 3, 1, 1, 1)
|
||||
self.gridLayout_goupbox_info.addWidget(self.label_freq, 4, 0, 1, 2)
|
||||
self.gridLayout_goupbox_info.addWidget(self.label_kt, 5, 0, 1, 2)
|
||||
self.gridLayout_goupbox_info.addWidget(self.label_rx, 6, 0, 1, 2)
|
||||
self.gridLayout_goupbox_info.addWidget(self.label_tx, 7, 0, 1, 2)
|
||||
self.gridLayout_goupbox_info.addWidget(self.label_profiles, 1, 0, 1, 1)
|
||||
self.gridLayout_goupbox_info.addWidget(self.label_profiles_per_sec, 1, 1, 1, 1)
|
||||
self.gridLayout_goupbox_info.addWidget(self.label_cells, 2, 0, 1, 1)
|
||||
self.gridLayout_goupbox_info.addWidget(self.label_cell_size, 2, 1, 1, 1)
|
||||
self.gridLayout_goupbox_info.addWidget(self.label_pulse_length, 3, 0, 1, 1)
|
||||
self.gridLayout_goupbox_info.addWidget(self.label_pings_per_sec, 4, 0, 1, 1)
|
||||
self.gridLayout_goupbox_info.addWidget(self.label_pings_per_profile, 4, 1, 1, 1)
|
||||
self.gridLayout_goupbox_info.addWidget(self.label_freq, 5, 0, 1, 2)
|
||||
self.gridLayout_goupbox_info.addWidget(self.label_kt, 6, 0, 1, 2)
|
||||
self.gridLayout_goupbox_info.addWidget(self.label_rx, 7, 0, 1, 2)
|
||||
self.gridLayout_goupbox_info.addWidget(self.label_tx, 8, 0, 1, 2)
|
||||
|
||||
def groupbox_measurement_information_UBSediFlow(self):
|
||||
# self.gridLayout_goupbox_info.itemAt(0).widget().deleteLater()
|
||||
|
|
@ -838,6 +854,7 @@ class AcousticDataTab(QWidget):
|
|||
self.label_hour_groupbox_acoustic_file.setText(
|
||||
_translate("CONSTANT_STRING", cs.HOUR) + ": " + str(stg.hour))
|
||||
self.fill_measurements_information_groupbox()
|
||||
self.plot_transect_with_BS_raw_data()
|
||||
self.combobox_freq_choice.addItems([f for f in stg.freq_text])
|
||||
self.combobox_frequency_profile.addItems([f for f in stg.freq_text])
|
||||
|
||||
|
|
@ -1136,7 +1153,7 @@ class AcousticDataTab(QWidget):
|
|||
self.fig_BS.supxlabel('Time (sec)', fontsize=10)
|
||||
self.fig_BS.supylabel('Depth (m)', fontsize=10)
|
||||
cbar = self.fig_BS.colorbar(pcm, ax=self.axis_BS[:], shrink=1, location='right')
|
||||
cbar.set_label(label='Backscatter acoustic signal (V)', rotation=270, labelpad=10)
|
||||
cbar.set_label(label='Acoustic backscatter signal (V)', rotation=270, labelpad=10)
|
||||
self.fig_BS.canvas.draw_idle()
|
||||
|
||||
self.plot_profile()
|
||||
|
|
@ -1259,6 +1276,12 @@ class AcousticDataTab(QWidget):
|
|||
pcm = self.axis_BS[f].pcolormesh(stg.t[f, :], -stg.r[f, :], np.log(stg.BS_cross_section[f, :, :]),
|
||||
cmap='Blues')
|
||||
|
||||
# --- Plot river bottom line ---
|
||||
|
||||
if stg.r_bottom.size != 0:
|
||||
self.axis_BS[f].plot(stg.t[self.combobox_freq_choice.currentIndex(), :], -stg.r_bottom,
|
||||
color='black', linewidth=1, linestyle="solid")
|
||||
|
||||
# --- Plot red solid line on transect to visualize position of plotted profile ---
|
||||
self.axis_BS[self.combobox_frequency_profile.currentIndex()].plot(
|
||||
stg.t[0, # self.combobox_frequency_profile.currentIndex(),
|
||||
|
|
@ -1373,18 +1396,54 @@ class AcousticDataTab(QWidget):
|
|||
|
||||
self.slider.setMaximum(stg.t.shape[1])
|
||||
|
||||
slider_value = [self.slider.value() - 1 if self.slider.value() -1 <= stg.t.shape[1]-1 else np.max(stg.t.shape[1]-1)][0]
|
||||
|
||||
self.axis_profile.cla()
|
||||
self.axis_profile.plot(stg.BS_cross_section[
|
||||
self.combobox_frequency_profile.currentIndex(), :,
|
||||
[self.slider.value() - 1 if self.slider.value() -1 <= stg.t.shape[1]-1 else np.max(stg.t.shape[1]-1)][0]],
|
||||
|
||||
# --- Profile plot ---
|
||||
self.axis_profile.plot(stg.BS_cross_section[self.combobox_frequency_profile.currentIndex(), :, slider_value],
|
||||
-stg.r[self.combobox_frequency_profile.currentIndex(), :],
|
||||
linestyle='solid', color='k', linewidth=1)
|
||||
self.axis_profile.text(.95, .05, stg.freq_text[self.combobox_frequency_profile.currentIndex()],
|
||||
fontsize=10, fontweight='bold', fontname="Ubuntu",
|
||||
|
||||
# --- Plot upper limit line ---
|
||||
|
||||
# self.axis_profile.plot([0,
|
||||
# stg.BS_cross_section[self.combobox_frequency_profile.currentIndex(),
|
||||
# stg.ind_bottom[slider_value],
|
||||
# slider_value]],
|
||||
# -stg.
|
||||
# )
|
||||
|
||||
# --- Plot lower limit line ---
|
||||
|
||||
# --- Write frequency on graph ---
|
||||
|
||||
self.axis_profile.text(.95, .90, stg.freq_text[self.combobox_frequency_profile.currentIndex()],
|
||||
fontsize=14, fontweight='bold', fontname="Ubuntu",
|
||||
fontstyle="normal", c="black", alpha=0.2,
|
||||
horizontalalignment='right', verticalalignment='bottom',
|
||||
transform=self.axis_profile.transAxes)
|
||||
|
||||
# --- Plot bottom line ---
|
||||
|
||||
if stg.r_bottom.size != 0:
|
||||
|
||||
self.axis_profile.plot([0,
|
||||
np.nanmax(stg.BS_cross_section[self.combobox_frequency_profile.currentIndex(),
|
||||
:, slider_value])],
|
||||
-stg.r[self.combobox_frequency_profile.currentIndex(), stg.ind_bottom[slider_value]]*np.ones(2),
|
||||
linestyle='solid', color='r', linewidth=1)
|
||||
|
||||
position_x = (stg.r[self.combobox_frequency_profile.currentIndex(), stg.ind_bottom[slider_value]] /
|
||||
np.nanmax(stg.r[self.combobox_frequency_profile.currentIndex(), :]))
|
||||
|
||||
self.axis_profile.text(.95, 1-position_x + 0.05, "River bed",
|
||||
fontsize=10, fontweight='normal', fontname="Times New Roman",
|
||||
fontstyle="italic", c="red", alpha=0.2,
|
||||
horizontalalignment='right', verticalalignment='bottom',
|
||||
transform=self.axis_profile.transAxes)
|
||||
|
||||
|
||||
self.fig_profile.supxlabel("Acoustic Backscatter Signal (V)")
|
||||
self.fig_profile.supylabel("Depth (m)")
|
||||
self.fig_profile.canvas.draw_idle()
|
||||
|
|
@ -1813,7 +1872,18 @@ class AcousticDataTab(QWidget):
|
|||
# int(stg.tmax[self.combobox_freq_choice.currentIndex()])]
|
||||
stg.val_bottom = val_bottom#[int(stg.tmin[self.combobox_freq_choice.currentIndex()]):
|
||||
# int(stg.tmax[self.combobox_freq_choice.currentIndex()])]
|
||||
stg.ind_bottom = r_bottom_ind
|
||||
|
||||
print("stg.ind_bottom : ", stg.ind_bottom)
|
||||
print("stg.val_bottom : ", stg.val_bottom)
|
||||
|
||||
stg.BS_stream_bed = deepcopy(stg.BS_cross_section)
|
||||
for f, _ in enumerate(stg.freq):
|
||||
for k, _ in enumerate(stg.r_bottom):
|
||||
# print(k, np.where(stg.r >= stg.r_bottom[k])[0])
|
||||
stg.BS_stream_bed[
|
||||
f, np.where(stg.r[self.combobox_freq_choice.currentIndex(), :] >= stg.r_bottom[k])[
|
||||
0], k] = np.nan
|
||||
|
||||
|
||||
# --- Plot transect BS with bathymetry ---
|
||||
|
|
@ -1858,6 +1928,10 @@ class AcousticDataTab(QWidget):
|
|||
horizontalalignment='right', verticalalignment='bottom',
|
||||
transform=self.axis_BS[f].transAxes)
|
||||
|
||||
# --- Update plot profile ---
|
||||
self.update_plot_profile()
|
||||
|
||||
|
||||
self.fig_BS.canvas.draw_idle()
|
||||
|
||||
# # --- Plot transect SNR with bathymetry ---
|
||||
|
|
|
|||
Loading…
Reference in New Issue