2014-07-25 4 views

답변

21

당신이 원하는 경우는 A 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

+0

감사합니다, 그것은 완벽하게 작동합니다! – user3548574

+2

'elevation = ds.ReadAsArray()'를 사용하여 모든 밴드를 한 번에 읽을 수도 있습니다. –

+2

@ user3548574, 스택 오버플로에 오신 것을 환영합니다! 이것이 도움이된다면, [답변 수락] (http://meta.stackoverflow.com/a/5235)을 통해 커뮤니티에 알릴 수 있습니다. – falsetru