Basemap能在城市级别绘制详细海岸线吗?

3 投票
2 回答
7152 浏览
提问于 2025-04-17 03:30

我正在尝试用Python中的Basemap绘制纽约市地区的详细海岸线。使用完整分辨率的数据集时,曼哈顿看起来像个长方形,而哈德逊河在中城附近根本没有显示出来。

这是我正在使用的代码。有什么建议吗?

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

m = Basemap(projection='merc',llcrnrlat=40.55,urcrnrlat=40.82,\
            llcrnrlon=-74.1, urcrnrlon=-73.82, lat_ts=40.5,resolution='f')
m.drawcoastlines()
m.drawrivers()
m.fillcontinents(color='coral',lake_color='aqua')
m.drawmapboundary(fill_color='aqua') 
plt.show()

编辑

经过进一步探索,我发现我的问题主要出在河流上。虽然我能得到海洋海岸线的详细边界,但哈德逊河和哈莱姆河还是没有显示出来。当前的代码是:

m = Basemap(projection='merc',llcrnrlat=40.55,urcrnrlat=40.82,\
            llcrnrlon=-74.1, urcrnrlon=-73.82, lat_ts=40.5,resolution='f')
m.drawmapboundary(fill_color='#85A6D9')
m.drawcoastlines(color='#6D5F47', linewidth=.4)
m.drawrivers(color='#6D5F47', linewidth=.4)
m.fillcontinents(color='white',lake_color='#85A6D9')
plt.show()

2 个回答

1

你可以试着把区域阈值设置为0.1,比如:

m = Basemap(projection='merc',
            # ...
            area_thresh = 0.1)
5

Basemap自带的数据分辨率比较低(高分辨率的数据会占用很多空间)。

你可以加载形状文件(shapefiles)来和basemap一起显示。我之前借用了这个教程里的代码来实现这个功能。这个教程还链接到了GADM,你可以在这里下载任何国家的高分辨率形状文件。

撰写回答