You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用GeoPandas处理含经纬度的CSV文件并绘制地图?Shapefile怎么用?

用GeoPandas结合CSV和Shapefile绘制地图

先搞懂Shapefile到底是什么

Shapefile是一种常用的地理空间数据格式,用来存储多边形、线、点这类地理要素的边界和属性。你需要它的核心原因是:你的CSV只有孤立的经纬度点,Shapefile能给你提供地图的底图(比如国家、城市的轮廓),让你的点数据有地理参考。

一步步操作

1. 安装依赖库

确保你装了必要的包:

pip install geopandas matplotlib

2. 读取CSV并转为GeoDataFrame

你的CSV里的经度、纬度是普通数值列,需要把它们转换成GeoPandas能识别的几何对象(Point):

import geopandas as gpd
import pandas as pd
from shapely.geometry import Point

# 读取CSV
df = pd.read_csv("你的数据文件.csv")

# 把经纬度转为Point几何对象,注意顺序是(经度, 纬度)
geometry = [Point(xy) for xy in zip(df["经度"], df["纬度"])]

# 创建GeoDataFrame,指定坐标系为WGS84(EPSG:4326,全球通用的GPS坐标系)
gdf = gpd.GeoDataFrame(df, geometry=geometry, crs="EPSG:4326")

3. 加载Shapefile底图

你需要一个对应区域的Shapefile(比如世界地图、中国地图),可以从公开数据源获取免费的低分辨率数据。拿到Shapefile后,用GeoPandas读取:

# 读取Shapefile,替换成你的Shapefile路径
world = gpd.read_file("你的Shapefile文件.shp")

# 如果你只需要特定区域,比如中国,可以筛选
# china = world[world["name"] == "China"]

4. 绘制带分类变量的地图

现在把底图和你的点数据叠加,根据分类变量设置点的颜色或大小:

import matplotlib.pyplot as plt

# 创建绘图对象
fig, ax = plt.subplots(figsize=(10, 8))

# 先画底图
world.plot(ax=ax, color="#f0f0f0", edgecolor="gray")

# 再画你的点数据,根据分类变量(比如"分类列")设置颜色
gdf.plot(ax=ax, column="分类列", cmap="viridis", markersize=50, alpha=0.7, legend=True)

# 设置标题和坐标轴
plt.title("基于分类变量的地理分布")
plt.axis("off")

# 显示或保存图
plt.show()
# plt.savefig("地图结果.png", dpi=300)

5. 常见坑点解决

  • 坐标系不匹配:如果你的GeoDataFrame和Shapefile坐标系不一样,会导致点画到错误位置。可以用to_crs转换:
    # 把Shapefile转为和你的数据一样的坐标系(EPSG:4326)
    world = world.to_crs("EPSG:4326")
    
  • Shapefile文件不完整:Shapefile不是单个.shp文件,还需要.shx、.dbf等配套文件,必须放在同一个文件夹里才能读取。

内容的提问来源于stack exchange,提问作者Dhyey Shaileshkumar Patel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 08:54:15