常规更新

This commit is contained in:
2026-04-20 09:43:21 +08:00
parent 729b283f29
commit dd47ab5f44
40 changed files with 1306 additions and 9935 deletions

View File

@ -4,7 +4,6 @@ from pathlib import Path
from scipy import stats
import pandas as pd
import plotly.graph_objects as go
import yaml
from src.gasflux import background,plotting,processing,reporting,interpolation,pre_processing,gas
@ -124,16 +123,9 @@ 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] = plotting.scatter_3d(
df=self.data_processor.df, color=gas, colorbar_title=f"{gas.upper()} flux (kg/m²/h)"
)
if SpatialProcessingStrategy == CurtainSpatialProcessingStrategy:
self.data_processor.figs["windrose"] = plotting.windrose(self.data_processor.df, plot_transect=True)
else:
self.data_processor.figs["windrose"] = plotting.windrose(self.data_processor.df)
self.data_processor.figs["wind_timeseries"] = plotting.time_series(
self.data_processor.df, ys=["windspeed", "winddir"]
)
self.data_processor.figs["scatter_3d"][gas] = None
self.data_processor.figs["windrose"] = None
self.data_processor.figs["wind_timeseries"] = None
class SpatialProcessingStrategy(ABC):
@ -164,15 +156,17 @@ class CurtainSpatialProcessingStrategy(SpatialProcessingStrategy):
for gas_name in self.data_processor.gases:
#计算通量
self.data_processor.df = gas.gas_flux_column(self.data_processor.df, gas_name)
self.data_processor.figs["scatter_3d"][gas_name].add_trace(
go.Scatter3d(
x=self.data_processor.dfs["removed"]["utm_easting"],
y=self.data_processor.dfs["removed"]["utm_northing"],
z=self.data_processor.dfs["removed"]["height_ato"],
mode="markers",
marker={"size": 2, "color": "black", "symbol": "circle", "opacity": 0.5},
fig = self.data_processor.figs["scatter_3d"].get(gas_name)
if fig is not None:
fig.add_trace(
go.Scatter3d(
x=self.data_processor.dfs["removed"]["utm_easting"],
y=self.data_processor.dfs["removed"]["utm_northing"],
z=self.data_processor.dfs["removed"]["height_ato"],
mode="markers",
marker={"size": 2, "color": "black", "symbol": "circle", "opacity": 0.5},
)
)
)
class SpiralSpatialProcessingStrategy(SpatialProcessingStrategy):
@ -203,15 +197,17 @@ class SpiralSpatialProcessingStrategy(SpatialProcessingStrategy):
self.data_processor.df["x"] = self.data_processor.df["circumference_distance"]
for gas_name in self.data_processor.gases:
self.data_processor.df = gas.gas_flux_column(self.data_processor.df, gas_name)
self.data_processor.figs["scatter_3d"][gas_name].add_trace(
go.Scatter3d(
x=self.data_processor.dfs["removed"]["utm_easting"],
y=self.data_processor.dfs["removed"]["utm_northing"],
z=self.data_processor.dfs["removed"]["height_ato"],
mode="markers",
marker={"size": 2, "color": "black", "symbol": "circle", "opacity": 0.5},
fig = self.data_processor.figs["scatter_3d"].get(gas_name)
if fig is not None:
fig.add_trace(
go.Scatter3d(
x=self.data_processor.dfs["removed"]["utm_easting"],
y=self.data_processor.dfs["removed"]["utm_northing"],
z=self.data_processor.dfs["removed"]["height_ato"],
mode="markers",
marker={"size": 2, "color": "black", "symbol": "circle", "opacity": 0.5},
)
)
)
class InterpolationStrategy(ABC):