fix: 克里金采样点上限解除 — 修正可用内存检测 + 提高硬上限
- psutil 在 Windows 下 available 因进程占用而偏低(4GB vs 实际 11-12GB), 改为 max(available, free) 获取更真实的内存余量 - 安全余量系数 0.5→0.6,兜底值 4GB→8GB - 硬上限 20000→50000,32GB 实测可安全容纳更多采样点 - 之前 45958 点 → 强制抽稀到 16384,损失了大量空间细节
This commit is contained in:
@ -796,12 +796,15 @@ class ContentMapper:
|
||||
# 从系统内存动态估算可容纳的最大点数
|
||||
try:
|
||||
import psutil
|
||||
_avail_gb = psutil.virtual_memory().available / (1024**3)
|
||||
_mem = psutil.virtual_memory()
|
||||
# Windows 下 psutil.available 可能因进程占用而明显偏低,
|
||||
# 同时参考 total free 作为可用内存的合理补充估算
|
||||
_avail_gb = max(_mem.available, _mem.free) / (1024**3)
|
||||
except Exception:
|
||||
_avail_gb = 4.0 # 保守兜底
|
||||
# 计算安全点数:留 50% 余量给 Python 开销
|
||||
_MAX_VARIOGRAM_PTS = int(np.sqrt(max(_avail_gb * 0.5, 0.5) * 1024**3 / 8))
|
||||
_MAX_VARIOGRAM_PTS = np.clip(_MAX_VARIOGRAM_PTS, 3000, 20000)
|
||||
_avail_gb = 8.0 # 保守兜底(32GB 标配)
|
||||
# 变异函数内存 ≈ N²×8 bytes。留 40% 余量给 Python 开销
|
||||
_MAX_VARIOGRAM_PTS = int(np.sqrt(max(_avail_gb * 0.6, 1.0) * 1024**3 / 8))
|
||||
_MAX_VARIOGRAM_PTS = np.clip(_MAX_VARIOGRAM_PTS, 5000, 50000)
|
||||
|
||||
if len(points) > _MAX_VARIOGRAM_PTS:
|
||||
# 空间分层抽样:网格覆盖全水域,每格保留1点
|
||||
|
||||
Reference in New Issue
Block a user