refactor some structure

This commit is contained in:
Dustella 2025-01-23 23:31:52 +08:00
parent 0c9297c0fa
commit 3f46a49b3a
Signed by: Dustella
GPG Key ID: 35AA0AA3DC402D5C
4 changed files with 41 additions and 17 deletions

View File

@ -8,9 +8,9 @@ from balloon.plot_once_backend import render_by_mode_single
from balloon.plot_year_backend import get_all_modes, render_based_on_mode from balloon.plot_year_backend import get_all_modes, render_based_on_mode
from utils import * from utils import *
all_year_data = pd.read_parquet("./cache/ballon_data_lin.parquet") all_year_data = pd.read_parquet("./balloon/ballon_data_lin.parquet")
all_ballon_files = glob.glob("./data/探空气球/**/**.nc", recursive=True) all_ballon_files = glob.glob("./balloon/data/**/**.nc", recursive=True)
def get_dataframe_between_year(start_year, end_year): def get_dataframe_between_year(start_year, end_year):
res = all_year_data res = all_year_data
@ -77,5 +77,6 @@ def render_single_path():
data = balloon.read_data(path) data = balloon.read_data(path)
buff = render_by_mode_single(data, mode) buff = render_by_mode_single(data, mode)
if buff is None: if buff is None:
return jsonify(message="No wave detected") # give a 204 response if no data is found
return '', 204
return send_file(buff, mimetype='image/png') return send_file(buff, mimetype='image/png')

View File

@ -378,8 +378,8 @@ def get_final_df(H, year, station):
# 文件路径设置 # 文件路径设置
file_dir = rf'./radar/data/{station}/{year}' # 数据文件路径 file_dir = rf'./radar/data/{station}/{year}' # 数据文件路径
output_dir = rf'./out\{station}\{year}' # 参数txt、图片输出路径 # output_dir = rf'./out\{station}\{year}' # 参数txt、图片输出路径
os.makedirs(output_dir, exist_ok=True) # 确保输出路径存在 # os.makedirs(output_dir, exist_ok=True) # 确保输出路径存在
# 1------------------------提取整个文件夹的数据 # 1------------------------提取整个文件夹的数据
# 获取所有 txt 文件 # 获取所有 txt 文件

View File

@ -171,8 +171,8 @@ def final_plot_v2(year, station, model_name, month_range=(1,12)):
""" """
# 配置文件路径 # 配置文件路径
file_dir = rf'./radar/data/{station}/{year}' file_dir = rf'./radar/data/{station}/{year}'
output_dir = rf'./radar/tmp\{station}\{year}\时空' # output_dir = rf'./radar/tmp\{station}\{year}\时空'
os.makedirs(output_dir, exist_ok=True) # os.makedirs(output_dir, exist_ok=True)
# 数据预处理 # 数据预处理
file_list = glob.glob(file_dir + '/**/*.txt', recursive=True) file_list = glob.glob(file_dir + '/**/*.txt', recursive=True)

View File

@ -8,15 +8,37 @@ from saber.utils import *
saber_module = Blueprint('saber', __name__) saber_module = Blueprint('saber', __name__)
lat_range = (30.0, 40.0) # lat_range = (30.0, 40.0)
alt_range = (20.0, 105.0) # alt_range = (20.0, 105.0)
lambda_range = (2, 15) # lambda_range = (2, 15)
lvboin = True # lvboin = True
processor = DataProcessor( # processor = DataProcessor(
lat_range=lat_range, alt_range=alt_range, lambda_range=lambda_range, lvboin=lvboin) # lat_range=lat_range, alt_range=alt_range, lambda_range=lambda_range, lvboin=lvboin)
renderer = Renderer() renderer = Renderer()
def get_processer():
lat_str = request.args.get("lat_range")
if lat_str is None:
lat_str = "30.0,40.0"
lat_range = tuple(map(float, lat_str.split(",")))
alt_str = request.args.get("alt_range")
if alt_str is None:
alt_str = "20.0,105.0"
alt_range = tuple(map(float, alt_str.split(",")))
lambda_str = request.args.get("lambda_range")
if lambda_str is None:
lambda_str = "2,15"
lambda_range = tuple(map(int, lambda_str.split(",")))
lvboin = request.args.get("lvboin") == "true"
if lvboin is None:
lvboin = True
_p = DataProcessor(
lat_range=lat_range, alt_range=alt_range, lambda_range=lambda_range, lvboin=lvboin)
return _p
def extract_payload(): def extract_payload():
buffer = BytesIO() buffer = BytesIO()
@ -51,6 +73,7 @@ def do_plot_wave_day_fitting():
height = request.args.get("height") height = request.args.get("height")
ncfile = data_nc_load(path) ncfile = data_nc_load(path)
processor = get_processer()
data = processor.process_day(ncfile, int(day)) data = processor.process_day(ncfile, int(day))
renderer.plot_wave_fitting(data, int(height)) renderer.plot_wave_fitting(data, int(height))
return extract_payload() return extract_payload()
@ -63,7 +86,7 @@ def do_day_fft_ifft_plot():
cycle_no = request.args.get("cycle_no") cycle_no = request.args.get("cycle_no")
ncfile = data_nc_load(path) ncfile = data_nc_load(path)
processor = get_processer()
data = processor.process_day(ncfile, int(day)) data = processor.process_day(ncfile, int(day))
renderer.day_fft_ifft_plot(wave_data=data, cycle_no=int(cycle_no)) renderer.day_fft_ifft_plot(wave_data=data, cycle_no=int(cycle_no))
return extract_payload() return extract_payload()
@ -76,7 +99,7 @@ def do_day_cycle_power_wave_plot():
cycle_no = request.args.get("cycle_no") cycle_no = request.args.get("cycle_no")
ncfile = data_nc_load(path) ncfile = data_nc_load(path)
processor = get_processer()
data = processor.process_day(ncfile, int(day)) data = processor.process_day(ncfile, int(day))
renderer.day_cycle_power_wave_plot(wave_data=data, cycle_no=int(cycle_no)) renderer.day_cycle_power_wave_plot(wave_data=data, cycle_no=int(cycle_no))
return extract_payload() return extract_payload()
@ -88,7 +111,7 @@ def do_month_power_wave_plot():
month = request.args.get("month") month = request.args.get("month")
ncfile = data_nc_load(path) ncfile = data_nc_load(path)
processor = get_processer()
data = processor.process_month(ncfile) data = processor.process_month(ncfile)
renderer.month_power_wave_plot(wave_data=data, date_time=ncfile.date_time) renderer.month_power_wave_plot(wave_data=data, date_time=ncfile.date_time)
return extract_payload() return extract_payload()
@ -97,7 +120,7 @@ def do_month_power_wave_plot():
@saber_module.route("/render/year_power_wave_plot") @saber_module.route("/render/year_power_wave_plot")
def do_year_power_wave_plot(): def do_year_power_wave_plot():
year = request.args.get("year") year = request.args.get("year")
processor = get_processer()
data = processor.process_year([ data = processor.process_year([
data_nc_load(path) for path in glob.glob(f"./saber/data/{year}/*.nc") data_nc_load(path) for path in glob.glob(f"./saber/data/{year}/*.nc")
]) ])