Doodleverse / seg2map

Seg2Map is an interactive web map app for geospatial image segmentation using deep learning
MIT License
11 stars 2 forks source link

Bug Report: Creating large tifs causes gdal.translate to fail #8

Open 2320sharon opened 1 year ago

2320sharon commented 1 year ago

Seg2map downloaded a bunch of multispectral tifs, and the goal is to combine them into an orthomosaic. The code bein used is from the merge_tifs function in src/seg2map/downloads.py

A vrt can be created, but when the code that converts it to a tif is run, i.e.

 virtual_dataset = gdal.Translate(
            vrt_path.replace(".vrt", ".tif"),
            creationOptions=["COMPRESS=LZW", "TILED=YES"],
            srcDS=vrt_path,
        )

it creates the tif, then deletes it, and virtual_dataset is returned as None. It doesnt seem to matter if I change directories, or change output file name. Any idea why it creates then destroys the tif?

A Partial Solution

gdal.SetCacheMax(2**30) When the cache is set to 2**30 bytes the code was able to mosaic 500 files (1.3 GB), which creates a 3.8GB mosaic tif file, but not all the files were able to be mosaiced together. The total number of files was (973, or 2.6GB)

dbuscombe-usgs commented 1 year ago

A tif may be created, but it is incomplete. I have tried various alternative options using gdal.Translate and gdal.Warp but haven't yet created a complete tiff.

I was able to convert a folder of tifs to a mosaic jpeg directly from the command line, using gdal_translate -of GTiff -co "COMPRESS=JPEG" -co "TILED=YES" -co "PHOTOMETRIC=RGB" merged_multispectral_2010.vrt mosaic.jpg, however I have so far been unable to reproduce this using the python API

dbuscombe-usgs commented 1 year ago

I also trialed approaches to mosaic creation that first involves creating jpegs (with worldfiles) from the individual tif files. However, while I can get the desired result from the command line gdal_translate, I cannot seem to get anything to work with the python API