当您报告错误时,在问题中包含完整的错误消息通常是一个好主意。 Python回溯包括比最终错误消息更多的信息,包括发生错误的模块和行号。
您的错误发生在shapely
代码中。我可以通过传递Polygon
两个点的序列来重现错误消息; Polygon
至少需要3分。这是一个例子。
导入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
中有一个项目少于三个poi NTS。您正在使用ipython,因此您可以在尝试创建df_map
之前打印m.china
。这应该可以帮助你确定发生了什么。
谢谢沃伦。你是对的。我查了m.china名单。它有几个元素,每个元素少于三个点。但我现在可以做什么? m.china,就像m.london一样,直接从形状文件中读取。 – TheStupidOne