使用geotiff中的gdal python读取高程

问题描述 投票:6回答:1

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

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

问候,

python gdal geotiff
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()

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

© www.soinside.com 2019 - 2024. All rights reserved.