2010-02-01 24 views
7

Enlem ve boylam hakkında bir soru ... Muhtemelen aptalca bir şey.En yakın enlem ve boylam noktalarını bul

Ben enlem ve çeşitli locations.And için boylamları bir dizi var, ben de olduğum yerin enlem ve boylamı var.

Şimdi, benim konumlardan en yakın yerleri bulmak zorunda sahip olduğum enlem ve boylam kümeleri. Bunu hesaplamak için özel bir yol var mı yoksa sadece çıkarma mı ve farkı mı kontrol ediyorsun?

Bu konuda biraz ışık tutabilir misiniz?

sayesinde J

+1

SO'yu bir araya getirmek isteyebilir - bunun için birçok mevcut cevap var. Örneğin. http://stackoverflow.com/questions/27928 ve http://stackoverflow.com/questions/23569/calculating-distance-between-2-cities ve – Rosstified

cevap

8

Bu noktalar nasıl yerleştirildiğine bağlı.

Örneğin - noktaların çoğu bir park yerinde ise, Euclidean Distance iyi çalışmalıdır.

Diğer durumlarda - Geodesic Distance hesaplanması gerekir. Bu link, daha fazla bilgi için size yardımcı olmalıdır.

Ondalık biçiminden Derece-Dakika-Saniye biçimine ve tam tersi için conversion.

şerefe

+0

Merhaba Andriyev, Bilgi için teşekkürler. Enlem ve boylamlarımın tümü "13.048869" şeklindedir. Onları "53 09 02N" formatına dönüştürebilmemin bir yolu var mı? Üzgünüm, bu çok aptalca bir yol. Teşekkürler, J – Abhishek

+0

@jadaaih - Lat'iniz uzun, ondalık biçimindedir. Yanıtı, aradığınız dönüşümle ilgili olan bir bağlantıyla güncelledik. – Arnkrishn

+0

Teşekkürler bir demet kardeşim! – Abhishek

4

Bu SQL kullanabilirsiniz. o zaman, DB girişlerinizden en yakın Lat, Lng'yi seçecektir.

ID, enlem, LNG, ((ACOS (SIN (your_lat * PI()/180) * sin (lat * PI()/180 ) + COS (your_lat * PI()/180) * COS (lat * PI()/180) * COS ((your_long - LNG) * PI()/180)) * 180/PI()) * 60 * 1,1515) distance OLARAK your_table_name DAN distance < HAVING =' 10' distance ASC LIMIT TARAFINDAN SİPARİŞ bu yardımcı olacaktır 0,10

Umut.

+0

içinde uygulamanız gerekir. – goto

+0

Birim mildir. Uzaklığı kilometreye çıkarmak için, "[...] 60 * 1.1515 [...]" terimini 1.609344 (km'de 1 mil olan) ile çarpmanız gerekir: "[...] 60 * 1.1515 * 1.609344 [...] ". – user1337

İlgili konular