首页 文章

使用geotiff中的gdal python读取高程

提问于
浏览
6

我正在使用GDAL加载geotiff文件 . 我设法读取坐标X,Y但不是高程 .

有没有人曾经在类似案件上工作过?

问候,

1 回答

  • 22

    如果您希望将所有高程值读取为numpy数组,则通常会执行以下操作:

    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 将是一个2D numpy数组 . 如果您想快速绘制值,可以使用 matplotlib

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

    enter image description here

    如果你想看到一个带有正确的* x,y坐标的图,你会做类似的事情:

    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

相关问题