PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como posso consultar todos os meus dados a uma distância de 5 metros?


Em geral, a melhor função PostGIS para tal consulta é ST_DWithin() :

por exemplo. todos os clientes que moram a menos de 1.000 metros da loja nº 1:
SELECT customers.* 
FROM customers, shops
WHERE ST_DWithin(customers.the_geog, shops.the_geog, 1000)
  AND shop.id = 1

ST_DWithin usará o índice espacial que você deveria ter criado e, portanto, supera ST_Distance.

No Django parece haver um filtro correspondente chamado dwithin :

D(m=5) retorna um objeto de distância de 5 metros de comprimento

geom é a geometria a partir da qual você deseja calcular distâncias para objetos de CEP

dwithin() é a função usada

poly é o atributo de geometria de objetos Zipcode
z = Zipcode(code=77096, poly='POLYGON(( 10 10, 10 20, 20 20, 20 15, 10 10))')