ST_ DistanceSphere - Amazon Redshift

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 dataDOUBLE 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 PRECISIONdalam 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