如何将WKT格式的坐标转换为纬度和经度列

问题描述

我已经从Twitter提取了坐标数据。我得到的分数是WKT格式。我想将它们分为“纬度”和“经度”两列。 坐标格式为

{'type': 'Point','coordinates': [77.58168,12.8952]}
{'type': 'Point','coordinates': [77.64363,12.9739]}
{'type': 'Point','coordinates': [75.9372318,12.44627712]}
{'type': 'Point','coordinates': [77.5945627,12.9715987]}
{'type': 'Point','coordinates': [77.53584257,13.05144109]}
{'type': 'Point','coordinates': [77.58721,12.96643]}

我使用str.replace删除了所有标点符号和不需要的文本

df['coordinates'] = df.coordinates.str.replace('type,?','')
df['coordinates'] = df.coordinates.str.replace('Point,'')
df['coordinates'] = df.coordinates.str.replace('coordinates,'')
df['coordinates'] = df.coordinates.str.replace('{,'')
df['coordinates'] = df.coordinates.str.replace(','')
df['coordinates'] = df.coordinates.str.replace(':,'')
df['coordinates'] = df.coordinates.str.replace('],'')
df['coordinates'] = df.coordinates.str.replace('},'')
df['coordinates'] = df.coordinates.str.replace("'',?","")

我尝试使用来拆分列

df = pd.DataFrame(df.coordinates.str.split(' ',1).tolist(),columns = ['Long','Lat'])

但是它不起作用。 请让我知道如何将WKT转换为坐标列

解决方法

geopandas docs涉及使用shapely以WKT格式导入数据。在他们的示例中,给定数据框df,您可以尝试:

from shapely import wkt
import geopandas as gpd

df['coordinates'] = df['coordinates'].apply(wkt.loads)

gdf = gpd.GeoDataFrame(df,geometry='coordinates')

如果需要,可以执行以下操作获取纬度和经度,并将其分配回原始数据框。

df['lat'] = gdf.geometry.x
df['long'] = gdf.geometry.y

由于您没有提供完整的最低限度的工作示例,因此我尚未测试此代码,但我认为它应该可以工作。