文檔字符串說:Python,Shapely:Polygon.contains和Polygon.within有什麼區別?
Polygon.contains
返回true如果幾何包含其他,否則返回False
Polygon.within
返回true幾何中的其他,否則返回False
他們如何不同?
文檔字符串說:Python,Shapely:Polygon.contains和Polygon.within有什麼區別?
Polygon.contains
返回true如果幾何包含其他,否則返回False
Polygon.within
返回true幾何中的其他,否則返回False
他們如何不同?
它們是相反的關係:A
包含B
和B
在A
內。
>>> A.contains(B)
True
>>> B.within(A)
True
+----------------------------------+
| |
| +----------+ |
| | | |
| | | |
| | | |
| | | |
| | | |
| | B | |
| | | |
| +----------+ |
| |
| |
| A |
| |
+----------------------------------+
如果A重疊B會發生什麼? 爲什麼有兩個功能?是不是一個足夠? – Sounak
我認爲這兩者都不是真的,因爲這兩個形狀都不在其他範圍內。如果你的意思是A和B本質上是相同的形狀,那麼兩者都是錯誤的。從['contains'](http://toblerity.org/shapely/manual.html#object.contains)(重點是mine)手冊:「如果對象的內部包含另一個對象的邊界和內部,則返回True, *「他們的界限根本不觸及*」 – chepner
一個就足夠了 - 你可以簡單地定義'within(self,obj)'return obj.contains(self)' - 但它可能更易於使用一個或另一個,取決於上下文。 – chepner
除了下面的答案,還要記住,根據您目前正在做的事情,從一個或另一個幾何體進行檢查有時會更方便。例如如果和a一起工作,那麼你會打電話給一個,而如果你和b一起工作,那麼你會稱之爲反過來。 – shongololo