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為想要提取的波段號。

五、總結

       本文簡單介紹了多波段數據導入、處理的一些細節,真的是很簡單,因為目前關於多波段只進行了這些工作,遂將其簡單總結之,還未深入涉及,研究的寬度和深度都不夠,下一步會根據工作情況深入研究之后進行進一步總結。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM