Python shapely Polygon.contains(Point) 没有给出正确答案(我认为)

Python shapely Polygon.contains(Point) not giving correct answer (I think)

from shapely.geometry import Polygon, Point

p = Point(2,2)
poly = Polygon((0,0), (0,5), (5,0), (5,5))

print poly.contains(p)

这会打印 False,尽管我很确定 (2,2) 在长度 5 的正方形范围内。或者也许我只是不知道 contains 方法是如何工作的。 p.within(poly) 也 return False。我是在正确使用 Polygon class 还是我真的不擅长几何?

多边形应构造为

Polygon([(0,0), (5,0), (5,5), (0,5)])

在您的例子中,序列 (0,0), (0,5), (5,0), (5,5) 指定 "letter Z" 顺时针旋转 90 度,而不是感兴趣的正方形的边界。事实上,它甚至不会产生有效的多边形,即

>>> P=Polygon([(0,0), (0,5), (5,0), (5,5)])
>>> P.area
0.0
>>> P.is_valid
Self-intersection at or near point 2.5 2.5
False