只有geodataframe的属性表数据,如何得到geodataframe呢?
将geometry字段的string类型转化为geometry类型。(直接用astype是不行的o(╥﹏╥)o)
解决办法:将geometry解析为WKT格式
例如:原数据格式
latitude | longitude | geometry |
22.20001 | 106.8042 | POLYGON((106.804311451081 22.200050879564, 106.804145561136 22.2000933971004, 106.804107985389 22.1999662622218, 106.804273875203 22.1999237447324, 106.804311451081 22.200050879564)) |
代码:
import geopandas as gpd
import pandas as pd
from shapely import wkt
#读取CSV文件
csv_df=pd.read_csv(r'.\test.csv')
#转换geometry
csv_df['geometry'] = csv_df['geometry'].apply(wkt.loads)
#构造一个新的geodataframe
gdf = gpd.GeoDataFrame(csv_df, geometry="geometry",crs="epsg:4326")
#保存为shp格式
gdf.to_file(r'.\test.shp')
参考资料:使用坐标从DataFrame创建GeoDataFrame — GeoPandas 0.10.2+79.g3abc6a7 文档