Sign up to take part
Registered users can ask their own questions, contribute to discussions, and be part of the Community!
Registered users can ask their own questions, contribute to discussions, and be part of the Community!
Hello community,
I want to write .TIF file into a folder, after I run the code recipe the run is successful but the file is empty. Here is an example of my code and a photo of the output:
input_folder = dataiku.Folder('input_folder_name')
output_folder = dataiku.Folder('output_folder_name')
band = input_folder['path'] + inputfolder.list_paths_in_partition()[0]
in_ds = gdal.Open(band)
in_band = in_ds.GetRasterBand(1)
gtiff_driver = gdal.GetDriverByName('GTiff')
out_ds = gtiff_driver.Create('nat_color.tif',
in_band.XSize, in_band.YSize, 1,
in_band.DataType)
out_ds.SetProjection(in_ds.GetProjection())
out_ds.SetGeoTransform(in_ds.GetGeoTransform())
out_band = out_ds.GetRasterBand(1)
out_band.WriteArray(in_band.ReadAsArray())
out_ds.FlushCache()
for i in range(1, 4):
out_ds.GetRasterBand(i).ComputeStatistics(False)
del out_ds
output_folder.upload_stream('Nat_color.TIF', 'nat_color.tif')
Operating system used: Ubuntu 22
โ
I have solved it using os library, where you open the output folder using os.chdir() and after you flush the file cache you delete the output dataset (out_ds) or set it to None.
import os
input_folder = dataiku.Folder('input_folder_name')
output_folder = dataiku.Folder('output_folder_name')
os.chdir(output_folder.get_info()['path'])
band = input_folder['path'] + inputfolder.list_paths_in_partition()[0]
in_ds = gdal.Open(band)
in_band = in_ds.GetRasterBand(1)
gtiff_driver = gdal.GetDriverByName('GTiff')
out_ds = gtiff_driver.Create('nat_color.tif',
in_band.XSize, in_band.YSize, 1,
in_band.DataType)
out_ds.SetProjection(in_ds.GetProjection())
out_ds.SetGeoTransform(in_ds.GetGeoTransform())
out_band = out_ds.GetRasterBand(1)
out_band.WriteArray(in_band.ReadAsArray())
out_ds.FlushCache()
for i in range(1, 4):
out_ds.GetRasterBand(i).ComputeStatistics(False)
out_ds = None
in_band = None
in_ds = None
I have solved it using os library, where you open the output folder using os.chdir() and after you flush the file cache you delete the output dataset (out_ds) or set it to None.
import os
input_folder = dataiku.Folder('input_folder_name')
output_folder = dataiku.Folder('output_folder_name')
os.chdir(output_folder.get_info()['path'])
band = input_folder['path'] + inputfolder.list_paths_in_partition()[0]
in_ds = gdal.Open(band)
in_band = in_ds.GetRasterBand(1)
gtiff_driver = gdal.GetDriverByName('GTiff')
out_ds = gtiff_driver.Create('nat_color.tif',
in_band.XSize, in_band.YSize, 1,
in_band.DataType)
out_ds.SetProjection(in_ds.GetProjection())
out_ds.SetGeoTransform(in_ds.GetGeoTransform())
out_band = out_ds.GetRasterBand(1)
out_band.WriteArray(in_band.ReadAsArray())
out_ds.FlushCache()
for i in range(1, 4):
out_ds.GetRasterBand(i).ComputeStatistics(False)
out_ds = None
in_band = None
in_ds = None