如何从Geopandas GeoDataFrame提取Shapely Polygon并转为WKT列表
正确提取WKT格式几何列表的方法
你之前的方法出错的核心原因是:wkt.dumps()仅支持接收单个Shapely几何对象作为输入,你直接传入整个Geometry列(GeoSeries对象)无法完成批量转换,直接调用tolist()也只会输出Shapely对象的原生引用。
你可以用以下两种方案实现需求:
方案1(推荐,适配Geopandas 0.9及以上版本)
直接调用GeoSeries自带的to_wkt()方法批量转换,再转成列表即可:
# 直接得到WKT字符串列表 wkt_list = intersection_matches['geometry'].to_wkt().tolist() # 打印验证 print(wkt_list)
方案2(兼容低版本Geopandas)
遍历每个几何对象,调用其自带的wkt属性或wkt.dumps()方法完成转换:
# 写法1:调用Shapely对象原生wkt属性 wkt_list = intersection_matches['geometry'].apply(lambda x: x.wkt).tolist() # 写法2:用wkt.dumps转换 from shapely import wkt wkt_list = intersection_matches['geometry'].apply(lambda x: wkt.dumps(x)).tolist()
之前尝试的方法错误说明
- 直接给
wkt.dumps()传入整个GeoSeries,该函数不支持批量处理,所以返回的还是未转换的对象列表 - 直接调用
tolist()仅会将GeoSeries中的Shapely对象转成列表结构,不会触发WKT格式转换 iloc[:,4]取到的还是Geometry列,和直接取geometry列没有区别,转列表逻辑和第二种错误一致decode是字节类型的解码方法,GeoDataFrame对象无该属性,属于方法误用
内容的提问来源于stack exchange,提问作者Rose
相关产品推荐
相关产品推荐

