使用gdalwarp重投影tif时,将CRS保存至.tif而非.aux.xml
GDAL坐标转换CRS存储问题排查
问题描述
我使用命令
gdalwarp -t_srs EPSG:8857 -r bilinear -wo NUM_THREADS=20 -multi in.tif out.tif对in.tif进行CRS转换,得到目标文件out.tif的同时生成了存储CRS信息的out.tif.aux.xml文件。删除该.xml文件后,out.tif的CRS信息丢失,执行gdalinfo out.tif无法查看CRS信息。请问能否指定将CRS信息保存至out.tif中?这应该是可行的,因为in.tif本身就包含CRS信息。另外,在另一台机器执行完全相同的命令时,out.tif却能正常包含CRS信息,我需要排查哪些点?编辑补充:使用EPSG:4326时一切正常,EPSG:8857存在什么问题?
一、能否将CRS信息直接写入out.tif?
可以。默认情况下GDAL会将CRS写入TIFF内部的GeoTIFF元数据,但EPSG:8857的特殊属性可能导致默认行为异常,可通过添加输出参数强制CRS嵌入:
gdalwarp -t_srs EPSG:8857 -r bilinear -wo NUM_THREADS=20 -multi -co PROFILE=GeoTIFF -co TFW=NO in.tif out.tif
-co PROFILE=GeoTIFF:强制使用标准GeoTIFF规范,确保CRS信息写入TIFF内部的专用标签-co TFW=NO:禁用外部世界文件生成,避免GDAL将CRS信息分流到外部文件
二、不同机器结果差异的排查点
- GDAL版本:不同版本对EPSG:8857的支持程度不同,老版本(低于3.0)可能无法将该坐标系完整嵌入TIFF,建议统一升级到3.0及以上版本
- EPSG数据库:GDAL依赖的EPSG空间参考数据库版本不一致,部分机器的数据库可能缺少EPSG:8857的完整定义,导致只能通过外部aux.xml存储参数
- TIFF驱动配置:通过
gdalinfo --format GTiff查看两台机器的TIFF驱动默认配置,确认是否开启了GeoTIFF元数据支持,以及元数据存储的默认策略 - 环境变量:检查
GDAL_PAM_ENABLED、GDAL_TIFF_INTERNAL_MASK等环境变量,这些变量会控制GDAL是否生成外部aux.xml文件,确保两台机器的设置一致
三、EPSG:8857的特殊问题
EPSG:8857是CGCS2000系的3度带高斯克吕格投影,和EPSG:4326(标准地理坐标系)的差异导致了问题:
- 该坐标系包含较多自定义投影参数,部分老版本GDAL无法用标准GeoTIFF标签完整表示这些参数,只能通过外部aux.xml存储扩展信息
- EPSG:4326参数简单通用,GDAL可以直接将其写入TIFF内部的标准GeoTIFF标签,因此不会生成外部文件
内容的提问来源于stack exchange,提问作者cmosig
相关产品推荐
相关产品推荐

