/ / GEODjango: seleziona tutti gli oggetti contenuti in una richiesta POST dati poligono - django, geodjango, point-in-poligono

GEODjango: seleziona tutti gli oggetti contenuti in una richiesta POST dati poligono - django, geodjango, point-in-poligono

la mia richiesta ha coordinate che formano un poligono.

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

usando GeoDjango mi piacerebbe selezionare tutti gli oggetti (places.objects.all()) da una tabella che sono contenuti nel poligono.

andando oltre la documentazione, sto trovando dei modi per verificare se un singolo punto si interseca o è contenuto nel poligono (p.mpoly.contains(pnt)) ma non qualcosa che funziona su una collezione di punti

c'è un modo per ottenerlo o dovrei usare la procedura di archiviazione per questo?

risposte:

2 per risposta № 1

Penso che GeoQuerySet entro filtro è ciò che stai cercando:

places.objects.filter(geom__within=p)

Supponendo che geom è la tua colonna geometrica.

In alternativa, puoi usare contenuta ma questo considera solo il riquadro di selezione del poligono, che può essere sufficiente per te in base al tuo caso d'uso.