当您报告错误时,在您的问题中包含完整的错误消息通常是一个好主意。Python 回溯包含比最终错误消息更多的信息,包括发生错误的模块和行号。
您的错误发生在shapely
代码中。Polygon
我可以通过仅传递两个点的序列来重现错误消息;Polygon
至少需要三个点。这是一个例子。
Polygon
从 shapely 库导入:
>>> 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
少于三分。您正在使用 ipython,因此您可以m.china
在尝试创建df_map
. 这应该可以帮助您确定发生了什么。