PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Saya ingin menampilkan dalam file postgis yang kurang dari 10.000 meter dan jarak yang dihitung

Cara termudah dan tercepat untuk melakukannya adalah dengan menyimpan koordinat sebagai geometry atau geography alih-alih pasangan koordinat yang terpisah:

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

Setelah itu, buat indeks inti di atas kolom baru ini:

CREATE INDEX idx_data_point ON data USING gist (geog) ;

Gunakan ST_DWithin untuk menanyakan jarak, sebagai ST_DistanceSphere atau ST_Distance akan tidak gunakan indeks spasial!

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); 
  • Catatan:true dalam fungsi ST_DWithin dan ST_Distance berarti use_spheroid=true , yang merupakan default untuk geography parameter.

Demo:db<>fiddle

Lihat juga:Mendapatkan semua Bangunan dalam jangkauan 5 mil dari koordinat yang ditentukan




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara memeriksa apakah ada baris dalam prosedur tersimpan PostgreSQL?

  2. Cara mendapatkan nilai rata-rata untuk interval waktu di Postgres

  3. Opsi Failover Cluster Basis Data Lengkap Multi-Cloud untuk PostgreSQL

  4. Berapa banyak catatan yang dapat saya simpan dalam 5 MB PostgreSQL di Heroku?

  5. Kendala unik Postgres tidak menegakkan keunikan