
Geopandas 并不自带 states.geojson 等预置地理数据文件;read_file() 需要明确指定本地或远程有效路径,用户需自行下载标准 US 州 GeoJSON(如 GitHub 公共资源),再通过绝对或相对路径加载。
geopandas 并不自带 states.geojson 等预置地理数据文件;read_file() 需要明确指定本地或远程有效路径,用户需自行下载标准 us 州 geojson(如 github 公共资源),再通过绝对或相对路径加载。
geopandas.read_file() 是一个纯路径驱动的 I/O 函数——它不会自动查找、嵌入或分发任何示例数据文件(包括 states.geojson)。所谓“built-in file”是常见误解:Geopandas 的设计哲学是保持轻量与中立,所有地理数据均由用户按需提供,而非捆绑特定数据集。
要成功加载美国各州边界数据,请按以下步骤操作:
✅ 正确做法:下载并指定本地路径
推荐使用权威、结构清晰的公开数据源,例如 PublicaMundi 的 US States GeoJSON(直接可读的 raw URL):
import geopandas as gpd
# 方式1:从网络URL直接读取(需网络通畅,fiona ≥ 1.9+ 支持)
url = "https://www.php.cn/link/aac1c3984537630d47c6d4543686935e"
states = gpd.read_file(url)
# 方式2:先下载保存为本地文件(如 ./data/us-states.json),再读取
# states = gpd.read_file("./data/us-states.json")⚠️ 注意:若使用本地路径(如
'states.geojson'),该文件必须真实存在于当前工作目录(可通过import os; print(os.getcwd())确认)。否则将触发CPLE_OpenFailedError: No such file or directory—— 这正是你遇到的核心错误。
? 验证与调试建议
- 检查当前工作目录及文件是否存在:
import os print("当前路径:", os.getcwd()) print("states.geojson 是否存在?", os.path.exists("states.geojson")) - 若从 Jupyter 运行,确保
.geojson文件已上传至 notebook 所在目录,或使用完整路径(如"/home/user/data/states.geojson")。
? 替代数据源(可选)
除上述链接外,也可选用:
- US Census Bureau TIGER/Line Shapefiles(需解压 + 转 GeoJSON)
-
naturalearth_lowres(内置小比例全球底图,含国家级行政单元,但不含 US 州级细节):world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres')) us_states = world[world.name == 'United States of America'] # ❌ 仅一个面,非州级划分
✅ 总结
geopandas 不提供 states.geojson 等“开箱即用”的区域数据;务必主动获取合规 GeoJSON(推荐 PublicaMundi 或 USGS 官方源),并通过显式路径加载。路径错误是此类 DriverError 的唯一原因——与 Geopandas 版本(如 0.14.4)无关,也无需降级或重装。


















