由於@ewcz在評論中說,這是因爲Shapely只能在XY平面上與2D幾何圖形一起工作。這裏忽略了Z座標。投影到XY平面時,這些不是有效的多邊形,所以Shapely不準備同意它們是平等的。如果您刪除(不必要的)×它正常工作協調:
from shapely.geometry import Polygon
poly1 = Polygon(([220.0, 400, 500], [220.0, 20, 500], [220.0, 20, 0], [220.0, 400, 0], [220.0, 400, 500]))
poly2 = Polygon(([220.0, 20, 500], [220.0, 400, 500], [220.0, 400, 0], [220.0, 20, 0], [220.0, 20, 500]))
print (poly1.equals(poly2)) # False
print poly1.is_valid # False
print poly2.is_valid # False
poly1 = Polygon(([400, 500], [20, 500], [20, 0], [400, 0], [400, 500]))
poly2 = Polygon(([20, 500], [400, 500], [400, 0], [20, 0], [20, 500]))
print (poly1.equals(poly2)) # True
print poly1.is_valid # True
print poly2.is_valid # True
poly1 = Polygon(([220.0, 400], [220.0, 20], [220.0, 20], [220.0, 400], [220.0, 400]))
poly2 = Polygon(([220.0, 20], [220.0, 400], [220.0, 400], [220.0, 20], [220.0, 20]))
print (poly1.equals(poly2)) # False
print poly1.is_valid # False
print poly2.is_valid # False
它與此相關http://stackoverflow.com/questions/9470406/python-shapely-intersection-parallel-planes - z座標是忽略。如果通過去除220.0的'x-'座標的統一值來將它降低到2D問題,那麼'poly1.equals(poly2)'返回'True',因爲它應該... – ewcz