Rumah > pangkalan data > tutorial mysql > Bagaimana Mencari Bangunan Dalam Jejari 5 Batu Menggunakan Koordinat?

Bagaimana Mencari Bangunan Dalam Jejari 5 Batu Menggunakan Koordinat?

DDD
Lepaskan: 2025-01-09 11:37:43
asal
802 orang telah melayarinya

How to Find Buildings Within a 5-Mile Radius Using Coordinates?

Mencari Bangunan Dalam Jejari 5 Batu melalui Koordinat

Panduan ini memperincikan cara mendapatkan semula semua bangunan dengan cekap dalam radius 5 batu dari koordinat yang diberikan.

Langkah 1: Optimumkan Storan Data

Simpan data lokasi bangunan menggunakan jenis data geometri atau geografi. Ini meningkatkan prestasi pertanyaan spatial dengan ketara dan menghalang isu penukaran jenis data.

Langkah 2: Gunakan ST_DWithin atau ST_Distance

Dua fungsi memudahkan pengiraan jarak:

  1. ST_DWithin: Fungsi ini dengan cekap menentukan sama ada geometri jatuh dalam jarak yang ditentukan. Untuk mencari bangunan dalam jarak 5 batu dari (-4.6314, 54.0887):

    SELECT name, longitude, latitude
    FROM building
    WHERE ST_DWithin('POINT(-4.6314 54.0887)'::geography, ST_MakePoint(longitude, latitude), 8046.72);
    -- 8046.72 meters = 5 miles
    Salin selepas log masuk
  2. ST_Distance: Fungsi ini mengira jarak dalam meter. Tukar meter kepada batu menggunakan: distance * 0.000621371. Untuk bangunan dalam jarak 5 batu dari (-4.6314, 54.0887):

    SELECT name, longitude, latitude,
    ST_Distance('POINT(-4.6314 54.0887)'::geography, ST_MakePoint(longitude, latitude)) * 0.000621371 AS distance_miles
    FROM building
    WHERE distance_miles <= 5;
    Salin selepas log masuk

Langkah 3: Pertimbangan Utama

  • Kekalkan susunan yang betul dalam ST_MakePoint: longitud, latitud.
  • ST_Pengiraan jarak memintas indeks spatial. Gunakannya dalam klausa SELECT untuk mengelakkan kesesakan prestasi.
  • Amazon Athena menggunakan darjah untuk pengiraan jarak dalam ST_Distance.

Atas ialah kandungan terperinci Bagaimana Mencari Bangunan Dalam Jejari 5 Batu Menggunakan Koordinat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan