2017-04-07 6 views
0

나는 geodjango을 사용하여 앱을 만들고 있습니다. 내 데이터베이스에 테두리를 겹치는 2 개 이상의 객체가있을 수 있습니다geodjango에서 겹치는 오브젝트를 얻는 방법은 무엇입니까?

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

:
나는 모델과 같이 있습니다.

일부 개체의 테두리가 겹치는 지 어떻게 확인할 수 있습니까?
테두리가 겹치는 개체의 쿼리 세트를 얻으려면 어떻게해야합니까?

감사

답변

2

당신이 무엇을 달성하고자하는 당신은에 따라이 옵션을 사용할 수 있습니다 :


옵션 1 :

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

예 : 당신은 __overlaps 조회를 사용할 수 있습니다

이제 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)) 

사용의