将Lambert Conformal Conic转换为EPSG:3857

时间:2018-06-11 13:36:49

标签: gdal

我有一个tiff格式的地图文件,没有地理参考,但我知道以下投影信息:+ proj = lcc + lon_0 = 10.856 + lat_0 = 51.322 + lat_1 = 42 + lat_2 = 57 + datum = WGS84。我想将其转换为EPSG:3857。

在我的第一次尝试中,我试图修复四个任意点并执行变形     

     gdal_translate -a_srs "+proj=lcc +lon_0=10.856 +lat_0=51.322 +lat_1=42 +lat_2=57 +datum=WGS84" -of GTiff -gcp 19725 11865 1 56 -gcp 103755 12990 23 56 -gcp 112755 80400 23 46 -gcp 8925 78990 1 46 original.tif translated.tif 
    
但是扭曲图像角落的坐标与预期的不一样,地图也被扭曲了     
    Corner Coordinates:
    Upper Left  ( 1208480.629, 6678543.890) ( 10d51'21.48"E, 51d19'21.08"N)
    Lower Left  ( 1208480.629, 6678541.123) ( 10d51'21.48"E, 51d19'21.03"N)
    Upper Right ( 1208486.180, 6678543.890) ( 10d51'21.66"E, 51d19'21.08"N)
    Lower Right ( 1208486.180, 6678541.123) ( 10d51'21.66"E, 51d19'21.03"N)
    Center      ( 1208483.404, 6678542.507) ( 10d51'21.57"E, 51d19'21.06"N)
    
在阅读了很多帖子之后,我来到这里:

  1. 将UL和LR角转换为x和y

    cs2cs +proj=latlong +lon_0=10.856 +lat_0=51.322 +lat_1=42 +lat_2=57 +datum=WGS84 +to +init=epsg:3857
    
    -3.63 57.28 >   -404089.75 7817564.89
    23.76 44.39 >   2644951.10 5525995.28
    
  2. 地理参考tiff
    gdal_translate -a_srs "+proj=lcc +lon_0=10.856 +lat_0=51.322 +lat_1=42 +lat_2=57 +datum=WGS84" -a_ullr -404089.75 7817564.89 2644951.10 5525995.28 original.tif translated.tif
    
    gdalinfo translated.tif的结果如下:
    Size is 14735, 11333
    Coordinate System is:
    PROJCS["unnamed",
        GEOGCS["WGS 84",
            DATUM["WGS_1984",
                SPHEROID["WGS 84",6378137,298.257223563,
                    AUTHORITY["EPSG","7030"]],
                AUTHORITY["EPSG","6326"]],
            PRIMEM["Greenwich",0],
            UNIT["degree",0.0174532925199433],
            AUTHORITY["EPSG","4326"]],
        PROJECTION["Lambert_Conformal_Conic_2SP"],
        PARAMETER["standard_parallel_1",42],
        PARAMETER["standard_parallel_2",57],
        PARAMETER["latitude_of_origin",51.322],
        PARAMETER["central_meridian",10.856],
        PARAMETER["false_easting",0],
        PARAMETER["false_northing",0],
        UNIT["metre",1,
            AUTHORITY["EPSG","9001"]]]
    Origin = (-404089.750000000000000,7817564.889999999664724)
    Pixel Size = (206.925066168985410,-202.203265684284787)
    Metadata:
      AREA_OR_POINT=Area
      TIFFTAG_RESOLUTIONUNIT=2 (pixels/inch)
      TIFFTAG_XRESOLUTION=144
      TIFFTAG_YRESOLUTION=144
    Image Structure Metadata:
      INTERLEAVE=PIXEL
    Corner Coordinates:
    Upper Left  ( -404089.750, 7817564.890) (146d18'53.31"E, 73d27'53.56"N)
    Lower Left  ( -404089.750, 5525995.280) (158d45'33.92"W, 88d 1'24.64"N)
    Upper Right ( 2644951.100, 7817564.890) (172d26'19.88"W, 64d26'59.68"N)
    Lower Right ( 2644951.100, 5525995.280) (138d13'57.20"E, 73d22'12.76"N)
    Center      ( 1120430.675, 6671780.085) (161d52'17.63"W, 79d37'35.75"N)
    
    但是,上面角落的坐标完全关闭。当我试图扭曲它时,图像会变得如此巨大,以至于我不得不在几分钟后停止这个过程。
    gdalwarp -overwrite -t_srs EPSG:3857 -r near -co COMPRESS=LZW translated.tif warped.tif
    
    gdalinfo warped.tif的结果如下:
    Corner Coordinates:
    Upper Left  (-20037508.339,29704755.766) (180d 0' 0.00"W, 88d54'44.28"N)
    Lower Left  (-20037508.339, 9464937.842) (180d 0' 0.00"W, 64d26'59.58"N)
    Upper Right (20037503.600,29704755.766) (179d59'59.85"E, 88d54'44.28"N)
    Lower Right (20037503.600, 9464937.842) (179d59'59.85"E, 64d26'59.58"N)
    Center      (      -2.370,19584846.804) (  0d 0' 0.08"W, 84d41'15.52"N)
    
  3. 我错过了什么?

    让我们简化问题:如何在不将投影转换为EPSG的情况下对图像文件进行地理参考:3857?

    我采取的第一步是嵌入投影信息和四个角点:

    gdal_translate -a_srs "+proj=lcc +lon_0=10.856 +lat_0=51.322 +lat_1=42 +lat_2=57 +datum=WGS84" -of GTiff -gcp 0 0 -4.226944 57.35083 -gcp 14735 0 27.78 57.59555 -gcp 14735 11333 24.30917 44.06611 -gcp 0 11333 -3.537778 43.6 original.tif georeferenced.tif
    

    在第二步中,我在没有指定目标投影的情况下扭曲了georeferenced.tif:

    gdalwarp -overwrite -r near georeferenced.tif warped.tif
    

    当我检查warped.tif信息时,得到以下角落坐标:

    Corner Coordinates:
    Upper Left  (  -4.5777770,  57.6508975) ( 10d51'21.36"E, 51d19'21.08"N)
    Lower Left  (  -4.5777770,  43.6558450) ( 10d51'21.36"E, 51d19'20.62"N)
    Upper Right (  26.7396454,  57.6508975) ( 10d51'22.99"E, 51d19'21.08"N)
    Lower Right (  26.7396454,  43.6558450) ( 10d51'22.99"E, 51d19'20.62"N)
    

    我希望得到:

    Corner Coordinates:
    Upper Left  (0.0, 0.0) (-4.226944, 57.35083,0)
    Lower Left  (0.0, 11333.0) (-3.537778, 43.6,0)
    Upper Right  (14735.0, 0.0) (27.78, 57.59555,0)
    Lower Right  (14735.0, 11333.0) (24.30917, 44.06611,0)
    

1 个答案:

答案 0 :(得分:0)

你确定你的GCP是正确的吗?它们应采用以下形式:

-gcp pixel line easting northing [elevation]]*

您有一个GCP,表明您的输入文件大小至少为112755 x 80400像素(宽x高)。它当然可能,但它是一个大文件。

我认为您应该将首次尝试与之后的gdalwarp步骤结合起来。由于gdalwarp不接受gcp,gdal_translate无法变形,因此需要两步。

您可以将第一步输出到VRT文件,这样可以减少处理和磁盘空间。

gdal_translate -of VRT -a_srs "+proj=lcc +lon_0=10.856 +lat_0=51.322 +lat_1=42 +lat_2=57 +datum=WGS84" -gcp 19725 11865 1 56 -gcp 103755 12990 23 56 -gcp 112755 80400 23 46 -gcp 8925 78990 1 46 original.tif georeferenced.vrt

然后扭曲VRT:

gdalwarp -overwrite -t_srs EPSG:3857 -r near -co COMPRESS=LZW georeferenced.vrt warped.tif