报告错误时,在问题中包含完整的错误消息通常是个好主意。 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 中有一个项目少于三分。您正在使用 ipython,因此您可以在尝试创建 df_map 之前打印 m.china。这应该可以帮助您确定发生了什么。