5、GeoTrellis-讀取柵格文件

讀取單波段的柵格

import geotrellis.raster.io.geotiff.SinglebandGeoTiff
import geotrellis.raster.io.geotiff.reader.GeoTiffReader

object demo4 {

  def main(args:Array[String]): Unit = {
    val geoTiff: SinglebandGeoTiff = GeoTiffReader.readSingleband("/Users/mocker/Documents/test/jpeg-test-small.tif");
    println(geoTiff)
  }
}

讀取多波段柵格

mport geotrellis.raster.io.geotiff.{MultibandGeoTiff, SinglebandGeoTiff}
import geotrellis.raster.io.geotiff.reader.GeoTiffReader

object demo4 {

  def main(args:Array[String]): Unit = {
    val geoTiff: MultibandGeoTiff = GeoTiffReader.readMultiband("/Users/mocker/Documents/test/jpeg-test-small.tif");
    println(geoTiff)
  }

使用流讀取柵格

通過流讀取的tif,單個小文件可以完整的讀取,大文件則Java虛擬機會內(nèi)存溢出崩潰,大文件和小文件都有一個共同之處,所選的區(qū)域越小讀取的速度也快,所以對柵格讀取區(qū)域的范圍要嚴格的控制,避免程序崩潰。

使用流讀取指定區(qū)域的柵格數(shù)據(jù)

import geotrellis.raster.io.geotiff.{MultibandGeoTiff, SinglebandGeoTiff}
import geotrellis.raster.io.geotiff.reader.GeoTiffReader
import geotrellis.vector.Extent

object demo5 {

  def main(args:Array[String]): Unit = {
    val path: String = "/Volumes/Samsung_T5/1.tif";
    //指定區(qū)域
    val e: Extent = Extent(361557.21354599966, 3374714.92064873, 361559.67652580043, 3379714.2052475177);

    //單波段讀取
    SinglebandGeoTiff(path, e)
    GeoTiffReader.readSingleband(path, e)

    //多波段讀取
    MultibandGeoTiff(path, e)
    GeoTiffReader.readMultiband(path, e)

    //單波段讀取
    SinglebandGeoTiff(path, Some(e))
    GeoTiffReader.readSingleband(path, Some(e))

    //多波段讀取
    MultibandGeoTiff(path, Some(e))
    GeoTiffReader.readMultiband(path, Some(e))
  }

使用流讀取已加載的柵格進行裁剪

通過裁剪讀取已經(jīng)加載的tif數(shù)據(jù),使用此方法不需要去讀取文件,直接就可以訪問數(shù)據(jù),先加載文件再進行裁剪。

import geotrellis.raster.io.geotiff.reader.GeoTiffReader
import geotrellis.raster.io.geotiff.{MultibandGeoTiff, SinglebandGeoTiff}
import geotrellis.vector.Extent

object demo6 {

  def main(args:Array[String]): Unit = {
    val path: String = "/Volumes/Samsung_T5/1.tif";
    //指定區(qū)域
    val e: Extent = Extent(361557.21354599966, 3374714.92064873, 361559.67652580043, 3379714.2052475177);

    //單波段讀取裁剪
    SinglebandGeoTiff.streaming(path).crop(e)
    println(SinglebandGeoTiff.streaming(path).crop(e))
    GeoTiffReader.readSingleband(path, true).crop(e)

    //多波段讀取裁剪
    MultibandGeoTiff.streaming(path).crop(e)
    GeoTiffReader.readMultiband(path,true).crop(e)
  }
}

a

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容