讀取單波段的柵格
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