zoukankan      html  css  js  c++  java
  • geotrellis使用(十八)导入多波段Tiff、读取多波段Tile

    Geotrellis系列文章链接地址http://www.cnblogs.com/shoufengwei/p/5619419.html

    目录

    1. 前言
    2. 多波段数据导入
    3. 读取多波段瓦片
    4. 提取单波段
    5. 总结

    一、前言

           之前我们处理的都是单波段的Tiff数据,可以实现瓦片的读取、处理等操作,如果Tiff为多波段Tiff,并且我们不希望在导入的时候将多波段合并成单波段,这时候就需要进行多波段数据处理。多波段数据处理方式基本与单波段处理方式相同,稍有差别,我在这里简单介绍之。

    二、多波段数据导入

           首先准备一个多波段的Tiff文件,将其导入Accumulo中。单波段数据导入代码如下:

    implicit val sc = SparkUtils.createSparkContext("ETL SinglebandIngest", new SparkConf(true))
    Etl.ingest[ProjectedExtent, SpatialKey, Tile](args, ZCurveKeyIndexMethod)
    sc.stop()
    

           多波段基本相同,代码如下:

    implicit val sc = SparkUtils.createSparkContext("ETL MultibandIngest", new SparkConf(true))
    Etl.ingest[ProjectedExtent, SpatialKey, MultibandTile](args, ZCurveKeyIndexMethod)
    sc.stop()
    

           运行方式为将代码达成jar包,然后提交到spark集群,这在之前文章中已经介绍过,不同的是format参数要设置为multiband-geotiff。

    三、读取多波段瓦片

           多波段数据存入Accumulo中之后,读取单个瓦片的代码如下:

    val multiTile = tileReader.reader[SpatialKey, MultibandTile](LayerId(name, zoom)).read(key)
    

           其中name表示多波段瓦片存储的layer,zoom为读取瓦片的层级,key为瓦片的x、y坐标,tileReader为AccumuloValueReader实例。这样得到的结果就是一个MultibandTile对象。

    四、提取单波段

           读取出多波段瓦片之后可以进行各种各样的操作,比如将多波段取出三个波段进行RGB渲染之后在前台显示,或者通过前台控制显示任意单一波段的瓦片数据。在这里我简单介绍一些显示单一波段瓦片。

           理论上很简单,因为MultibandTile对象,简单来说就是一个Tile的数组,这时候只需要获取到用户想要浏览的波段值,从数组中提取出相应的Tile即可。代码如下:

    multiTile.bands(bandNum)
    

           其中bandNum为想要提取的波段号。

    五、总结

           本文简单介绍了多波段数据导入、处理的一些细节,真的是很简单,因为目前关于多波段只进行了这些工作,遂将其简单总结之,还未深入涉及,研究的宽度和深度都不够,下一步会根据工作情况深入研究之后进行进一步总结。

  • 相关阅读:
    debug: if (va=1) 和 if (va==1)的区别
    必定管用!关于如何在电脑上恢复itunes中的音乐库(Mac Windows统统适用)
    关于Matlab中自动生成的asv文件
    LaTeX表格字体大小控制
    ANSYS中应力强度因子与J积分的计算
    Notepad++取消输入单词时出现提示
    notepad++的apdl高亮xml文件
    Power Graphics
    19个必须知道的Visual Studio快捷键
    APDL命令流:将ansys分析结果输出为tecplot格式
  • 原文地址:https://www.cnblogs.com/shoufengwei/p/5829208.html
Copyright © 2011-2022 走看看