From a572b52239525e558faba249bea767f4164a1cf0 Mon Sep 17 00:00:00 2001 From: duxin Date: Thu, 9 Jul 2026 14:49:36 +0800 Subject: [PATCH] fix: formula report reads distribution maps from 12_visualization/distribution_maps/ instead of 11_Thematic_Map --- src/postprocessing/report_word.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/postprocessing/report_word.py b/src/postprocessing/report_word.py index 66809c0..d5eb520 100644 --- a/src/postprocessing/report_word.py +++ b/src/postprocessing/report_word.py @@ -947,7 +947,9 @@ class WaterQualityReportGenerator: from docx.enum.text import WD_ALIGN_PARAGRAPH vis_dir = self.visualization_dir - thematic_dir = self.work_dir / "11_Thematic_Map" + # 分布图优先从 12_visualization/distribution_maps 找,再回退 11_Thematic_Map + dist_map_dir = vis_dir / "distribution_maps" + thematic_dir = dist_map_dir if dist_map_dir.is_dir() else self.work_dir / "11_Thematic_Map" csv_dir = self.work_dir / "10_WaterIndex_CSV" if output_path is None: @@ -956,10 +958,17 @@ class WaterQualityReportGenerator: else: output_path = Path(output_path) - # 扫描实际数据量,计算进度脉冲数(非数据量本身) + # 扫描实际数据量:专题图优先匹配 distribution/rendered 命名 csv_files = sorted(csv_dir.glob("*.csv")) if csv_dir.is_dir() else [] - tif_files = (sorted(thematic_dir.glob("*.tif")) + sorted(thematic_dir.glob("*.png")) - ) if thematic_dir.is_dir() else [] + tif_files = [] + if thematic_dir.is_dir(): + tif_files = (sorted(thematic_dir.glob("*distribution*.png")) + + sorted(thematic_dir.glob("*rendered*.png")) + + sorted(thematic_dir.glob("*.tif")) + + sorted(thematic_dir.glob("*.png"))) + # 去重(同名文件可能多次匹配) + seen = set() + tif_files = [f for f in tif_files if f.name not in seen and not seen.add(f.name)] n_csv = len(csv_files) n_maps = min(len(tif_files), 20) n_csv_pulses = max(1, n_csv // 10) # 每 10 个 CSV 一次脉冲