Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
ST_ DistanceSphere
ST_ DistanceSphere mengembalikan jarak antara dua geometri titik yang terletak pada bola.
Sintaks
ST_DistanceSphere(geom1, geom2)
ST_DistanceSphere(geom1, geom2, radius)
Argumen
- geom1
-
Nilai titik dalam derajat tipe data yang
GEOMETRY
terletak di bola. Koordinat pertama dari titik tersebut adalah nilai bujur. Koordinat kedua dari titik tersebut adalah nilai lintang. Untuk geometri 3DZ, 3DM, atau 4D, hanya dua koordinat pertama yang digunakan. - geom2
-
Nilai titik dalam derajat tipe data yang
GEOMETRY
terletak di bola. Koordinat pertama dari titik tersebut adalah nilai bujur. Koordinat kedua dari titik tersebut adalah nilai lintang. Untuk geometri 3DZ, 3DM, atau 4D, hanya dua koordinat pertama yang digunakan. - jari-jari
-
Radius bola tipe data
DOUBLE PRECISION
. Jika tidak ada radius yang disediakan, bola default ke Bumi dan jari-jarinya dihitung dari representasi Sistem Geodetik Dunia (WGS) 84 dari ellipsoid.
Jenis pengembalian
DOUBLE PRECISION
dalam satuan yang sama dengan radius. Jika tidak ada radius yang disediakan, jaraknya dalam meter.
Jika geom1 atau geom2 adalah nol atau kosong, maka null dikembalikan.
Jika tidak ada radius yang disediakan, maka hasilnya adalah dalam meter di sepanjang permukaan bumi.
Jika radius adalah angka negatif, maka kesalahan dikembalikan.
Jika geom1 dan geom2 tidak memiliki nilai yang sama untuk pengidentifikasi sistem referensi spasial (SRID), maka kesalahan dikembalikan.
Jika geom1 atau geom2 bukan titik, maka kesalahan dikembalikan.
Contoh
Contoh SQL berikut menghitung jarak dalam kilometer antara dua titik di Bumi.
SELECT ROUND(ST_DistanceSphere(ST_Point(-122, 47), ST_Point(-122.1, 47.1))/ 1000, 0);
round
-----------
13
Contoh SQL berikut menghitung jarak dalam kilometer antara tiga lokasi bandara di Jerman: Berlin Tegel (TXL), Munich International (MUC), dan Frankfurt International (FRA).
WITH airports_raw(code,lon,lat) AS ( (SELECT 'MUC', 11.786111, 48.353889) UNION (SELECT 'FRA', 8.570556, 50.033333) UNION (SELECT 'TXL', 13.287778, 52.559722)), airports1(code,location) AS (SELECT code, ST_Point(lon, lat) FROM airports_raw), airports2(code,location) AS (SELECT * from airports1) SELECT (airports1.code || ' <-> ' || airports2.code) AS airports, round(ST_DistanceSphere(airports1.location, airports2.location) / 1000, 0) AS distance_in_km FROM airports1, airports2 WHERE airports1.code < airports2.code ORDER BY 1;
airports | distance_in_km
-------------+----------------
FRA <-> MUC | 299
FRA <-> TXL | 432
MUC <-> TXL | 480