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 № 1Penso 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.