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

读取Corine土地覆盖TIFF时EPSG:3035 CRS警告的原因、解决及影响咨询

Corine土地覆盖TIFF数据读取时的GDAL警告问题解答

问题场景

使用raster或terra包读取Corine土地覆盖TIFF数据时,触发GDAL的CRS不匹配警告,具体代码和警告信息如下:

raster包读取示例

R <- raster::raster(CLC_Tiff)

警告信息:
In new_CppObject_xp(fields$.module, fields$.pointer, ...) :
GDAL Message 1: The definition of projected CRS EPSG:3035 got from GeoTIFF keys is not the same as the one from the EPSG registry, which may cause issues during reprojection operations. Set GTIFF_SRS_SOURCE configuration option to EPSG to use official parameters (overriding the ones from GeoTIFF keys), or to GEOKEYS to use custom values from GeoTIFF keys and drop the EPSG code.

读取后数据的投影信息:

raster::projection(R)
[1] "+proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000 +ellps=GRS80 +units=m +no_defs"

terra包读取示例

R <- terra::rast(CLC_Tiff, crs = "EPSG:3035")

警告信息:
In new_CppObject_xp(fields$.module, fields$.pointer, ...) :
GDAL Message 1: The definition of projected CRS EPSG:3035 got from GeoTIFF keys is not the same as the one from the EPSG registry, which may cause issues during reprojection operations. Set GTIFF_SRS_SOURCE configuration option to EPSG to use official parameters (overriding the ones from GeoTIFF keys), or to GEOKEYS to use custom values from GeoTIFF keys and drop the EPSG code.

读取后terra返回的投影信息:

terra::crs(R)
[1] "PROJCRS[\"ETRS89-extended / LAEA Europe\",\n    BASEGEOGCRS[\"ETRS89\",\n        DATUM[\"European Terrestrial Reference System 1989\",\n            ELLIPSOID[\"GRS 1980\",6378137,298.257222101004,\n                LENGTHUNIT[\"metre\",1]]],\n        PRIMEM[\"Greenwich\",0,\n            ANGLEUNIT[\"degree\",0.0174532925199433]],\n        ID[\"EPSG\",4258]],\n    CONVERSION[\"Lambert Azimuthal Equal Area\",\n        METHOD[\"Lambert Azimuthal Equal Area\",\n            ID[\"EPSG\",9820]],\n        PARAMETER[\"Latitude of natural origin\",52,\n            ANGLEUNIT[\"degree\",0.0174532925199433],\n            ID[\"EPSG\",8801]],\n        PARAMETER[\"Longitude of natural origin\",10,\n            ANGLEUNIT[\"degree\",0.0174532925199433],\n            ID[\"EPSG\",8802]],\n        PARAMETER[\"False easting\",4321000,\n            LENGTHUNIT[\"metre\",1],\n            ID[\"EPSG\",8806]],\n        PARAMETER[\"False northing\",3210000,\n            LENGTHUNIT[\"metre\",1],\n            ID[\"EPSG\",8807]]],\n    CS[Cartesian,2],\n        AXIS[\"(E)\",east,\n            ORDER[1],\n            LENGTHUNIT[\"metre\",1]],\n        AXIS[\"(N)\",north,\n            ORDER[2],\n            LENGTHUNIT[\"metre\",1]],\n    ID[\"EPSG\",3035]]"

问题解答

1. 警告产生的原因

这个警告的核心是TIFF文件内置的CRS参数和EPSG官方注册的3035参数不完全一致。Corine数据的TIFF里用了简化的PROJ字符串(比如+no_defs),而EPSG官方的3035是完整的PROJCRS定义(包含基准面、椭球参数的完整ID等)。GDAL读取时会同时读取TIFF的GeoKeys并尝试匹配EPSG代码,发现两者定义有差异,就会抛出这个提示。

2. 避免警告的方法

有两种可行方式:

  • 方式一:强制使用EPSG官方定义
    在读取数据前,设置GTIFF_SRS_SOURCE为EPSG,让GDAL忽略TIFF内置的CRS参数,直接采用EPSG注册的标准定义:
    # raster包场景
    raster::setGDALconfig("GTIFF_SRS_SOURCE", "EPSG")
    R <- raster::raster(CLC_Tiff)
    
    # terra包场景
    terra::setGDALconfig("GTIFF_SRS_SOURCE", "EPSG")
    R <- terra::rast(CLC_Tiff)
    
  • 方式二:沿用TIFF内置的CRS定义
    如果想保留原始数据的CRS参数,设置GTIFF_SRS_SOURCE为GEOKEYS,GDAL会放弃匹配EPSG代码,直接使用TIFF里的参数:
    # raster包场景
    raster::setGDALconfig("GTIFF_SRS_SOURCE", "GEOKEYS")
    R <- raster::raster(CLC_Tiff)
    
    # terra包场景
    terra::setGDALconfig("GTIFF_SRS_SOURCE", "GEOKEYS")
    R <- terra::rast(CLC_Tiff)
    
    注:这个配置是全局生效的,直到R会话结束,也可以用terra::resetGDALconfig()重置。

3. 对后续分析的影响

  • 如果不做投影转换:基本无影响,不管用哪种CRS定义,数据坐标都是一致的,raster/terra/sf包的常规操作(裁剪、统计、叠加)都能正常运行。
  • 如果需要做投影转换:参数差异可能导致转换后的坐标出现微小偏差。这种情况下建议用方式一,强制使用EPSG官方定义,保证转换的一致性和准确性,避免不同来源数据投影时出现不匹配问题。

内容的提问来源于stack exchange,提问作者Ahmed El-Gabbas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 20:00:20