Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Polygon.contains和Polygon.within之间有什么区别?_Python_Polygon_Shapely - Fatal编程技术网

Python Polygon.contains和Polygon.within之间有什么区别?

Python Polygon.contains和Polygon.within之间有什么区别?,python,polygon,shapely,Python,Polygon,Shapely,文档字符串显示: Polygon.contains如果几何体包含另一个,则返回True,否则返回False Polygon.within如果几何体在另一个几何体中,则返回True,否则返回False 它们有何不同?它们是反向关系:A包含B,而B在A中 >>> A.contains(B) True >>> B.within(A) True +----------------------------------+ |

文档字符串显示:

Polygon.contains
如果几何体包含另一个,则返回True,否则返回False

Polygon.within
如果几何体在另一个几何体中,则返回True,否则返回False


它们有何不同?

它们是反向关系:
A
包含
B
,而
B
A

   >>> A.contains(B)
   True
   >>> B.within(A)
   True

   +----------------------------------+
   |                                  |
   |         +----------+             |
   |         |          |             |
   |         |          |             |
   |         |          |             |
   |         |          |             |
   |         |          |             |
   |         |    B     |             |
   |         |          |             |
   |         +----------+             |
   |                                  |
   |                                  |
   |   A                              |
   |                                  |
   +----------------------------------+

如果A与B重叠会发生什么?为什么有两个功能?一个还不够吗?我想两个都不是真的,因为两个形状都不完全在另一个之内。如果你的意思是A和B本质上是同一个形状,那么两者都是假的。从(emphasis mine)的手册中可以看出:“如果对象的内部包含另一个对象的边界和内部,并且它们的边界完全不接触,则返回True。”一个就足够了——您可以将(self,obj)中的
定义为简单的
返回对象包含(self)
--但根据上下文,使用其中一种可能更具可读性。
poly=Polygon(((0,0)、(0,2)、(2,2)、(2,0))
po=Point((1,1))
print poly.contains(po)
True
print poly.in(po)
false此处有所不同。下面的答案是:,还请记住,根据您当前正在执行的操作,有时从一个或另一个几何体进行检查更方便。e、 如果你用a,那么你会叫1,而如果你用b,那么你会叫逆。