使用GDAL转换NOAA GRIB天气数据为瓦片时遇0x1249数据集错误求助
解决GRIB气象数据转Web瓦片的GDAL报错问题
问题描述
下载NOAA的GFS 0.25度分辨率10米U风场GRIB数据后,执行以下命令转瓦片时出现错误:
gdal_translate -of GTiff gfs.t00z.pgrb2.0p25.f000 output.tif gdal_translate -ot Byte output.tif output_8bit.tif gdal2tiles.py --zoom=4-6 output_8bit.tif tiles
报错信息:
RuntimeError: Attempt to create 0x1249 dataset is illegal,sizes must be larger than zero.
错误原因
该错误源于输入数据投影与Web瓦片标准投影不兼容,导致重投影后生成宽度为0的无效数据集,同时直接转换Byte类型时未做数值拉伸,像素值异常也会加重处理失败的概率。原始GRIB数据采用经纬度投影(EPSG:4326),而gdal2tiles默认需要Web Mercator投影(EPSG:3857),内部重投影过程中容易出现范围计算错误。
正确处理步骤
1. 查看数据元信息(可选但关键)
先确认数据的投影、波段和数值范围:
gdalinfo gfs.t00z.pgrb2.0p25.f000
可得到数据为EPSG:4326投影,U风场数值范围约-20~20。
2. 一步完成重投影与8位TIFF转换
直接用gdal_translate将原始GRIB转换为Web Mercator投影的8位TIFF,同时做数值拉伸:
gdal_translate -of GTiff -ot Byte -scale -20 20 0 255 -a_srs EPSG:3857 gfs.t00z.pgrb2.0p25.f000 output_8bit_3857.tif
参数说明:
-scale -20 20 0 255:将原始风场数值映射到0-255的Byte范围,保证像素有效-a_srs EPSG:3857:直接转换为Web瓦片标准投影,避免后续重投影出错
3. 生成Web瓦片
用处理好的投影文件执行瓦片生成:
gdal2tiles.py --zoom=4-6 output_8bit_3857.tif tiles
备选方案:强制指定投影参数
如果仍有报错,明确告知工具输入数据的投影:
gdal2tiles.py --zoom=4-6 --s_srs EPSG:3857 output_8bit_3857.tif tiles
内容的提问来源于stack exchange,提问作者Tom McLean
相关产品推荐
相关产品推荐

