cnmaps是一个致力于让中国地图的获取和使用更丝滑的python扩展包。
当前版本具有以下几个主要功能:
- 自带合规地图边界,数据源来自于高德等测绘机构,让你无需再额外寻找地图边界文件。
- 支持地图边界之间的加减、交并集等常规操作,让你可以自由地组合想要的地图形状。
- 具有易于使用的地图裁剪功能,且裁剪效果好,平滑无锯齿。
- 与cartopy集成,可以自动转换地图边界的投影。
这个库的优势在于,绘制省界相当的方便,随意指定省份,国家都可以实现绘制
- 不足在于,windows下安装有点麻烦,需要指定相应的cartopy版本
- 建议在Linux系统下进行安装
绘制结果如下图所示:
图中灰色阴影带蓝线的部分为江苏省省界
赋代码,代码中也给出了cartopy中自带的江苏省沿岸地区,与cnmaps进行了简单对比。
import cartopy.crs as ccrs import matplotlib.pyplot as plt from cnmaps import get_adm_maps, draw_maps import numpy as np from cartopy.mpl.ticker import LongitudeFormatter,LatitudeFormatter import proplot as pplt f, ax = pplt.subplots(ncols=1, nrows=1, proj='cyl',figsize=(6,6)) region=[120,130,25,35] proj=ccrs.PlateCarree() province=get_adm_maps(province='江苏省',record='first', only_polygon=True) draw_maps(get_adm_maps(province='江苏省'),color='blue',linewidth=0.6) ax.set_extent(region, crs = proj) ax.set_xticks(np.arange(region[0],region[1]+1,3),crs=proj) ax.set_yticks(np.arange(region[-2],region[-1]+1,3),crs=proj) ax.xaxis.set_major_formatter(LongitudeFormatter(zero_direction_label=False)) ax.yaxis.set_major_formatter(LatitudeFormatter()) ax.add_geometries(province, crs=proj, edgecolor='grey', facecolor='whitesmoke',alpha=0.8) ax.set_extent(province.get_extent(buffer=0.5)) ax.coastlines('10m',zorder=0) ax.format( ltitle='(m/s)', # coast=True, labels=True, # grid =False, lonlim=(120, 130), latlines=2, lonlines=2, latlim=(25, 35), ) ax.tick_params(which='major', direction='out', length=8, width=0.69, pad=5, labelsize=10, bottom=True, left=True) plt.show()
- https://github.com/cnmetlab/cnmaps
- https://pypi.org/project/cnmaps/0.1.2/
- https://cnmaps.readthedocs.io/zh_CN/latest/