You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在gdalwarp中使用-ts/-tr标志重采样并解决整数溢出问题

解决GDAL Warp处理EUDEM时的整数溢出错误

错误原因

你遇到的Integer overflow错误,是因为使用-tr 1024 1024设置过大的目标像素分辨率时,GDAL在计算需要读取的源图像块尺寸时,超出了内部32位整数的处理上限,导致计算异常。

可行解决方案

方案1:改用-ts直接指定输出尺寸

放弃用-tr指定像素分辨率,直接用-ts设置输出图像的宽高像素数。原图像是40000x40000,对应1000000米的范围(2000000到3000000),可根据精度需求计算目标尺寸:

  • 若要100米分辨率:1000000 / 100 = 1000,即输出1000x1000像素
  • 若要200米分辨率:输出500x500像素

示例命令:

gdalwarp -r average -ts 1000 1000 -wm 4096 -multi -wo NUM_THREADS=ALL_CPUS -co TILED=YES -co NUM_THREADS=ALL_CPUS E20N20.TIF dz_E20N20.TIF

方案2:分两步缩小分辨率

如果坚持要用-tr,可以分两次进行重采样,避免单次计算触发溢出:

# 第一步:先缩到中等分辨率(比如100米)
gdalwarp -r average -tr 100 100 -wm 4096 -multi -wo NUM_THREADS=ALL_CPUS -co TILED=YES -co NUM_THREADS=ALL_CPUS E20N20.TIF temp_E20N20.TIF

# 第二步:再缩到目标分辨率(比如1000米)
gdalwarp -r average -tr 1000 1000 -wm 4096 -multi -wo NUM_THREADS=ALL_CPUS -co TILED=YES -co NUM_THREADS=ALL_CPUS temp_E20N20.TIF dz_E20N20.TIF

方案3:升级GDAL版本

GDAL 3.5.3存在的这个整数溢出问题,在后续的3.6.x及以上版本中已被修复,升级到新版本后可以直接使用-tr 1024 1024的命令。

额外优化建议

  • 输出时添加压缩参数进一步减小文件体积:比如-co COMPRESS=LZW或-co COMPRESS=DEFLATE,配合-co PREDICTOR=3(针对浮点数据的预测器)效果更好。
  • 保留原数据的NoData值,确保高程数据的有效性。

内容的提问来源于stack exchange,提问作者hans

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 14:40:24