• Error: pgraster_wkb_reader: grayscale band type 10 unsupported


    错误原因:Float32 is not supported for rendering。即栅格数据类型Float32不支持。

    cmd中用GDAL查看。在波段中的数据类型是Float32的不支持渲染。
    不支持的例子:

    C:Program FilesGDAL>gdalinfo D:mapnikmapnik-v2.2.0shpmapniktmean10_19.tif
    Driver: GTiff/GeoTIFF
    Files: D:mapnikmapnik-v2.2.0shpmapniktmean10_19.tif
    Size is 3600, 3600
    Coordinate System is:
    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"]]
    Origin = (90.000000000000000,60.000000000000000)
    Pixel Size = (0.008333333333333,-0.008333333333333)
    Metadata:
      AREA_OR_POINT=Area
    Image Structure Metadata:
      COMPRESSION=LZW
      INTERLEAVE=BAND
    Corner Coordinates:
    Upper Left  (  90.0000000,  60.0000000) ( 90d 0' 0.00"E, 60d 0' 0.00"N)
    Lower Left  (  90.0000000,  30.0000000) ( 90d 0' 0.00"E, 30d 0' 0.00"N)
    Upper Right ( 120.0000000,  60.0000000) (120d 0' 0.00"E, 60d 0' 0.00"N)
    Lower Right ( 120.0000000,  30.0000000) (120d 0' 0.00"E, 30d 0' 0.00"N)
    Center      ( 105.0000000,  45.0000000) (105d 0' 0.00"E, 45d 0' 0.00"N)
    Band 1 Block=3600x1 Type=Float32, ColorInterp=Gray
      NoData Value=-3.3999999521443642e+038

    postgres查看:

    CONSTRAINT enforce_pixel_types_rast CHECK (_raster_constraint_pixel_types(rast) = '{32BF}'::text[]),

    支持的例子:

    Driver: GTiff/GeoTIFF
    Files: D:mapnikmapnik-v2.2.0shpmapnikHYP_LR.tif
    Size is 16200, 8100
    Coordinate System is:
    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"]]
    Origin = (-180.000000000000000,90.000000000000000)
    Pixel Size = (0.022222222222220,-0.022222222222220)
    Metadata:
      AREA_OR_POINT=Area
      TIFFTAG_DATETIME=2014:10:18 12:08:22
      TIFFTAG_RESOLUTIONUNIT=2 (pixels/inch)
      TIFFTAG_SOFTWARE=Adobe Photoshop CC 2014 (Macintosh)
      TIFFTAG_XRESOLUTION=231.429
      TIFFTAG_YRESOLUTION=231.429
    Image Structure Metadata:
      INTERLEAVE=PIXEL
    Corner Coordinates:
    Upper Left  (-180.0000000,  90.0000000) (180d 0' 0.00"W, 90d 0' 0.00"N)
    Lower Left  (-180.0000000, -90.0000000) (180d 0' 0.00"W, 90d 0' 0.00"S)
    Upper Right ( 180.0000000,  90.0000000) (180d 0' 0.00"E, 90d 0' 0.00"N)
    Lower Right ( 180.0000000, -90.0000000) (180d 0' 0.00"E, 90d 0' 0.00"S)
    Center      (  -0.0000000,   0.0000000) (  0d 0' 0.00"W,  0d 0' 0.00"N)
    Band 1 Block=16200x1 Type=Byte, ColorInterp=Red
    Band 2 Block=16200x1 Type=Byte, ColorInterp=Green
    Band 3 Block=16200x1 Type=Byte, ColorInterp=Blue

    postgres查看:

    CONSTRAINT enforce_pixel_types_rast CHECK (_raster_constraint_pixel_types(rast) = '{8BUI,8BUI,8BUI}'::text[]),

    pgraster插件源码查看/mapnik/plugins/input/pgraster/pgraster_wkb_reader.cpp

    switch (pixtype) {
        case PT_1BB:
        case PT_2BUI:
        case PT_4BUI:
          // all <8BPP values are wrote in full bytes anyway
        case PT_8BSI:
          // mapnik does not support signed anyway
        case PT_8BUI:
          return read_grayscale_band(bbox, width_, height_, hasnodata,
                              std::bind(read_uint8, &ptr_));
          break;
        case PT_16BSI:
          // mapnik does not support signed anyway
        case PT_16BUI:
          return read_grayscale_band(bbox, width_, height_, hasnodata,
                              std::bind(read_uint16, &ptr_, endian_));
          break;
        case PT_32BSI:
          // mapnik does not support signed anyway
        case PT_32BUI:
          return read_grayscale_band(bbox, width_, height_, hasnodata,
                              std::bind(read_uint32, &ptr_, endian_));
          break;
        default:
          std::ostringstream err;
          err << "pgraster_wkb_reader: grayscale band type "
              << pixtype << " unsupported";
          //MAPNIK_LOG_WARN(pgraster) << err.str();
          throw mapnik::datasource_exception(err.str());
      }

    这里可以发现支持的格式类型,满足这些类型就行,否则报错。

    https://github.com/mapnik/mapnik/issues/3324
    https://github.com/systemapic/pile/issues/30

  • 相关阅读:
    个人理财小助手 —— 简介
    我的分页控件(未完,待续)——控件件介绍及思路
    静态变量 静态对象 静态函数和非静态函数的区别。(我的理解,大家看看对不对)
    通过“访问多种数据库”的代码来学习多态!(.net2.0版)
    Step By Step 一步一步写网站[1] —— 填加数据
    个人理财小助手 —— 数据库(一)
    几个鸟叫的声音
    Step By Step 一步一步写网站[1] —— 帧间压缩,表单控件
    面向对象相关
    论程序的成长—— 你写的代码有生命力吗?
  • 原文地址:https://www.cnblogs.com/TTonly/p/10349940.html
Copyright © 2020-2023  润新知