zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    一篇笔记整理JVM工作原理
    深入理解java异常处理机制
    Javaee----重新回顾servlet
    dubbo框架----探索-大型系统架构设计(图解)
    Java 中浮点数---------BigDecimal和double(初探)
    dubbo框架----初探索-配置
    ConcurrentHashMap-----不安全线程hashmap-安全线程-hashtable
    Maven Eclipse (m2e) SCM connector for subclipse 1.10 (svn 1.8) 无法检测
    从svn检出项目---------不是web项目
    Java当中的内存分配以及值传递问题内存解析
  • 原文地址:https://www.cnblogs.com/TTonly/p/10349940.html
Copyright © 2011-2022 走看看