From 7fbc613dedeae5a1884585b3d21c0bb8e6c542a5 Mon Sep 17 00:00:00 2001 From: duxin Date: Wed, 8 Jul 2026 13:14:40 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=B1=80=E9=83=A8=20Kriging=20=E7=BD=91?= =?UTF-8?q?=E6=A0=BC=E8=8C=83=E5=9B=B4=E4=BD=BF=E7=94=A8=E7=BC=93=E5=86=B2?= =?UTF-8?q?=E5=8C=BA=E5=AF=BC=E8=87=B4=2010x=20=E5=86=97=E4=BD=99=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E5=8D=A1=E6=AD=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题: sub_grid_x/y 使用了缓冲区范围 (block+500m) 而非块范围, 导致每个 500m 块的网格点从 ~457x460 膨胀到 ~1500x1500 (9x), 50 个块合计需计算 1.12 亿次 kriging, 任务构建阶段就卡死。 修复: sub_grid_x/y 改为仅使用块自身范围, 缓冲区仅用于筛选局部采样点。 每个网格点只计算一次, 总计算量 = 实际网格点数 (10.5M)。 --- src/postprocessing/map.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/postprocessing/map.py b/src/postprocessing/map.py index a939555..375c4cb 100644 --- a/src/postprocessing/map.py +++ b/src/postprocessing/map.py @@ -730,21 +730,21 @@ class ContentMapper: by_min = y_min + iy * block_dy by_max = y_min + (iy + 1) * block_dy - # 带缓冲区的搜索范围 - search_xmin = bx_min - window_size - search_xmax = bx_max + window_size - search_ymin = by_min - window_size - search_ymax = by_max + window_size - - # 缓冲区内的网格点索引 - grid_mask_x = (grid_x >= search_xmin) & (grid_x <= search_xmax) - grid_mask_y = (grid_y >= search_ymin) & (grid_y <= search_ymax) + # 块自身的网格(不含缓冲,保证每个网格点只被计算一次) + grid_mask_x = (grid_x >= bx_min) & (grid_x <= bx_max) + grid_mask_y = (grid_y >= by_min) & (grid_y <= by_max) if not np.any(grid_mask_x) or not np.any(grid_mask_y): continue sub_grid_x = grid_x[grid_mask_x] sub_grid_y = grid_y[grid_mask_y] + # 带缓冲区的搜索范围(仅用于筛选采样点) + search_xmin = bx_min - window_size + search_xmax = bx_max + window_size + search_ymin = by_min - window_size + search_ymax = by_max + window_size + # 缓冲区内的采样点 point_mask = ( (points[:, 0] >= search_xmin) & (points[:, 0] <= search_xmax) &