Python使用Basemap绘制中国地图:省界、河流与投影详解

洛溪
洛溪
发布时间:2026-10-14| 1人浏览过
原创

本文介绍如何使用Python的Basemap库绘制包含海岸线、国界、河流及省界的详细中国地图。教程涵盖经纬度范围设定、Shapefile数据加载、台湾省单独处理以及LCC投影参数的配置,确保地图显示准确且无变形。

Basemap库简介与基础世界地图绘制

我们可以借助Basemap工具包来完成中国地图的绘制工作。

首先,需要导入必要的依赖库。


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

Basemap是气象绘图领域的强力工具,现在我们可以开始进行地图绘制。


plt.figure(1)
map=Basemap()
map.drawcoastlines()
plt.title(r'$World\ Map$',fontsize=24)
plt.show()

代码第2行用于初始化地图对象,第3行负责绘制海岸线,此时即可生成一张世界地图,操作十分简便。其中,plt.show()函数用于在界面中显示生成的图像。

当前生成的仅是海岸线轮廓,若需添加国界线,只需增加一行代码即可实现。

添加国界与河流


map.drawcountries()

至于河流的绘制,想必大家已经猜到方法,即调用drawrivers()函数。


map.drawrivers(color='blue',linewidth=0.3)

接下来,我们开始绘制中国地图。只需在创建地图实例时指定具体的经纬度范围即可。经查阅,中国的地理范围大致为东经73度40分至135度2分30秒,北纬3度52分至53度33分。

设定中国地图经纬度范围


map=Basemap(llcrnrlon=70,llcrnrlat=3,urcrnrlon=139,urcrnrlat=54)

至此,中国地图的基本轮廓已生成。但观察发现,地图中缺少省界信息。我们可以从https://gadm.org/download_country_v3.html下载中国大陆及台湾省的行政区域Shape文件,解压后将路径配置到代码中。

加载Shapefile数据绘制省界


CHN='G:\python_material\MapOfChina'

变量CHN存储的是解压后地图文件所在的本地路径。随后,即可通过代码添加省界显示。


map.readshapefile(CHN+'\gadm36_CHN_shp\gadm36_CHN_1',
         'states',drawbounds=True)

请注意,务必单独添加台湾省的边界数据,以确保地图完整性。


map.readshapefile(CHN+'\gadm36_TWN_shp\gadm36_TWN_1',
         'taiwan',drawbounds=True)

此外,我们可以在地图上叠加经纬网格。例如,若需绘制5条经纬线,可参考以下实现方式:

添加经纬网格线


parallels = np.linspace(3,55,5)
map.drawparallels(parallels,labels=[True,False,False,False])
meridians = np.linspace(70,140,5)
map.drawmeridians(meridians,labels=[False,False,False,True])

功能基本实现,但仔细观察会发现地图存在轻微变形。这可以通过在创建地图时指定投影参数来解决。

配置LCC投影参数修正变形


map=Basemap(llcrnrlon=70,llcrnrlat=3,urcrnrlon=137,urcrnrlat=54,
      projection = 'lcc', lat_1 = 33, lat_2 = 45, lon_0 = 100)

经过上述调整,地图绘制正式完成。

以下是完整的代码示例:


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

plt.figure(1)
map=Basemap(llcrnrlon=70,llcrnrlat=3,urcrnrlon=139,urcrnrlat=54,
      projection = 'lcc', lat_1 = 33, lat_2 = 45, lon_0 = 100)
map.drawcoastlines()
map.drawcountries()
map.drawrivers(color='blue',linewidth=0.3)
CHN='G:\python_material\MapOfChina'
map.readshapefile(CHN+'\gadm36_CHN_shp\gadm36_CHN_1',
         'states',drawbounds=True)
map.readshapefile(CHN+'\gadm36_TWN_shp\gadm36_TWN_1',
         'taiwan',drawbounds=True)
parallels = np.linspace(3,55,5)
map.drawparallels(parallels,labels=[True,False,False,False])
meridians = np.linspace(70,140,5)
map.drawmeridians(meridians,labels=[False,False,False,True])
plt.title(r'$China\ Map$',fontsize=24)

plt.show()

以上即为利用Python绘制中国地图的详细步骤,更多关于Python绘图的资料可关注本站其他相关文章。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。