PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie kann ich alle meine Daten im Umkreis von 5 Metern abfragen?

Im Allgemeinen ist die beste PostGIS-Funktion für eine solche Abfrage ST_DWithin() :

z.B. alle Kunden, die im Umkreis von 1000 Metern um Geschäft 1 wohnen:

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

ST_DWithin verwendet den räumlichen Index die Sie erstellt haben sollten und damit ST_Distance übertreffen.

In Django scheint es einen entsprechenden Filter namens dwithin :

D(m=5) gibt ein Entfernungsobjekt der Länge 5 Meter

zurück

geom ist die Geometrie, aus der Sie Entfernungen zu Zipcode-Objekten berechnen möchten

dwithin() ist die verwendete Funktion

poly ist das Geometrieattribut von Zipcode-Objekten

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