如何在Python中使用ESRI ASCII光栅格式文件(如Matlab中的mapshow)绘制光栅地图?

如何在Python中使用ESRI ASCII光栅格式文件(如Matlab中的mapshow)绘制光栅地图?,python,Python,例如,我有一个ESRI ASCII光栅格式的DEM文件,如下所示: ncols 480 nrows 450 xllcorner 378923 yllcorner 4072345 cellsize 30 nodata_value -32768 43 2 45 7 3 56 2 5 23 65 34 6 32 54 57 34 2 2 54 6 35 45 65 34 2 6 78 4 2 6 89 3 2 7 45 23 5 8 4 1 62 ... 我想画一张光栅地图来显示地形。我知道它可以

例如,我有一个ESRI ASCII光栅格式的DEM文件,如下所示:

ncols 480
nrows 450
xllcorner 378923
yllcorner 4072345
cellsize 30
nodata_value -32768
43 2 45 7 3 56 2 5 23 65 34 6 32 54 57 34 2 2 54 6 
35 45 65 34 2 6 78 4 2 6 89 3 2 7 45 23 5 8 4 1 62 ...
我想画一张光栅地图来显示地形。我知道它可以通过Matlab中的mapshow实现

[Z,R] = arcgridread(filename);
mapshow(Z,R,'DisplayType','Surface')

但是如何在Python中实现呢?如果坐标系是英国国家网格,是否可以在Python中的光栅地图上添加shapefile层(如多边形文件)?

好吧,没有人愿意回答这个问题,尽管有两个人认为这个问题很有用。所以,我现在可以自己回答了。 首先,读取ESRI ASCII光栅文件('file.asc')

然后可以使用DEM阵列及其范围绘制地图

import matplotlib.pyplot as plt
fig, ax = plt.subplots(1)
img = plt.imshow(data_array, extent=map_extent)
如果要添加颜色条,可能需要以下代码:

from mpl_toolkits.axes_grid1 import make_axes_locatable
divider = make_axes_locatable(ax)
cax = divider.append_axes(loc='right', size='3%', pad=0.05,)
cbar = plt.colorbar(img, cax=cax)
通过这些代码,您还可以在Python中定义自己的arcgridread和mapshow函数

import matplotlib.pyplot as plt
fig, ax = plt.subplots(1)
img = plt.imshow(data_array, extent=map_extent)
from mpl_toolkits.axes_grid1 import make_axes_locatable
divider = make_axes_locatable(ax)
cax = divider.append_axes(loc='right', size='3%', pad=0.05,)
cbar = plt.colorbar(img, cax=cax)