gpt4 book ai didi

python - 创建 Shapely 多边形的数据框给出 "ValueError: A LinearRing must have at least 3 coordinate tuples"

转载 作者:行者123 更新时间:2023-11-30 23:29:11 28 4
gpt4 key购买 nike

我想创建一个中国各省人口的热图,我发现 this guide这里有类似的问题。

尽管我不得不承认我并没有完全理解它们,但是我可以毫无问题地浏览示例代码。然而,当我尝试使用中国的 shapefile 来模仿该示例时,代码运行正常,直到出现以下内容

df_map = pd.DataFrame({
'poly': [Polygon(xy) for xy in m.china],
'ward_name': [ward['NAME'] for ward in m.china_info]})

它会生成一个错误,提示

ValueError: A LinearRing must have at least 3 coordinate tuples

有人可以向我解释一下导致此错误的原因吗?

最佳答案

当您报告错误时,在问题中包含完整的错误消息通常是个好主意。 Python 回溯包含比最终错误消息更多的信息,包括发生错误的模块和行号。

您的错误发生在 shapely 代码中。我可以通过传递仅包含两个点的 Polygon 序列来重现错误消息; Polygon 需要至少三个点。这是一个例子。

从 shapely 库导入Polygon:

>>> from shapely.geometry import Polygon

传递三个点的序列是有效的:

>>> p = Polygon([(0, 0), (0, 1), (1, 1)])

但是只给出两点就会导致错误:

>>> p = Polygon([(0, 0), (0, 1)])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/warren/anaconda/lib/python2.7/site-packages/shapely/geometry/polygon.py", line 229, in __init__
self._geom, self._ndim = geos_polygon_from_py(shell, holes)
File "/home/warren/anaconda/lib/python2.7/site-packages/shapely/geometry/polygon.py", line 445, in geos_polygon_from_py
geos_shell, ndim = geos_linearring_from_py(shell)
File "/home/warren/anaconda/lib/python2.7/site-packages/shapely/geometry/polygon.py", line 393, in geos_linearring_from_py
"A LinearRing must have at least 3 coordinate tuples")
ValueError: A LinearRing must have at least 3 coordinate tuples

显然,m.china 中有一个项目的积分少于 3 个。您正在使用 ipython,因此您可以在尝试创建 df_map 之前打印 m.china。这应该可以帮助您确定发生了什么。

关于python - 创建 Shapely 多边形的数据框给出 "ValueError: A LinearRing must have at least 3 coordinate tuples",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21248587/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com