• 地图瓦片PNG8格式理解


    地图切片后的格式是单波段的png格式。

    利用gdal读取该文件,看下文件结构:

    band = gdal.Open(filepath).GetRasterBand(1)

    band.ReadAsArray()

    array([[217, 217, 217, ..., 217, 217, 217], [217, 217, 217, ..., 217, 217, 217], [217, 217, 217, ..., 217, 217, 217], ..., [243, 146, 78, ..., 217, 217, 217], [238, 86, 32, ..., 217, 217, 217], [166, 78, 0, ..., 217, 217, 217]], dtype=uint8)

    len(band.ReadAsArray())
    Out[161]: 256

      说明该图片是一个256*256大小的图片。最大值是243.

    import numpy as np
    
    np.max(band.ReadAsArray())
    Out[163]: 243
    

      这个数组看上去像是灰度图片,实际是只是颜色表的索引值。

    颜色表是什么呢:

    [band.GetColorTable().GetColorEntry(i) for i in range(244)]
    Out[158]: 
    [(171, 198, 239, 255),
     (177, 199, 234, 255),
     (177, 200, 237, 255),
     (180, 203, 239, 255),
     (181, 205, 241, 255),
     (182, 201, 229, 255),
     (182, 203, 235, 255),
     (186, 205, 237, 255),
     (187, 202, 224, 255),
     (187, 205, 234, 255),
     (187, 207, 239, 255),
     (189, 208, 239, 255),
     (190, 210, 241, 255),
    

      颜色表,存储的就是颜色值了,上面例子以RGB格式存储,

    (171, 198, 239, 255) R=171 G=198 B=239 最后一个255没用到
    所以,上表有244个颜色值,序号为[0,243]
    这里的243和上面的栅格数组最大值243刚好对应。

    下面补全一张颜色表,第一列是索引值。


    至此,想明白了这个PNG的数据结构:索引表+颜色表。
    索引表就是ReadAsArray()方法返回的数组,索引表的值就是来自颜色表的第一列。
    array([[217, 217, 217, ..., 217, 217, 217],
           [217, 217, 217, ..., 217, 217, 217],
           [217, 217, 217, ..., 217, 217, 217],
           ...,
           [243, 146,  78, ..., 217, 217, 217],
           [238,  86,  32, ..., 217, 217, 217],
           [166,  78,   0, ..., 217, 217, 217]], dtype=uint8)
    例如,数组中的 217 就是颜色表中的第217个值。

    
    
  • 相关阅读:
    通过CMMI5的国内企业有几个?这个认证是不是很牛啊?
    CNUTCon 全球运维技术大会2017
    新浪微博基于Docker的混合云架构与应用实践-DockerInfo
    k8s~为服务添加ingress的实现
    springboot~HttpPut开启application/x-www-form-urlencoded
    K8s~为pod添加sidecar进行日志收集
    k8s~部署EFK框架
    springboot~Transactional注解的注意事项
    CentOS 6.4 快速安装Nginx笔记
    去掉NSString中的HTML标签
  • 原文地址:https://www.cnblogs.com/zqctzk/p/12488099.html
Copyright © 2020-2023  润新知