Read elevation using gdal python from geotiff

前端 未结 1 468
抹茶落季
抹茶落季 2021-02-04 17:23

I am loading a geotiff file using GDAL. I have managed to read the coordinates X,Y but not the elevation.

Has anyone worked on a similar case before ?

Regards,

相关标签:
1条回答
  • 2021-02-04 17:57

    If you'd like the read all of the elevation values into a numpy array, you'd typically do something like this:

    from osgeo import gdal
    gdal.UseExceptions()
    
    ds = gdal.Open('test_data.tif')
    band = ds.GetRasterBand(1)
    elevation = band.ReadAsArray()
    
    print elevation.shape
    print elevation
    

    elevation will be a 2D numpy array. If you'd like a quick plot of the values you can use matplotlib:

    import matplotlib.pyplot as plt
    plt.imshow(elevation, cmap='gist_earth')
    plt.show()
    

    enter image description here

    If you'd like to see a plot with proper* x,y coordinates, you'd do something similar to this:

    nrows, ncols = elevation.shape
    
    # I'm making the assumption that the image isn't rotated/skewed/etc. 
    # This is not the correct method in general, but let's ignore that for now
    # If dxdy or dydx aren't 0, then this will be incorrect
    x0, dx, dxdy, y0, dydx, dy = ds.GetGeoTransform()
    
    x1 = x0 + dx * ncols
    y1 = y0 + dy * nrows
    
    plt.imshow(elevation, cmap='gist_earth', extent=[x0, x1, y1, y0])
    plt.show()
    

    enter image description here

    0 讨论(0)
提交回复
热议问题