[Python] Unable to import the compressed ZSTD GeoTiff to PostGIS in Python

Discussão em 'Python' iniciado por Stack, Julho 29, 2025.

  1. Stack

    Stack Membro Participativo

    I would like to import the compressed ZSTD GeoTiff to PostGIS with the following commands (below) but I get this error: RASTER_fromGDALRaster: Could not open bytea with GDAL. Check that the bytea is of a GDAL supported format. However, I do not have any problems with the import of uncompressed GeoTiff rasters. Does GDAL support the import of compressed GeoTiff? Thank you for your hints.

    import psycopg2
    from rasterio.io import MemoryFile

    db_params = {
    "dbname": "test_db",
    "user": "postgres",
    "password": "demo",
    "host": "localhost",
    "port": "5432"}

    table_name = "species_UZ"
    raster_column_name = 'species'

    try:
    conn = psycopg2.connect(**db_params)
    cursor = conn.cursor()

    file_path='my_raster.tif'
    with rasterio.open(file_path) as src:
    # You might need to adjust based on your raster structure
    raster_data = src.read()
    profile = src.profile

    # Convert to PostGIS-compatible format (e.g., GeoTIFF in memory)
    with MemoryFile() as memfile:
    with memfile.open(**profile) as dst:
    dst.write(raster_data)
    gdal_raster_bytes = memfile.read()

    create_table_sql = f"""
    SET postgis.gdal_enabled_drivers = 'ENABLE_ALL';
    CREATE TABLE IF NOT EXISTS {table_name} (id SERIAL PRIMARY KEY, {raster_column_name} RASTER);"""
    cursor.execute(create_table_sql)

    insert_sql = f"INSERT INTO {table_name} ({raster_column_name}) VALUES (ST_FromGDALRaster(%s));"
    cursor.execute(insert_sql, (gdal_raster_bytes,))

    conn.commit()
    print(f"Raster successfully imported into {table_name}.")

    except Exception as e:
    print(f"Error: {e}")
    finally:
    if cursor:
    cursor.close()
    if conn:
    conn.close()

    Continue reading...

Compartilhe esta Página