使用Matplotlib和Cartopy绘制完整中国地图

在地理信息系统(GIS)中,地图的可视化是非常重要的一环。本文将介绍如何使用Python中的Matplotlib和Cartopy库,基于shp文件绘制完整的中国地图。首先,我们需要确保安装了相关库,并获取到合适的shp文件。

安装依赖

我们需要先安装Matplotlib和Cartopy,通常可以通过以下命令进行安装:

pip install matplotlib cartopy

此外,我们还需要下载中国的shp文件。可以从公开的数据源网站(如自然地理信息或中国国家地理信息公共服务平台)获取shp文件,文件通常包括省级、县级等各个层级的边界。

读取shp文件并绘制地图

接下来,我们将使用Cartopy中的shapereader读取shp文件,并使用Matplotlib将其绘制出来。以下是具体的代码示例:

import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.feature as cfeature
from cartopy.io.shapereader import Reader

# 设置绘图区域和投影方式
fig = plt.figure(figsize=(10, 10))
ax = fig.add_subplot(1, 1, 1, projection=ccrs.Mercator())

# 设置地图背景
ax.set_extent([73, 135, 3, 54])  # [xmin, xmax, ymin, ymax]
ax.add_feature(cfeature.BORDERS)  # 添加国界
ax.add_feature(cfeature.LAKES, alpha=0.5)  # 添加湖泊
ax.add_feature(cfeature.COASTLINE)  # 添加海岸线
ax.add_feature(cfeature.FORESTS)  # 添加森林

# 读取中国省级行政区的shp文件,路径需根据实际情况修改
shp_filename = 'path_to_your_shapefile/china_provinces.shp'
ax.add_geometries(Reader(shp_filename).geometries(),
                  ccrs.PlateCarree(),
                  edgecolor='black',
                  facecolor='none')

# 设置标题
plt.title('中国省级行政区地图', fontsize=20)

# 展示地图
plt.show()

代码解读

  1. 导入库:我们首先导入了必要的库,包括matplotlib.pyplot用于绘图,cartopy.crs用于设置地图的投影方式,以及cartopy(feature)cartopy.io.shapereader用于添加地理特征和读取shp文件。

  2. 设置绘图区域及投影

  3. 使用plt.figure创建一个画布并设置大小。
  4. 使用add_subplot添加子图,指定投影为Mercator(墨卡托投影)以更好地展示中国的地理特征。

  5. 设置地图背景

  6. set_extent方法设置了地图的显示范围,范围为中国的经纬度。
  7. 使用add_feature方法添加国界、湖泊和海岸线等元素,使地图更加清晰。

  8. 读取shp文件

  9. 使用Reader读取指定路径下的shp文件,并使用add_geometries将读取的几何体添加到地图中。

  10. 展示地图

  11. 最后,通过plt.title为地图添加标题,并使用plt.show()展示绘制的地图。

总结

通过以上步骤,我们成功地使用Python的Matplotlib和Cartopy基于shp文件绘制了中国地图。这种方法不仅适用于中国地图的绘制,也可以用于其他地区的行政区划图。可以根据实际需要进一步定制地图的样式、颜色和其他元素,以满足不同的可视化需求。在未来的工作中,可以探索更多Cartopy的功能,比如绘制气象数据、海洋数据等多种地理信息,为数据分析和可视化提供强大的支持。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部