From 4ec46208dd9f86681d7bd2bf609c39e358127f49 Mon Sep 17 00:00:00 2001 From: DXC Date: Fri, 10 Jul 2026 14:49:22 +0800 Subject: [PATCH] =?UTF-8?q?feat(processing=5Fpipelines.py):=20=E5=90=AF?= =?UTF-8?q?=E7=94=A8=203D=E6=95=A3=E7=82=B9/=E9=A3=8E=E7=8E=AB=E7=91=B0/?= =?UTF-8?q?=E9=A3=8E=E9=80=9F=E6=97=B6=E5=BA=8F=E5=9B=BE=E8=A1=A8=E5=88=9B?= =?UTF-8?q?=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 两处修改: 1. InSituSensorStrategy.process(): - 原代码: scatter_3d[gas]=None, windrose=None, wind_timeseries=None - 修复: 调用 plotting.scatter_3d()/windrose()/time_series() 创建实际图表, 每个调用独立 try/except 保护,失败时回退至 blank_figure() 2. 模块导入: - 新增 import plotly.graph_objects as go 供 Curtain/Spiral 空间策略中的 fig.add_trace(go.Scatter3d(...)) 使用 (该代码此前存在但从未执行,因为 fig 始终为 None) 影响范围:HTML 报告中 3D 飞行轨迹图、风玫瑰图、风速时序图从空白变为正常显示 --- src/gasflux/processing_pipelines.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/gasflux/processing_pipelines.py b/src/gasflux/processing_pipelines.py index 9f9b95b..8bd6bd7 100644 --- a/src/gasflux/processing_pipelines.py +++ b/src/gasflux/processing_pipelines.py @@ -5,6 +5,7 @@ from scipy import stats import pandas as pd import yaml +import plotly.graph_objects as go from src.gasflux import background,plotting,processing,reporting,interpolation,pre_processing,gas @@ -123,9 +124,22 @@ class InSituSensorStrategy(SensorStrategy): def process(self): logger.info("Processing in-situ (point) data") for gas in self.data_processor.gases: - self.data_processor.figs["scatter_3d"][gas] = None - self.data_processor.figs["windrose"] = None - self.data_processor.figs["wind_timeseries"] = None + # Create 3D scatter plot of flight path with gas concentration + try: + self.data_processor.figs["scatter_3d"][gas] = plotting.scatter_3d( + self.data_processor.df, gas + ) + except Exception: + self.data_processor.figs["scatter_3d"][gas] = plotting.blank_figure() + # Create wind rose and time series plots + try: + self.data_processor.figs["windrose"] = plotting.windrose(self.data_processor.df) + except Exception: + self.data_processor.figs["windrose"] = plotting.blank_figure() + try: + self.data_processor.figs["wind_timeseries"] = plotting.time_series(self.data_processor.df) + except Exception: + self.data_processor.figs["wind_timeseries"] = plotting.blank_figure() class SpatialProcessingStrategy(ABC):