qgis-tem-loader

qgis plugin for loading TEM geophysical inversion XYZ files as 3D objects
git clone git://src.adamsgaard.dk/qgis-tem-loader # fast
git clone https://src.adamsgaard.dk/qgis-tem-loader.git # slow
Log | Files | Refs | README | LICENSE Back to index

geotiff.py (1056B)


      1 import numpy as np
      2 from osgeo import gdal
      3 
      4 NODATA = -9999.0
      5 
      6 
      7 def write_geotiff(path, grid, array, crs_wkt):
      8     """Write a north-up single-band Float32 GeoTIFF; NaN cells become NODATA."""
      9     data = np.where(np.isfinite(array), array, NODATA).astype(np.float32)
     10     with gdal.ExceptionMgr(useExceptions=True):
     11         try:
     12             driver = gdal.GetDriverByName('GTiff')
     13             dataset = driver.Create(
     14                 str(path), grid.nx, grid.ny, 1, gdal.GDT_Float32,
     15                 options=['COMPRESS=DEFLATE', 'PREDICTOR=3'],
     16             )
     17             dataset.SetGeoTransform((grid.xmin, grid.cell_size, 0.0,
     18                                      grid.ymax, 0.0, -grid.cell_size))
     19             if crs_wkt:
     20                 dataset.SetProjection(crs_wkt)
     21             band = dataset.GetRasterBand(1)
     22             band.SetNoDataValue(NODATA)
     23             band.WriteArray(data)
     24             band.FlushCache()
     25             dataset = None
     26         except RuntimeError as exc:
     27             raise ValueError(f'failed to write GeoTIFF {path}: {exc}') from exc