當您報告錯誤時,在問題中包含完整的錯誤消息通常是一個好主意。 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