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

在Jupyter中使用GeoPandas读取.shp与.dbf文件并转为GeoDataFrame

把SHP/DBF文件转成GeoDataFrame的解决办法

问题点

你目前的代码只是把文件路径存成了字符串变量shape_file,完全没实际读取文件内容,自然拿不到GeoDataFrame类型的数据。

正确操作步骤

1. 直接读取SHP文件(推荐)

SHP是地理空间数据的核心文件,geopandas的read_file会自动关联同目录下的.dbf、.shx等配套文件,一步到位生成GeoDataFrame:

import geopandas as gpd
import os

# 可选:切换到文件所在目录,这样路径可以写短一点
os.chdir('/drive/notebooks')
# 读取SHP文件,得到GeoDataFrame
gdf = gpd.read_file('cb_2018_us_state_500k.shp')
# 验证类型
print(type(gdf))  # 输出:<class 'geopandas.geodataframe.GeoDataFrame'>

2. 单独读取DBF文件(不推荐,仅特殊场景用)

如果非要单独读.dbf文件,得先转成pandas DataFrame,再手动处理几何信息:

import pandas as pd
import geopandas as gpd
from shapely.wkt import loads

# 读取DBF为普通DataFrame
df = pd.read_csv('/drive/notebooks/cb_2018_us_state_500k.dbf', sep='\t')
# 假设DBF里有存储几何的WKT格式列(比如叫'geometry'),转成shapely几何对象
df['geometry'] = df['geometry'].apply(loads)
# 转成GeoDataFrame
gdf = gpd.GeoDataFrame(df, geometry='geometry')
print(type(gdf))

重要提醒

  • 优先用gpd.read_file()读SHP,这是标准操作,能保证空间数据的完整性。
  • 单独读DBF的话,必须确保文件里有可解析的几何信息(比如WKT字符串),不然生成的GeoDataFrame没用。

内容的提问来源于stack exchange,提问作者palmsconnect

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 02:50:31