zoukankan      html  css  js  c++  java
  • 调色板栅格数据使用GDAL时注意

    这几天用GDAL处理DRG数据时发现,有数据被处理成了黑板,什么都没有,发现是因为DRG图像颜色比较简单,使用了调色板的缘故。
    使用SetColorTable将调色板写入后,一部分基本正常,但还有些图像还是有黑板的现象。仔细察看出错的DRG与正常的DRG的区别,发现
    正常的:
    C:\Program Files\FWTools1.0.5>
    C:\Program Files\FWTools1.0.5>gdalinfo D:\RasterTest\DRG\I48E010019DRG.TIF
    Driver: GTiff/GeoTIFF
    Size is 6946, 5715
    Coordinate System is `'
    Origin = (636178.308000,3822519.830000)
    Pixel Size = (4.00000000,-4.00000000)
    Metadata:
    TIFFTAG_XRESOLUTION=317.5
    TIFFTAG_YRESOLUTION=317.5
    TIFFTAG_RESOLUTIONUNIT=2 (pixels/inch)
    Corner Coordinates:
    Upper Left ( 636178.308, 3822519.830)
    Lower Left ( 636178.308, 3799659.830)
    Upper Right ( 663962.308, 3822519.830)
    Lower Right ( 663962.308, 3799659.830)
    Center ( 650070.308, 3811089.830)
    Band 1 Block=6946x1 Type=Byte, ColorInterp=Palette
    Color Table (RGB with 256 entries)
    0: 128,0,128,255
    1: 78,125,208,255
    2: 194,226,255,255
    3: 150,240,100,255
    4: 200,240,170,255
    5: 150,105,66,255
    6: 255,255,255,255
    7: 150,150,150,255
    8: 0,0,0,255
    9: 0,0,0,255
    出错的:
    C:\Program Files\FWTools1.0.5>gdalinfo D:\RasterTest\DRG\I49E012003DRG\2.TIF
    Driver: GTiff/GeoTIFF
    Size is 1705, 1425
    Coordinate System is `'
    Corner Coordinates:
    Upper Left ( 0.0, 0.0)
    Lower Left ( 0.0, 1425.0)
    Upper Right ( 1705.0, 0.0)
    Lower Right ( 1705.0, 1425.0)
    Center ( 852.5, 712.5)
    Band 1 Block=1705x4 Type=Byte, ColorInterp=Gray
    还是调色板没处理好,查遍资料发现没有什么特别的地方,最后仔细跟踪错误代码,在GDAL代码中找到
  • /* -------------------------------------------------------------------- */

  • /* Check if this is even a candidate for applying a PCT. */

  • /* -------------------------------------------------------------------- */

  • if( poGDS->bCrystalized )

  • {

  • CPLError( CE_Failure, CPLE_NotSupported,

  • "SetColorTable() not supported for existing TIFF files." );

  • return CE_Failure;

  • }

  • 百思不得其解,折腾了半天最后在GDAL-DEV看到这段:

    I think the key here is that the GeoTIFF driver in GDAL库 only allows you
    to assign a pseudocolor table to a file before you start any raster data.
    察看代码,发现把SetColorTable放在了RasterIO,Write之后了,修改后就好了。
  • 相关阅读:
    URAL 2046 A
    URAL 2056 Scholarship 水题
    Codeforces Gym 100286I iSharp 水题
    Codeforces Gym H. Hell on the Markets 贪心
    Codeforces Gym 100286G Giant Screen 水题
    Codeforces Gym 100286B Blind Walk DFS
    Codeforces Gym 100286F Problem F. Fibonacci System 数位DP
    Codeforces Gym 100286A. Aerodynamics 计算几何 求二维凸包面积
    Codeforces Gym 100418K Cards 暴力打表
    Codeforces Gym 100418J Lucky tickets 数位DP
  • 原文地址:https://www.cnblogs.com/flyingfish/p/729282.html
Copyright © 2011-2022 走看看