@ewczがコメントで言うように、これは、Shapelyが実際にはXY平面内の2Dジオメトリでのみ機能するためです。ここではZ座標を無視しています。これらは、XY平面に投影されたときに有効なポリゴンではないため、Shapelyはそれらが等しいことに同意する準備ができていません。あなたはX(不要)を削除する場合には正常に動作座標:
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-'Coordinateの一様な値を削除して2Dの問題にすると、' poly1.equals(poly2) 'は' True'を返します。 – ewcz