PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment interroger toutes mes données dans un rayon de 5 mètres ?

En général, la meilleure fonction PostGIS pour une telle requête est ST_DWithin() :

par exemple. tous les clients qui habitent à moins de 1000 mètres du magasin n°1 :

SELECT customers.* 
FROM customers, shops
WHERE ST_DWithin(customers.the_geog, shops.the_geog, 1000)
  AND shop.id = 1

ST_DWithin utilisera l'index spatial que vous auriez dû créer et donc surpasser ST_Distance.

Dans Django, il semble y avoir un filtre correspondant appelé dwithin :

D(m=5) renvoie un objet distance de longueur 5 mètres

geom est la géométrie à partir de laquelle vous souhaitez calculer les distances aux objets de code postal

dwithin() est la fonction utilisée

poly est l'attribut de géométrie des objets Zipcode

z = Zipcode(code=77096, poly='POLYGON(( 10 10, 10 20, 20 20, 20 15, 10 10))')