在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
相关产品推荐
相关产品推荐

