所以我读了一个带有 pandas 的 .csv 文件。我正在寻找具有可用多边形坐标的特定行和列。它看起来像这样“(-117.878472193291,33.9258862905858),(-117.959630976464,33.9287353414733),(-117.988036550575,33.8445186678524),(-117.871 292762472,33.8478889307759)".
现在我想将其转换为可与 Shapely 一起使用的实际多边形。
我的代码是这样的:
df = pd.read_csv(thecsv.csv)
print(df['coodinates'].iloc[:1])
显示:0 (-117.878472193291,33.9258862905858),(-117.959...
我尝试将其转换为多边形:
poly = Polygon(df['coordinates'].iloc[:1])
现在我收到这个错误:
ValueError:一个 LinearRing 必须至少有 3 个坐标元组
有什么建议吗?我这样做正确吗?谢谢!
您的坐标似乎在 Python 字面量语法中。您可以在将其传递给
ast.literal_eval
之前使用 Polygon
对其进行解析:
import ast
import pandas as pd
from shapely.geometry import Polygon
df = pd.read_csv("a.csv")
df["coordinates"] = df["coordinates"].apply(lambda c: Polygon(ast.literal_eval(c)))
print(df)
a.csv:
coordinates
"(-117.878472193291,33.9258862905858),(-117.959630976464,33.9287353414733),(-117.988036550575,33.8445186678524),(-117.871292762472,33.8478889307759)"
输出:
coordinates
0 POLYGON ((-117.878472193291 33.9258862905858, ...