sql >> Database teknologi >  >> RDS >> PostgreSQL

Jeg ønsker at vise i postgis filer, der er mindre end 10.000 meter og deres beregnede afstand

Den nemmeste og hurtigste måde at gøre det på ville være at gemme koordinaterne som geometry eller geography i stedet for adskilte koordinatpar:

ALTER TABLE data ADD COLUMN geog geography (point,4326);
UPDATE data SET geog = ST_MakePoint(lon,lat);

Derefter skal du oprette et hovedindeks over denne nye kolonne:

CREATE INDEX idx_data_point ON data USING gist (geog) ;

Brug ST_DWithin til forespørgsel om afstande, som ST_DistanceSphere eller ST_Distance vil ikke brug det rumlige indeks!

SELECT ST_Distance(geog,ST_MakePoint(49.9 ,6.7)::geography,true)
FROM data
WHERE ST_DWithin(geog,ST_MakePoint(49.9,6.7),10000,true); 
  • Bemærk:den true i funktionerne ST_DWithin og ST_Distance betyder use_spheroid=true , som er standard for geography parametre.

Demo:db<>fiddle

Se også:Få alle bygninger inden for en rækkevidde af 5 miles fra angivne koordinater




  1. Procedure for at downloade en fil fra en given url i Oracle 11g og gemme den i kolonnen blobtype

  2. Postgres:VÆLG kolonnenavn baseret på boolsk værdi

  3. dbsaint - Hent formular EXCEL

  4. Sådan bestiller du efter månedsnavn i SQLite