멀티 폴리곤 필드 preferences.locations
과 포인트 필드 rental.location
이 있습니다. 대여 위치가 preferences.locations
에 포함되어 있는지 확인하기 위해 쿼리 할 때 rental.location
이 preferences.locations
MultiPolygon의 첫 번째 다각형에 포함되어있는 경우에만 쿼리가 성공합니다. 이러한 형상으로, 예를 들어다중 다각형에 GeoDjango의 포인트가 포함되어 있는지 확인하십시오.
:
point1 = (81.20141954209073, -129.891357421875)
point2 = (40.70875101828792, -73.93179774284363)
preferences.locations = MultiPolygon(
Polygon(((81.14748070499664, -163.289794921875),
point1, # contains the first point
(81.14748070499664, -163.289794921875),
(81.14748070499664, -163.289794921875),)),
Polygon(((40.70718949655447, -73.98123621940613),
point2, # contains the second point
(40.683762276904055, -73.99702906608582),
(40.70718949655447, -73.98123621940613),)),
)
rental1.location = Point(*point1)
rental2.location = Point(*point2)
모두 렌털이 반환되어야하는 동안 preferences.locations
의해 렌털의 위치를 포함하는 확인 쿼리 만 제 대여 반환된다. 나는 성공적으로 대여의 위치가 preferences.locations
(그들이에 포함하고 다각형에 상관없이)에 포함되는 확인할 수 있습니다 방법
>>> Rental.objects.filter(location__contained=preferences.locations)
[<Rental: Rental object>] # rental1
.
고맙습니다! 구별에 혼란 스럽습니다. 왜 포인트가 포함되어 있지 않고 교차합니까? – mccc
자세한 내용은이 답변을 확인하십시오. http://gis.stackexchange.com/a/108536 – yndolok