2017-04-07 20 views
0

我正在使用geodjango創建應用程序。
我有一個模型,如下所示:如何在geodjango中獲取重疊對象?

class WorldBorder(models.Model): 
    name = models.CharField(max_length=50) 
    mpoly = models.MultiPolygonField() 

可以有2個或多個對象,在我的數據庫重疊邊界。

如何確定某些對象是否有重疊的邊框?
如何獲得具有重疊邊框的對象的查詢集?

感謝

回答

2

你有2個選擇,這取決於你想要達到什麼目的:


選項1:可以使用 __overlaps查找:

an_mpoly = WorldBorder.objects.get(name='a_name').mpoly 
overlapping_mpolys = WorldBorder.objects.filter(mpoly__overlaps=an_mpoly) 

使用示例

現在overlapping_mpolys是一個查詢集,包含每個WorldBorder對象的mpolyname='a_name'WorldBorder對象的mpoly重疊。


選項2: 如果需要一個 object to object重疊檢查,可以利用 GEOS API overlaps方法:

mpoly_1 = WorldBorder.objects.get(name='name_1').mpoly 
mpoly_2 = WorldBorder.objects.get(name='name_2').mpoly 

if mpoly_1.overlaps(mpoly_2): 
    print("{} and {} are overlapping".format(mpoly_1, mpoly_2)) 

使用示例