fix: 局部 Kriging 网格范围使用缓冲区导致 10x 冗余计算卡死
问题: sub_grid_x/y 使用了缓冲区范围 (block+500m) 而非块范围, 导致每个 500m 块的网格点从 ~457x460 膨胀到 ~1500x1500 (9x), 50 个块合计需计算 1.12 亿次 kriging, 任务构建阶段就卡死。 修复: sub_grid_x/y 改为仅使用块自身范围, 缓冲区仅用于筛选局部采样点。 每个网格点只计算一次, 总计算量 = 实际网格点数 (10.5M)。
This commit is contained in:
@ -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) &
|
||||
|
||||
Reference in New Issue
Block a user