Python Basemap:获取更详细的海岸线图

Posted

技术标签:

【中文标题】Python Basemap:获取更详细的海岸线图【英文标题】:Python Basemap: getting more detailed coastline drawing 【发布时间】:2020-07-03 10:08:40 【问题描述】:

有没有办法获得比 Basemap 中默认的更详细的海岸线?例如,如果我尝试显示挪威的海岸,则默认绘图非常粗糙且有点难看(见图)。有什么方法可以获得更好的海岸线/控制海岸线分辨率?

代码:

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

# setup Lambert Conformal basemap.
m = Basemap(llcrnrlon=-8.0, llcrnrlat=55.5, urcrnrlon=34.5, urcrnrlat=72.0,
            lat_0="65.0", lon_0=15.0,
            projection="lcc")

# draw coastlines.
m.drawcoastlines()

# draw a boundary around the map, fill the background.
# this background will end up being the ocean color, since
# the continents will be drawn on top.
m.drawmapboundary(fill_color="#A6CAE0")

# fill continents, set lake color.
m.fillcontinents(color='grey',lake_color='lavender')

# draw parallels and meridians.
# label parallels on right and top
# meridians on bottom and left
parallels = np.arange(50.,75.,10.)
# labels = [left,right,top,bottom]
m.drawparallels(parallels,labels=[False,True,True,False])
meridians = np.arange(-10.,40,10.)
m.drawmeridians(meridians,labels=[True,False,False,True])

plt.show()

生产:

解决方案:

非常感谢@hemmelig 的解决方案 :)

改为:

# setup Lambert Conformal basemap.
m = Basemap(llcrnrlon=-8.0, llcrnrlat=55.5, urcrnrlon=34.5, urcrnrlat=72.0,
            lat_0="65.0", lon_0=15.0,
            projection="lcc",
            resolution="l")

生成更好的地图:

【问题讨论】:

【参考方案1】:

在实例化底图时使用 resolution 关键字。

可以是c(粗)、l(低)、i(中)、h(高)、f(全)或None。如果None,则不会读入边界数据(并且drawcoastlines 等类方法将引发if 调用)。数据集之间的分辨率下降了大约 80%。高分辨率数据集的绘制速度要慢得多。 默认c。海岸线数据来自 GSHHS (http://www.soest.hawaii.edu/wessel/gshhs/gshhs.html)。来自通用制图工具 (http://gmt.soest.hawaii.edu) 的州、国家和河流数据集。 (来自文档)

【讨论】:

以上是关于Python Basemap:获取更详细的海岸线图的主要内容,如果未能解决你的问题,请参考以下文章

超级大神珍藏的Python初学者最详细学习路线图分享

腾讯大佬告诉Python 爬虫学习超详细路线图

Python实用工具速来!!一篇文章十分钟教你如何使用Python第三方库basemap进行地图绘制

Python basemap安装

python basemap readshapefile二三事

basemap库地图来源