GeoPandas 0.8.1版本解析WKT列报GeoSeries无from_wkt属性如何解决
报错原因
你当前使用的GeoPandas 0.8.1版本未内置GeoSeries.from_wkt接口——该接口是GeoPandas 0.9.0版本才正式引入的,你参考的官方文档示例适配的是新版运行环境,直接在旧版本运行自然会触发属性不存在的报错。
适配当前环境的实现步骤
- 导入依赖库
import geopandas as gpd from shapely import wkt - 解析WKT列生成几何对象
针对存储WKT文本的WKT列,通过apply方法批量调用shapely的WKT解析器,将文本转换为可被GeoPandas识别的几何对象,结果直接赋值给几何列字段:df['geometry'] = df['WKT'].apply(wkt.loads) - 构建GeoDataFrame
基于带几何字段的普通Pandas DataFrame初始化GeoDataFrame,必须补充指定数据对应的空间参考坐标系,替换为你实际查询数据对应的EPSG编码(常用的WGS84经纬度坐标对应EPSG:4326):gdf = gpd.GeoDataFrame(df, geometry='geometry', crs='EPSG:4326') - 写入shapefile
直接调用GeoDataFrame的to_file方法完成写入,若存在中文属性字段,可指定编码参数避免乱码:gdf.to_file("result_lines.shp", encoding='utf-8')
常见注意点
- 上述解析方式的性能和新版本
from_wkt的实现基本一致,无需担心逐列调用的效率问题 - 若从PostGIS查询的几何数据坐标系不确定,可在原SQL语句中通过
ST_SRID(geom)函数获取对应的SRID编号,换算为EPSG编码填入crs参数,避免写入的shapefile缺失空间参考信息 - 写入shapefile时默认会拆分生成
.shp/.shx/.dbf/.prj多个配套文件,请勿单独移动单个文件造成数据损坏
内容的提问来源于stack exchange,提问作者TOuyang
相关产品推荐
相关产品推荐

