BigQuery'de HAVERSINE() yöntemini almanın bir yolunu arıyorum. Örneğin, en yakın hava istasyonlarını keyfi bir noktaya nasıl getirilir?HAVERSINE mesafe
cevap
Eğer mantığını için bir SQL fonksiyonu tanımlayabilir standard SQL kullanılması. Örneğin,
#standardSQL
CREATE TEMP FUNCTION RADIANS(x FLOAT64) AS (
ACOS(-1) * x/180
);
CREATE TEMP FUNCTION RADIANS_TO_KM(x FLOAT64) AS (
111.045 * 180 * x/ACOS(-1)
);
CREATE TEMP FUNCTION HAVERSINE(lat1 FLOAT64, long1 FLOAT64,
lat2 FLOAT64, long2 FLOAT64) AS (
RADIANS_TO_KM(
ACOS(COS(RADIANS(lat1)) * COS(RADIANS(lat2)) *
COS(RADIANS(long1) - RADIANS(long2)) +
SIN(RADIANS(lat1)) * SIN(RADIANS(lat2))))
);
SELECT
lat,
lon,
name,
HAVERSINE(40.73943, -73.99585, lat, lon) AS distance_in_km
FROM `bigquery-public-data.noaa_gsod.stations`
WHERE lat IS NOT NULL AND lon IS NOT NULL
ORDER BY distance_in_km
LIMIT 4;
Eski SQL çözeltisi (standart beklemede):
SELECT lat, lon, name,
(111.045 * DEGREES(ACOS(COS(RADIANS(40.73943)) * COS(RADIANS(lat)) * COS(RADIANS(-73.99585) - RADIANS(lon)) + SIN(RADIANS(40.73943)) * SIN(RADIANS(lat))))) AS distance
FROM [bigquery-public-data:noaa_gsod.stations]
HAVING distance>0
ORDER BY distance
LIMIT 4
(
http://www.plumislandmedia.net/mysql/haversine-mysql-nearest-loc/ göre)
standart SQL ile oldukça sorgunun vücuda doğrudan koymak zorunda daha SQL UDF mantığı koyabilirsiniz. –
Biliyorum! Ben hızlı bir deneme yaptım, ama sonra DEGREES() ve RADIANS() eksik. PI() eksikliği dahil olmak üzere eşdeğer dönüşümleri anlayana kadar sorgulamayı beklemede bıraktım. Ama geri döneceğim :) –
Bu arada - bu mesafe km olarak verilecek –
- 1. vektörlenmiş Haversine formül
- 2. mesafe
- 3. mesafe?
- 4. MySQL için Haversine formülü tersine mi?
- 5. 2 postcodes arasındaki mesafe
- 6. tarihinde Fit API Mesafe -
- 7. Adresler arasındaki mesafe
- 8. SWIFT Realm.io filtreye mesafe
- 9. hakkında Mesafe API
- 10. Java'da mesafe formülünü kullanma
- 11. mesafe matris içinde
- 12. Sözdizimsel benzerlik/mesafe nltk
- 13. Liste Görünümündeki öğeler arasındaki mesafe
- 14. Mesafe Matrisine Dayalı Kümeleme Metodu
- 15. STL yineleyiciler std :: mesafe() hatası
- 16. ggplot boxplots arasındaki mesafe artışı
- 17. SQL'de mesafe hesaplama nasıl geliştirilir
- 18. Posta kodu mesafe hesap makinesi
- 19. İki android telefon arasındaki mesafe
- 20. Üst janta kaydırılan mesafe algılaması
- 21. Android: liste görünümündeki pusula + mesafe
- 22. Haversine formülünün Objective-C'de uygulanması ve SQLite'den çağrılması mümkün müdür?
- 23. SQL Server 2008 R2 Coğrafya Mesafe?
- 24. MySQL dökümünde ne kadar mesafe var?
- 25. 2B imzalı bir mesafe alanı hesaplanıyor
- 26. RabbitMQ coğrafi mesafe boyunca gecikme sorunları
- 27. Bir menüdeki elemanlar arasındaki eşdeğer mesafe css
- 28. Geofire sonuçları sipariş etme Uzaklık Mesafe
- 29. Tek bir kamera kullanarak mesafe hesaplanıyor
- 30. Mongodb'daki LineString'e yakın noktalara yakınlık getirin Mesafe
ref için: https://twitter.com/joaocorreia/status/827638555035840512 –