fix(step5/step5.5): 掩膜.shp智能替身为.dat、band_math.eval注入np.nan/np.inf命名空间

This commit is contained in:
DXC
2026-05-10 16:20:51 +08:00
parent abac272b31
commit 6d4d802ffe
2 changed files with 21 additions and 2 deletions

View File

@ -96,8 +96,14 @@ class BandMathCalculator:
print(f"计算表达式: {calc_expression}")
# 安全地计算表达式
result = eval(calc_expression)
# 【新增安全防护】引入 numpy 命名空间,让 eval 引擎安全识别 nan 与 inf
import numpy as np
try:
# 即使 calc_expression 含有纯字符 nan也能被 np.nan 安全接管
result = eval(calc_expression, {"__builtins__": None}, {"nan": np.nan, "inf": np.inf, "np": np})
except Exception as e:
print(f"⚠️ 警告:公式计算异常 ({e}),该点赋值为 nan")
result = np.nan
# 返回结果
if var_name: