sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo puedo consultar todos mis datos a una distancia de 5 metros?

En general, la mejor función de PostGIS para dicha consulta es ST_DWithin() :

p.ej. todos los clientes que viven dentro de los 1000 metros de la tienda #1:

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

ST_DWithin utilizará el índice espacial que debería haber creado y, por lo tanto, superar a ST_Distance.

En Django parece haber un filtro correspondiente llamado ddentro :

D(m=5) devuelve un objeto de distancia de 5 metros de longitud

geom es la geometría a partir de la cual desea calcular las distancias a los objetos Zipcode

dwithin() es la función utilizada

poly es el atributo geométrico de los objetos Zipcode

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