底图的静态城市地图

时间:2018-12-05 16:30:31

标签: python python-2.7 maps matplotlib-basemap

我正在尝试通过Python的底图以静态方式绘制NY地图

west, south, east, north = -74.26, 40.50, -73.70, 40.92

# fig = plt.figure(figsize=(18,14))

m = Basemap(projection='merc', llcrnrlat=south, urcrnrlat=north,
            llcrnrlon=west, urcrnrlon=east, lat_ts=south, resolution='i')

m.etopo(scale=0.5, alpha=0.5)

但是我得到only this

我可以通过folium绘制它,但它不是静态的,而是可以缩放的。

是否可以使用Basemap绘制NY的静态地图

1 个答案:

答案 0 :(得分:0)

根据底图documentationetopo使用来自NOAA page的数据(提供1弧分的分辨率)来显示浮雕。使用您在代码中提供的坐标,我希望最大分辨率约为33x25像素。

现在,再次根据底图文档,etopo接受scale关键字以缩小数据,默认为None,但它们并没有真正说明接受的值范围。我开始尝试使用此方法,并使用scale=5在您的(略有改编的)代码中进行操作:

from matplotlib import pyplot as plt
from mpl_toolkits.basemap import Basemap

west, south, east, north = -74.26, 40.50, -73.70, 40.92

m = Basemap(projection='merc', llcrnrlat=south, urcrnrlat=north,
            llcrnrlon=west, urcrnrlon=east, lat_ts=south, resolution='i')

result = m.etopo(scale=5)
print(result.get_size())
plt.show()

我得到以下图像(警告:这需要一些时间):

enter image description here

print命令的输出(即图像的像素大小)为

(32, 32)

这使我感到困惑,因为我没想到分辨率会在纬度方向上变得如此高。我猜想正在进行某种插值操作,但是要确定一个插值操作必须经过代码才能查看scale关键字的实际作用。