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

G B*_*kar 1 python shapely

from shapely.geometry import Polygon, Point

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

print poly.contains(p)
Run Code Online (Sandbox Code Playgroud)

False尽管我确信(2,2)长度在一平方尺之内,但可以打印出来5。或者也许我只是不知道contains方法是如何工作的。p.within(poly)也回来了False。我是在Polygon正确使用类吗?还是我真的对几何不好?

ewc*_*wcz 5

多边形应构造为

Polygon([(0,0), (5,0), (5,5), (0,5)])
Run Code Online (Sandbox Code Playgroud)

在您的情况下,该序列(0,0), (0,5), (5,0), (5,5)指定顺时针旋转90度的“字母Z”,而不是感兴趣正方形的边界。实际上,它甚至不会产生有效的多边形,即

>>> 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
Run Code Online (Sandbox Code Playgroud)