文档字符串表示:
Polygon.contains
如果几何体包含另一个,则返回True,否则返回False
Polygon.within
如果几何体在另一个内部,则返回True,否则返回False
它们有何不同?
它们是互为反义词的关系:A
包含 B
,而 B
在 A
中。
>>> A.contains(B)
True
>>> B.within(A)
True
+----------------------------------+
| |
| +----------+ |
| | | |
| | | |
| | | |
| | | |
| | | |
| | B | |
| | | |
| +----------+ |
| |
| |
| A |
| |
+----------------------------------+
contains
手册中(重点在于):“如果对象的内部包含另一个对象的边界和内部,并且它们的边界根本不接触,则返回True。” - chepnerwithin(self, obj)
定义为简单的return obj.contains(self)
--但根据上下文,使用其中之一可能更易读。 - chepnerpo.within(poly)
应该是 true,不过你需要交换调用者和参数。 - chepnera = Polygon([(0, 0), (100, 0), (100, 100), (0, 100)])
b = Polygon([(0, 0), (50, 0), (50, 50), (0, 50)])
print(a.within(b), b.within(a))
print(a.contains(b), b.contains(a))
输出
False True
True False
+----------------------------------+
| |
| +----------+ |
| | | |
| | | |
| | | |
| | | |
| | | |
| | B | |
| | | |
| +----------+ |
| |
| |
| A |
| |
+----------------------------------+