/ / GEODjango: wybierz wszystkie obiekty, które są zawarte w żądaniu POST o podanym wielokącie - django, geodjango, point-in-polygon

GEODjango: wybierz wszystkie obiekty, które znajdują się w zapytaniu POST podanym jako wielokąt - django, geodjango, punkt-w-wielokącie

moja prośba ma współrzędne, które tworzą wielokąt.

plist = []
...
plist.append(fromstr("POINT(%s)" %(value)))
...
p = Polygon(plist)

używając GeoDjango Chciałbym zaznaczyć wszystkie obiekty (places.objects.all()) z tabeli zawartej w wielokącie.

przeglądając dokumentację, znajduję sposoby na sprawdzenie, czy pojedynczy punkt przecina się lub jest zawarty w wielokącie (p.mpoly.contains(pnt)), ale nie coś, co działa na zbiorze punktów

czy istnieje sposób, aby to osiągnąć, czy powinienem do tego użyć procedury sklepu?

Odpowiedzi:

2 dla odpowiedzi № 1

Myślę, że GeoQuerySet w ciągu filtr jest tym, czego szukasz:

places.objects.filter(geom__within=p)

Przy założeniu, że geom jest twoją kolumną geometrii.

Ewentualnie możesz użyć zawarte ale uwzględnia to tylko obwiednię wielokąta, która może być dla Ciebie wystarczająca w zależności od przypadku użycia.