Python绘制地图工具与方法

B站影视 港台电影 2025-04-03 10:27 1

摘要:在 Python 中绘制地图可以使用多种库,以下是几种常见的方法和工具,适用于不同场景的需求:

在 Python 中绘制地图可以使用多种库,以下是几种常见的方法和工具,适用于不同场景的需求:

1. 使用 Cartopy(推荐)

Cartopy 是一个强大的地理空间数据处理库,基于 Matplotlib,适合绘制静态地图(如国家边界、地形、气象图等)。

安装:

bash

pip install cartopy matplotlib

示例代码:

python

import matplotlib.pyplot as plt

import cartopy.crs as ccrs

import cartopy.feature as cfeature

# 创建画布和地图投影

fig = plt.figure(figsize=(10, 6))

ax = fig.add_subplot(1, 1, 1, projection=ccrs.PlateCarree)

# 添加地理特征

ax.add_feature(cfeature.LAND)

ax.add_feature(cfeature.OCEAN)

ax.add_feature(cfeature.COASTLINE)

ax.add_feature(cfeature.BORDERS, linestyle=':')

ax.add_feature(cfeature.LAKES, alpha=0.5)

ax.add_feature(cfeature.RIVERS)

# 设置地图范围

ax.set_extent([70, 140, 15, 55]) # 中国大致范围

# 添加标题和网格

plt.title("Basic Map with Cartopy")

ax.gridlines

plt.show

2. 使用 Folium(交互式地图)

Folium 基于 Leaflet.js,适合生成交互式网页地图(如标记点、热力图、GeoJSON 叠加等)。

安装:

bash

pip install folium

示例代码:

python

import folium

# 创建地图对象,设置初始位置和缩放级别

m = folium.Map(location=[39.9042, 116.4074], # 北京市中心

zoom_start=5,

tiles='OpenStreetMap') # 地图样式可选:Stamen Terrain, CartoDB dark_matter等

# 添加标记

folium.Marker(

location=[31.2304, 121.4737],

popup="上海",

icon=folium.Icon(color='green')

).add_to(m)

# 添加线段

folium.PolyLine(

locations=[[39.9042, 116.4074], [31.2304, 121.4737]],

color='blue',

weight=2

).add_to(m)

# 保存为 HTML 文件

m.save("China_map.html")

3. 使用 GeoPandas(地理数据处理 + 绘图)

GeoPandas 结合 Pandas 和地理数据处理功能,适合处理 Shapefile/GeoJSON 数据并绘制地图。

安装:

bash

pip install geopandas matplotlib

示例代码:

python

import geopandas as gpd

import matplotlib.pyplot as plt

# 加载世界地图数据(需自行下载或使用内置数据集)

world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))

# 绘制世界地图

fig, ax = plt.subplots(figsize=(15, 10))

world.plot(ax=ax, color='lightgrey', edgecolor='black')

# 高亮中国

china = world[world.name == 'China']

china.plot(ax=ax, color='red', edgecolor='black')

plt.title("World Map with GeoPandas (Highlighting China)")

plt.show

4. 使用 Plotly(交互式地图)

Plotly 支持交互式地图可视化,适合在 Jupyter Notebook 或网页中展示动态效果。

安装:

bash

pip install plotly

示例代码:

python

import plotly.express as px

# 使用内置数据集

df = px.data.gapminder.query("year == 2007")

# 创建气泡地图

fig = px.scatter_geo(df,

locations="iso_alpha",

color="continent",

hover_name="country",

size="pop",

projection="natural earth")

fig.update_layout(title="World Population (2007)")

fig.show

5. 使用 Basemap(传统方法,已不推荐)

Basemap 是 Matplotlib 的扩展库,但已停止维护,建议优先使用 Cartopy

选择工具的建议

静态地图:Cartopy + Matplotlib 或 GeoPandas。交互式地图:Folium 或 Plotly。地理数据分析:GeoPandas + Cartopy。

如果需要更复杂的功能(如卫星地图、实时数据),可以结合 API(如 Google Maps API、Mapbox)使用。

来源:老客数据一点号

相关推荐