来自 Pandas 中 CSV 坐标的形状多边形

问题描述 投票:0回答:1

所以我读了一个带有 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 pandas shapely
1个回答
0
投票

您的坐标似乎在 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, ...
© www.soinside.com 2019 - 2024. All rights reserved.