Search code examples
pythondatasetgdal

How do I import tif using gdal?


How do I import tif using gdal?

I'm trying to get my tif file in a usable format in Python, so I can analyze the data. However, every time I import it, I just get an empty list. Here's my code:

xValues = [447520.0, 432524.0, 451503.0]
yValues = [4631976.0, 4608827.0, 4648114.0]

gdal.AllRegister()
dataset = gdal.Open('final_snow.tif', GA_ReadOnly)

if dataset is None:
    print 'Could not open image'
    sys.exit(1)

data = np.array([gdal.Open(name, gdalconst.GA_ReadOnly).ReadAsArray() for name, descr in       dataset.GetSubDatasets()])
print 'this is data ', data`

It always prints an empty list, but it doesn't throw an error. I checked out other questions, such as [this] (Create shapefile from tif file using GDAL) What might be the problem?


Solution

  • For osgeo.gdal, it should look like this:

    from osgeo import gdal
    gdal.UseExceptions()  # not required, but a good idea
    dataset = gdal.Open('final_snow.tif', gdal.GA_ReadOnly)
    data = dataset.ReadAsArray()
    

    Where data is either a 2D array for 1-banded rasters, or a 3D array for multiband.


    An alternative with rasterio looks like:

    import rasterio
    with rasterio.open('final_snow.tif', 'r') as r:
        data = r.read()
    

    Where data is always a 3D array, with the first dimension as band index.