首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python Basemap库地图绘制教程 - 从入门到精通

Python Basemap库地图绘制教程 - 从入门到精通

原创
作者头像
用户11750067
发布2025-08-08 11:37:41
发布2025-08-08 11:37:41
23200
代码可运行
举报
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
复制
http://cctv5.mcgzjx.com 
http://tv3.mcgzjx.com   
http://tv2.mcgzjx.com   
http://tv1.mcgzjx.com   
http://mcgzjx.com   

什么是Basemap?

Basemap是Matplotlib的一个扩展工具包,用于在Python中绘制2D地图。它能够:

  • 绘制大陆、国家和行政区划边界
  • 添加经纬度网格和标签
  • 使用多种地图投影方式
  • 在地图上叠加数据点和轨迹
  • 创建专业级地理可视化效果

注意:Basemap目前处于维护模式,官方推荐使用Cartopy作为替代。但Basemap仍被广泛使用,且拥有丰富的示例和文档。

安装Basemap

使用Anaconda安装(推荐):

代码语言:javascript
代码运行次数:0
运行
复制
conda install -c conda-forge basemap

使用pip安装:

代码语言:javascript
代码运行次数:0
运行
复制
pip install basemap

安装依赖库:

代码语言:javascript
代码运行次数:0
运行
复制
pip install matplotlib numpy pillow

绘制基础世界地图

以下代码创建一个简单的世界地图:

代码语言:javascript
代码运行次数:0
运行
复制
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt

# 创建地图实例
plt.figure(figsize=(12, 8))
m = Basemap(projection='mill', llcrnrlat=-60, urcrnrlat=80, 
            llcrnrlon=-180, urcrnrlon=180, resolution='c')

# 绘制海岸线、国家边界等
m.drawcoastlines(linewidth=0.5)
m.drawcountries(linewidth=0.5)
m.drawmapboundary(fill_color='#c6e0ff')
m.fillcontinents(color='#f0e6d2', lake_color='#c6e0ff')

# 添加经纬度网格
m.drawparallels(range(-60, 81, 30), labels=[1,0,0,0])
m.drawmeridians(range(-180, 181, 60), labels=[0,0,0,1])

# 添加标题
plt.title("Basemap基础世界地图", fontsize=16)

# 显示地图
plt.show()

代码解析:

  • projection='mill': 使用米勒圆柱投影
  • llcrnrlat/urcrnrlat: 设置纬度范围
  • llcrnrlon/urcrnrlon: 设置经度范围
  • resolution='c': 使用粗糙分辨率(其他选项:'l'低, 'i'中, 'h'高, 'f'全)
  • drawcoastlines(): 绘制海岸线
  • drawcountries(): 绘制国家边界

高级地图绘制技巧

1. 使用不同投影方式

Basemap支持30多种投影方式,常见的有:

  • 'ortho': 正射投影(类似地球仪)
  • 'robin': 罗宾森投影(平衡投影)
  • 'merc': 墨卡托投影(常见于导航)
  • 'lcc': 兰伯特圆锥投影(适合中纬度地区)

2. 在地图上添加数据

将数据点添加到地图上:

代码语言:javascript
代码运行次数:0
运行
复制
# 定义城市坐标(经度,纬度)
cities = {
    '北京': (116.4, 39.9),
    '上海': (121.47, 31.23),
    '广州': (113.26, 23.12),
    '成都': (104.06, 30.67)
}

# 创建中国地图
plt.figure(figsize=(10, 8))
m = Basemap(projection='lcc', lat_0=35, lon_0=105, 
            width=5e6, height=5e6, resolution='h')
m.drawcoastlines()
m.drawcountries(linewidth=1.5)
m.drawmapboundary(fill_color='#c6e0ff')
m.fillcontinents(color='#f0e6d2', lake_color='#c6e0ff')

# 添加城市标记
for city, (lon, lat) in cities.items():
    x, y = m(lon, lat)
    m.plot(x, y, 'ro', markersize=8)
    plt.text(x, y, city, fontsize=12, color='#c0392b')

plt.title("中国主要城市分布图", fontsize=16)
plt.show()

3. 绘制轨迹和路径

连接点形成轨迹:

代码语言:javascript
代码运行次数:0
运行
复制
# 台风路径坐标
path = [
    (125.0, 15.0), (123.0, 16.5), (121.0, 18.0),
    (119.0, 20.0), (118.0, 22.5), (118.5, 25.0)
]

# 创建地图
plt.figure(figsize=(10, 8))
m = Basemap(projection='merc', llcrnrlat=10, urcrnrlat=30, 
            llcrnrlon=110, urcrnrlon=130, resolution='h')
m.drawcoastlines()
m.drawcountries()
m.drawmapboundary(fill_color='#c6e0ff')
m.fillcontinents(color='#f0e6d2', lake_color='#c6e0ff')

# 绘制路径
lons, lats = zip(*path)
x, y = m(lons, lats)
m.plot(x, y, 'b-', linewidth=2)  # 路径线
m.plot(x, y, 'ro', markersize=6)  # 路径点

# 添加起点和终点标签
plt.text(x[0], y[0], '起点', fontsize=10, color='#27ae60')
plt.text(x[-1], y[-1], '终点', fontsize=10, color='#c0392b')

plt.title("台风路径模拟图", fontsize=16)
plt.show()

常见问题与解决方法

1. 安装问题

问题: 安装时出现依赖错误

解决: 使用Anaconda安装或尝试:

代码语言:javascript
代码运行次数:0
运行
复制
pip install basemap --only-binary :all:

2. 地图显示空白

问题: 地图显示空白或只有轮廓

解决: 检查坐标范围设置,确保在合理范围内:

代码语言:javascript
代码运行次数:0
运行
复制
# 中国地图合理范围示例
llcrnrlon=70, urcrnrlon=140, 
llcrnrlat=15, urcrnrlat=55

3. 标签重叠

问题: 经纬度标签重叠显示

解决: 调整网格间距和标签位置:

代码语言:javascript
代码运行次数:0
运行
复制
# 每30度绘制一条纬线,只在左侧显示标签
m.drawparallels(range(-90, 91, 30), 
                labels=[1,0,0,0])

总结

Basemap是一个强大的地理数据可视化工具,通过本教程你学会了:

  • Basemap库的安装与环境配置
  • 创建不同投影和范围的地图
  • 自定义地图样式和颜色
  • 在地图上添加标记点和轨迹
  • 解决常见问题

虽然Basemap已被Cartopy取代,但它仍然是地理数据可视化的重要工具。掌握Basemap能为学习更先进的地理可视化库打下坚实基础。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是Basemap?
  • 安装Basemap
  • 绘制基础世界地图
    • 代码解析:
  • 高级地图绘制技巧
    • 1. 使用不同投影方式
    • 2. 在地图上添加数据
    • 3. 绘制轨迹和路径
  • 常见问题与解决方法
    • 1. 安装问题
    • 2. 地图显示空白
    • 3. 标签重叠
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档