Raster layer栅格图层及其显示、访问和检索 - TheWrangler/sqGis GitHub Wiki

Raster layer栅格图层

  • 栅格图层实际是一张位图,每个像素或cell表示地球表面的一块区域
  • 栅格图层使用Band进行组织
  • 每一个band表示一种信息
  • 一个常见的应用是使用三个band分别表示红、绿、蓝三色

栅格信息Band的使用方式

  • 如果一个栅格数据只有一个band,则像素值可用于在调色板palette进行颜色索引
  • 如果一个栅格数据只有一个band并且没有提供调色板palette,则像素可以灰度形式grayscale显示,或者使用伪彩色算法pseudocolor algorithm计算颜色值
  • 如果一个栅格数据有多个band,典型的应用是组合这些band去产生颜色值
  • 此外,一个含有多个band的栅格数据可以选择一个band去进行调色板palette、灰度图、伪彩图等方式显示

Raster data的显示

  • 与栅格Band关联的drawing style决定了栅格数据如何显示
  • Drawing style的类型
    • PalettedColor
    • SingleBandGray
    • SingleBandPseudoColor
    • PalettedSingleBandGray
    • PalettedSingleBandPseudoColor
    • MultiBandColor
    • MultiBandSIngleBandGray
    • MultiBandSingBandPseudoColor
  • 调用QgsRaterLayer.setDrawingStyle()设置绘制样式
  • 调用setXXXBand()选择用于绘制的band
  • 当栅格图层显示样式改变后,QGis病不会自动更细地图,需要进行如下操作
    QgsRasterLayer.setImageCache(None)
    QgsRasterLayer.triggerRepaint()
    

栅格数据的访问

  • 使用QgsRasterDataProvider的identify函数获取某个地理坐标的band值
    values = provider.identify(QgsPoint(x,y),QgsRaster.IdentifyFormatValue);
    if values.isValid()
        for band,value in values.results().items():
        ...
    
  • 使用QgsRasterDataProvider的block()获取一块区域的band值

QgsRasterInterface

待补充。。。