使用geotiff中的gdal python读取高程

use*_*574 6 python gdal geotiff

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

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

问候,

Joe*_*ton 23

如果您希望将所有高程值读取为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
Run Code Online (Sandbox Code Playgroud)

elevation将是一个2D numpy数组.如果您想要快速绘制可以使用的值matplotlib:

import matplotlib.pyplot as plt
plt.imshow(elevation, cmap='gist_earth')
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如果你想看到一个带有正确的*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()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 您还可以执行`elevation = ds.ReadAsArray()`一次读取所有波段. (2认同)
  • 乔,请更正你的代码改变```xmin```和```x0```以避免混淆.我无法更改它,因为编辑需要至少6个字符更改,但情况并非如此;) (2认同)