Как объединить несколько TIFF в один большой Geotiff в Scala? - PullRequest
0 голосов
/ 04 апреля 2019

Я работаю над проектом по определению глубины и протяженности воды с использованием цифровой модели грунта (DGM).У меня есть несколько файлов TIFF, охватывающих интересующую область, и я хочу объединить их в один файл TIFF для быстрой обработки. Как я могу объединить их, используя мой собственный код ниже или любую другую методологию?

Я попытался объединить плитки, пока они получают их в качестве входных данных один за другим, а затем объединяет их, но это выдаетGC error вероятно, потому что что-то не так с самим кодом.Код приведен ниже

import geotrellis.proj4._
import geotrellis.raster._
import geotrellis.raster.io.geotiff._
object waterdepth {
  val directories = List("data")

  //constants to differentiate which bands to use
  val R_BAND = 0
  val G_BAND = 1
  val NIR_BAND = 2

  // Path to our landsat band geotiffs.
  def bandPath(directory: String) = s"../biggis-landuse/radar_data/${directory}"

  def main(args: Array[String]): Unit = {
    directories.map(directory => generateMultibandGeoTiffFile(directory))
  }

  def generateMultibandGeoTiffFile(directory: String) = {
    val tiffFiles = new java.io.File(bandPath(directory)).listFiles.map(_.toString)

    val singleBandGeoTiffArray = tiffFiles.foldLeft(Array[SinglebandGeoTiff]())((acc, el:String) => {
      acc :+ SinglebandGeoTiff(el)
    })

    val tileArray = ArrayMultibandTile(singleBandGeoTiffArray.map(_.tile))

    println(s"Writing out $directory multispectral tif")
    MultibandGeoTiff(tileArray, singleBandGeoTiffArray(0).extent, singleBandGeoTiffArray(0).crs).write(s"data/$directory.tif")

, он должен быть в состоянии создать один файл TIF из всех отдельных файлов, но он выдает ошибку памяти.

...