Skip to content
Snippets Groups Projects
write_raster.py 1.79 KiB
Newer Older
Clemens Berteld's avatar
Clemens Berteld committed
import numpy as np
from osgeo import gdal, osr


def write_raster(data):
    pixel_array = []
    pixel_array_alpha = []
    for j in range(0, 36):
        row_array = []
        row_array_alpha = []
        for i, station_id in enumerate(data):
            if i % 36 == 0:
                value = data[i + j][1]
                value = 0 if not value else value
                value = 0 if str(value) == 'NaN' else value
                alpha_value = data[i + j][2]
                alpha_value = 0 if alpha_value else 255
                row_array.append(value)
                row_array_alpha.append(alpha_value)
                np_row_array = np.array(row_array)
                np_row_array_alpha = np.array(row_array_alpha)
        pixel_array.append(np_row_array)
        pixel_array_alpha.append(np_row_array_alpha)
    np_pixel_array = np.array(pixel_array)
    np_pixel_array_alpha = np.array(pixel_array_alpha)

    xmin, ymin, xmax, ymax = [5.01, 47.15, 14.81, 55.33]
    nrows, ncols = np.shape(np_pixel_array)
    xres = (xmax - xmin) / float(ncols)
    yres = (ymax - ymin) / float(nrows)
    geotransform = (xmin, xres, 0, ymax, 0, -yres)

    output_raster = gdal.GetDriverByName('GTiff').Create('D:/Uni/Master/01_SS2021/Automatisierte_Geodatenprozessierung/temperaturverteilung/dataacquisition/output/myraster.tif', ncols, nrows, 4, gdal.GDT_Float32)  # Open the file
    output_raster.SetGeoTransform(geotransform)
    srs = osr.SpatialReference()
    srs.ImportFromEPSG(4326)
    output_raster.SetProjection(srs.ExportToWkt())
    output_raster.GetRasterBand(1).WriteArray(np_pixel_array)
    # output_raster.GetRasterBand(2).WriteArray(np_pixel_array)
    # output_raster.GetRasterBand(3).WriteArray(np_pixel_array)
    output_raster.GetRasterBand(4).WriteArray(np_pixel_array_alpha)

    output_raster.FlushCache()