添加公式方法
This commit is contained in:
@ -253,7 +253,7 @@ class Step11MapPanel(QWidget):
|
||||
self.geotiff_dir_label = QLabel("水色指数目录:")
|
||||
self.geotiff_dir_label.setMinimumWidth(120)
|
||||
self.geotiff_dir_edit = QLineEdit()
|
||||
self.geotiff_dir_edit.setPlaceholderText("选择 8_WaterIndex_Images 文件夹(批量渲染)…")
|
||||
self.geotiff_dir_edit.setPlaceholderText("选择 10_WaterIndex_Images 文件夹(批量渲染)…")
|
||||
geotiff_dir_btn = QPushButton("浏览…")
|
||||
geotiff_dir_btn.setMaximumWidth(80)
|
||||
geotiff_dir_btn.clicked.connect(self.browse_geotiff_dir)
|
||||
@ -392,7 +392,7 @@ class Step11MapPanel(QWidget):
|
||||
"""浏览 GeoTIFF 文件夹(批量模式)"""
|
||||
default = self._get_default_work_dir()
|
||||
if default:
|
||||
default = os.path.join(default, "8_WaterIndex_Images")
|
||||
default = os.path.join(default, "10_WaterIndex_Images")
|
||||
d = QFileDialog.getExistingDirectory(
|
||||
self, "选择水色指数 GeoTIFF 文件夹", default
|
||||
)
|
||||
@ -514,18 +514,18 @@ class Step11MapPanel(QWidget):
|
||||
pred_dir = None
|
||||
if hasattr(main_window, 'step11_prediction_panel'):
|
||||
step8_widget = getattr(main_window.step11_prediction_panel, 'output_file', None)
|
||||
step8_output = ""
|
||||
step10_output = ""
|
||||
if hasattr(step8_widget, 'get_path'):
|
||||
step8_output = step8_widget.get_path() or ""
|
||||
step10_output = step8_widget.get_path() or ""
|
||||
elif hasattr(step8_widget, 'text'):
|
||||
step8_output = step8_widget.text() or ""
|
||||
step10_output = step8_widget.text() or ""
|
||||
|
||||
if step8_output:
|
||||
if step10_output:
|
||||
# 若为相对路径,使用 work_dir 合成为绝对路径
|
||||
if not os.path.isabs(step8_output):
|
||||
step8_output = os.path.join(self.work_dir or '', step8_output).replace('\\', '/')
|
||||
if not os.path.isabs(step10_output):
|
||||
step10_output = os.path.join(self.work_dir or '', step10_output).replace('\\', '/')
|
||||
# 提取父目录后追加 Machine_Learning_Prediction(最底层真实子目录)
|
||||
base_pred_dir = str(Path(step8_output).parent)
|
||||
base_pred_dir = str(Path(step10_output).parent)
|
||||
ml_pred_dir = Path(base_pred_dir) / "Machine_Learning_Prediction"
|
||||
pred_dir = str(ml_pred_dir) if ml_pred_dir.exists() else base_pred_dir
|
||||
|
||||
@ -594,13 +594,13 @@ class Step11MapPanel(QWidget):
|
||||
print("⚠️ 提示:专题图生成模块需传入标准矢量边界文件 (.shp),请手动选择。")
|
||||
|
||||
# 6. 自动探测 Step 8 输出的水色指数 GeoTIFF(GeoTIFF 渲染模式)
|
||||
step8_out_dir = Path(self.work_dir) / "8_WaterIndex_Images" if self.work_dir else None
|
||||
if step8_out_dir and step8_out_dir.is_dir():
|
||||
step10_out_dir = Path(self.work_dir) / "10_WaterIndex_Images" if self.work_dir else None
|
||||
if step10_out_dir and step10_out_dir.is_dir():
|
||||
# GeoTIFF 批量模式:填充目录供批量渲染
|
||||
if not (self.geotiff_dir_edit.text() or "").strip():
|
||||
self.geotiff_dir_edit.setText(str(step8_out_dir))
|
||||
self.geotiff_dir_edit.setText(str(step10_out_dir))
|
||||
# GeoTIFF 单文件模式:默认选中第一个
|
||||
tif_files = sorted(step8_out_dir.glob("*.tif"))
|
||||
tif_files = sorted(step10_out_dir.glob("*.tif"))
|
||||
if tif_files and not (self.geotiff_file.get_path() or "").strip():
|
||||
self.geotiff_file.set_path(str(tif_files[0]))
|
||||
except Exception as e:
|
||||
|
||||
@ -253,7 +253,7 @@ class Step14Panel(QWidget):
|
||||
self.geotiff_dir_label = QLabel("水色指数目录:")
|
||||
self.geotiff_dir_label.setMinimumWidth(120)
|
||||
self.geotiff_dir_edit = QLineEdit()
|
||||
self.geotiff_dir_edit.setPlaceholderText("选择 8_WaterIndex_Images 文件夹(批量渲染)…")
|
||||
self.geotiff_dir_edit.setPlaceholderText("选择 10_WaterIndex_Images 文件夹(批量渲染)…")
|
||||
geotiff_dir_btn = QPushButton("浏览…")
|
||||
geotiff_dir_btn.setMaximumWidth(80)
|
||||
geotiff_dir_btn.clicked.connect(self.browse_geotiff_dir)
|
||||
@ -392,7 +392,7 @@ class Step14Panel(QWidget):
|
||||
"""浏览 GeoTIFF 文件夹(批量模式)"""
|
||||
default = self._get_default_work_dir()
|
||||
if default:
|
||||
default = os.path.join(default, "8_WaterIndex_Images")
|
||||
default = os.path.join(default, "10_WaterIndex_Images")
|
||||
d = QFileDialog.getExistingDirectory(
|
||||
self, "选择水色指数 GeoTIFF 文件夹", default
|
||||
)
|
||||
@ -514,18 +514,18 @@ class Step14Panel(QWidget):
|
||||
pred_dir = None
|
||||
if hasattr(main_window, 'step11_prediction_panel'):
|
||||
step8_widget = getattr(main_window.step11_prediction_panel, 'output_file', None)
|
||||
step8_output = ""
|
||||
step10_output = ""
|
||||
if hasattr(step8_widget, 'get_path'):
|
||||
step8_output = step8_widget.get_path() or ""
|
||||
step10_output = step8_widget.get_path() or ""
|
||||
elif hasattr(step8_widget, 'text'):
|
||||
step8_output = step8_widget.text() or ""
|
||||
step10_output = step8_widget.text() or ""
|
||||
|
||||
if step8_output:
|
||||
if step10_output:
|
||||
# 若为相对路径,使用 work_dir 合成为绝对路径
|
||||
if not os.path.isabs(step8_output):
|
||||
step8_output = os.path.join(self.work_dir or '', step8_output).replace('\\', '/')
|
||||
if not os.path.isabs(step10_output):
|
||||
step10_output = os.path.join(self.work_dir or '', step10_output).replace('\\', '/')
|
||||
# 提取父目录后追加 Machine_Learning_Prediction(最底层真实子目录)
|
||||
base_pred_dir = str(Path(step8_output).parent)
|
||||
base_pred_dir = str(Path(step10_output).parent)
|
||||
ml_pred_dir = Path(base_pred_dir) / "Machine_Learning_Prediction"
|
||||
pred_dir = str(ml_pred_dir) if ml_pred_dir.exists() else base_pred_dir
|
||||
|
||||
@ -594,13 +594,13 @@ class Step14Panel(QWidget):
|
||||
print("⚠️ 提示:专题图生成模块需传入标准矢量边界文件 (.shp),请手动选择。")
|
||||
|
||||
# 6. 自动探测 Step 8 输出的水色指数 GeoTIFF(GeoTIFF 渲染模式)
|
||||
step8_out_dir = Path(self.work_dir) / "8_WaterIndex_Images" if self.work_dir else None
|
||||
if step8_out_dir and step8_out_dir.is_dir():
|
||||
step10_out_dir = Path(self.work_dir) / "10_WaterIndex_Images" if self.work_dir else None
|
||||
if step10_out_dir and step10_out_dir.is_dir():
|
||||
# GeoTIFF 批量模式:填充目录供批量渲染
|
||||
if not (self.geotiff_dir_edit.text() or "").strip():
|
||||
self.geotiff_dir_edit.setText(str(step8_out_dir))
|
||||
self.geotiff_dir_edit.setText(str(step10_out_dir))
|
||||
# GeoTIFF 单文件模式:默认选中第一个
|
||||
tif_files = sorted(step8_out_dir.glob("*.tif"))
|
||||
tif_files = sorted(step10_out_dir.glob("*.tif"))
|
||||
if tif_files and not (self.geotiff_file.get_path() or "").strip():
|
||||
self.geotiff_file.set_path(str(tif_files[0]))
|
||||
except Exception as e:
|
||||
|
||||
@ -1378,7 +1378,8 @@ class WaterQualityGUI(QMainWindow):
|
||||
'step11_map': "14_visualization/"
|
||||
}
|
||||
|
||||
# 定义步骤间的依赖关系:{当前步骤: {输入字段: (依赖步骤, 输出类型, 面板属性名)}}
|
||||
# 依赖关系字典结构:
|
||||
# '当前步骤ID': { '依赖参数名': ('上游步骤ID', '上游输出类型/Key', '当前步骤接收该路径的组件属性名') }
|
||||
self.step_dependencies = {
|
||||
'step2': {
|
||||
'img_path': ('step1', 'reference_img', 'img_file'),
|
||||
@ -1386,31 +1387,36 @@ class WaterQualityGUI(QMainWindow):
|
||||
},
|
||||
'step3': {
|
||||
'img_path': ('step1', 'reference_img', 'img_file'),
|
||||
'water_mask': ('step1', 'water_mask', 'water_mask_file'),
|
||||
'water_mask': ('step1', 'water_mask', 'water_mask_file')
|
||||
},
|
||||
'step4_sampling': {
|
||||
'deglint_img_path': ('step3', 'deglint_image', 'deglint_img_file'),
|
||||
'water_mask_path': ('step1', 'water_mask', 'water_mask_file')
|
||||
},
|
||||
'step5_clean': {
|
||||
'csv_path': ('step4_sampling', 'sampling_spectra', 'csv_file') # step5 寻找 step4 的采样点
|
||||
},
|
||||
'step6_feature': {
|
||||
'deglint_img_path': ('step3', 'deglint_image', 'deglint_img_file'),
|
||||
'csv_path': ('step5_clean', 'processed_data', 'csv_file'),
|
||||
'boundary_mask_path': ('step1', 'water_mask', 'boundary_mask_file'),
|
||||
'boundary_mask_path': ('step1', 'water_mask', 'water_mask_file'), # step6_panel里叫water_mask_file
|
||||
'glint_mask_path': ('step2', 'glint_mask', 'glint_mask_file')
|
||||
},
|
||||
'step7_index': {
|
||||
'training_csv_path': ('step6_feature', 'training_spectra', 'output_file')
|
||||
'training_csv_path': ('step6_feature', 'training_spectra', 'training_data_widget') # step7 找 step6 的光谱提取
|
||||
},
|
||||
'step8_ml_train': {
|
||||
'training_csv_path': ('step7_index', 'water_indices', 'csv_file')
|
||||
},
|
||||
'step4_sampling': {
|
||||
'deglint_img_path': ('step3', 'deglint_image', 'deglint_img_file'),
|
||||
'water_mask_path': ('step1', 'water_mask', 'water_mask_file'),
|
||||
'glint_mask_path': ('step2', 'glint_mask', 'glint_mask_file')
|
||||
'training_csv_file': ('step7_index', 'training_spectra_indices', 'training_csv_file') # step8 找 step7 的指数宽表
|
||||
},
|
||||
'step9_ml_predict': {
|
||||
'sampling_csv_path': ('step4_sampling', 'sampling_points', 'sampling_csv_file'),
|
||||
'models_dir': ('step8_ml_train', 'models', 'models_dir_file')
|
||||
'models_dir': ('step8_ml_train', 'Supervised_Model_Training', 'models_dir_widget')
|
||||
},
|
||||
'step10_watercolor': {
|
||||
'bsq_file': ('step3', 'deglint_image', 'bsq_file') # 水色反演需要去耀斑BSQ影像
|
||||
},
|
||||
'step11_map': {
|
||||
'prediction_csv_path': ('step9_ml_predict', 'predictions', 'prediction_csv_file')
|
||||
'prediction_csv_dir_edit': ('step9_ml_predict', 'Machine_Learning_Prediction', 'prediction_csv_dir_edit'),
|
||||
'geotiff_dir_edit': ('step10_watercolor', 'WaterIndex_Images', 'geotiff_dir_edit')
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user