İki nokta arası mesafe hesaplama Hk.

Katılım
18 Ekim 2012
Mesajlar
126
Excel Vers. ve Dili
2016 türkçe
Altın Üyelik Bitiş Tarihi
17/03/2022
Merhaba Arkadaşlar,

İki coğrafi koordinat arası mesafe hesaplamak istiyorum bunu excelde nasıl yapabilirim bilgisi olan varsa yardımcı olabilir mi ?

Örnek Noktalar aşağıdadır.

Enlem1 = 35.87484
Boylam1= 30.65466

Enlem2 = 36.86142
Boylam2 = 31.06941
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Forumda arama motorunu kullanın, örnekler var.

.
 
Katılım
18 Ekim 2012
Mesajlar
126
Excel Vers. ve Dili
2016 türkçe
Altın Üyelik Bitiş Tarihi
17/03/2022
Mesafe Hesaplamada doğru bir yöntem midir ? Matematik bilgim çok iyi olmadı için sorma gereksinimi duyuyorum.

=(ACOS(COS(RADYAN(90-M2))*COS(RADYAN(90-M3))+SİN(RADYAN(90-M2))*SİN(RADYAN(90-M3))*COS(RADYAN(N2-N3)))*6371)*1000
 

Murat OSMA

Altın Üye
Altın Üye
Katılım
23 Mayıs 2011
Mesajlar
5,508
Excel Vers. ve Dili
Microsoft 365 TR-EN
Altın Üyelik Bitiş Tarihi
31-12-2028
Sondaki *1000 fazla gibi..
 

Murat OSMA

Altın Üye
Altın Üye
Katılım
23 Mayıs 2011
Mesajlar
5,508
Excel Vers. ve Dili
Microsoft 365 TR-EN
Altın Üyelik Bitiş Tarihi
31-12-2028
Onun durumu metreye çevirdiğini düşünerek 1000 ile çarptım.
Bu KTF ile alternatif bir çözüm daha sunmuş olalım.

PHP:
Public Function Mesafe(ByVal lat1 As Double, ByVal lon1 As Double, ByVal lat2 As Double, ByVal lon2 As Double, ByVal birim As String) As Double
    Dim fark As Double, mes As Double
    fark = lon1 - lon2
    mes = Math.Sin(radyanacevir(lat1)) * Math.Sin(radyanacevir(lat2)) + Math.Cos(radyanacevir(lat1)) * Math.Cos(radyanacevir(lat2)) * Math.Cos(radyanacevir(fark))
    mes = WorksheetFunction.Acos(mes)
    mes = dereceyecevir(mes)
    mes = mes * 60 * 1.1515
    If birim = "Km" Then
        mes = mes * 1.609344
    ElseIf birim = "Mil" Then
        mes = mes * 0.8684
    End If
    Mesafe = mes
End Function
 
Function radyanacevir(ByVal deg As Double) As Double
    radyanacevir = (deg * WorksheetFunction.Pi / 180#)
End Function
 
Function dereceyecevir(ByVal rad As Double) As Double
    dereceyecevir = rad / WorksheetFunction.Pi * 180#
End Function
Fonksiyonun Kullanımı
=Mesafe(M2;N2;M3;N3;M5)

Örnek dosyayı da ekliyorum. (y)
 

Ekli dosyalar

Katılım
18 Ekim 2012
Mesajlar
126
Excel Vers. ve Dili
2016 türkçe
Altın Üyelik Bitiş Tarihi
17/03/2022
Hepinizin Çalışmaları ayrı ayrı çok güzel ama benim satır içinde çözmem gerekiyor.
Aylık periyotta 100 kişinin 1000.000 coğrafi koordinat datası içinde kaç metre yol yürüdüğünü çıkarmaya çalışıyorum.
 
Katılım
18 Ekim 2012
Mesajlar
126
Excel Vers. ve Dili
2016 türkçe
Altın Üyelik Bitiş Tarihi
17/03/2022
=EĞER((ACOS(COS(RADYAN(90-M287))*COS(RADYAN(90-M288))+SİN(RADYAN(90-M287))*SİN(RADYAN(90-M288))*COS(RADYAN(N287-N288)))*6371)*1000<0;0;EĞER((ACOS(COS(RADYAN(90-M287))*COS(RADYAN(90-M288))+SİN(RADYAN(90-M287))*SİN(RADYAN(90-M288))*COS(RADYAN(N287-N288)))*6371)*1000>0;(ACOS(COS(RADYAN(90-M287))*COS(RADYAN(90-M288))+SİN(RADYAN(90-M287))*SİN(RADYAN(90-M288))*COS(RADYAN(N287-N288)))*6371)*1000;0))

Bu formülün hata verme olasılığını yok sayarak bu şekilde uzattım fakat 90.000 satır içinde 1.000 e yakın hata getiriyor.
Hata verdiği satırdaki M287 M288 ve N287 N288 değerleri aşağıdadır. Aslında aynı değerler.

M287 = 36.881101
M288 = 30.652827
N287 = 36.881101
N288 =30.652827

Burada neden "#SAYI!" bunu döner yardımcı olabilir misiniz ?
 
Katılım
18 Ekim 2012
Mesajlar
126
Excel Vers. ve Dili
2016 türkçe
Altın Üyelik Bitiş Tarihi
17/03/2022
İdris Bey,

Data ekteki şekilde uzuyor gidiyor ama ekte de gördüğünüz gibi bazı satırlar hata dönüyor ama nedenini anlayamadım, Formülü değerlendirdiğimde ilk işlemde alıyor gibi görünüyor hatayı ama hata almasını gerektirecek bişi bulamıyorum. Yardımcı olursanız sevinirim.
 

Ekli dosyalar

Katılım
18 Ekim 2012
Mesajlar
126
Excel Vers. ve Dili
2016 türkçe
Altın Üyelik Bitiş Tarihi
17/03/2022
Bu KTF ile alternatif bir çözüm daha sunmuş olalım.

PHP:
Public Function Mesafe(ByVal lat1 As Double, ByVal lon1 As Double, ByVal lat2 As Double, ByVal lon2 As Double, ByVal birim As String) As Double
    Dim fark As Double, mes As Double
    fark = lon1 - lon2
    mes = Math.Sin(radyanacevir(lat1)) * Math.Sin(radyanacevir(lat2)) + Math.Cos(radyanacevir(lat1)) * Math.Cos(radyanacevir(lat2)) * Math.Cos(radyanacevir(fark))
    mes = WorksheetFunction.Acos(mes)
    mes = dereceyecevir(mes)
    mes = mes * 60 * 1.1515
    If birim = "Km" Then
        mes = mes * 1.609344
    ElseIf birim = "Mil" Then
        mes = mes * 0.8684
    End If
    Mesafe = mes
End Function

Function radyanacevir(ByVal deg As Double) As Double
    radyanacevir = (deg * WorksheetFunction.Pi / 180#)
End Function

Function dereceyecevir(ByVal rad As Double) As Double
    dereceyecevir = rad / WorksheetFunction.Pi * 180#
End Function
Fonksiyonun Kullanımı
=Mesafe(M2;N2;M3;N3;M5)

Örnek dosyayı da ekliyorum. (y)
Murat bey zahmet etmişsiniz teşekkür ederim fakat data tek satırlık değil 1milyon civarı data dan kişinin yürüdüğü yolu çıkarmaya çalışıyorum .
Şöyle ki bir kargo şirketi düşünün 100 personel ile 1 ayda 1 milyon farklı noktaya yürüyerek ürün bırakıyor her ürün bıraktığı adresin işlem zamanı ve koordinatları var elimde amacım ne kadar sürede ne kadar yol yürüdüğünü çıkarmak.

Aslında bu formülde kuş bakışı hesap yaptığı için tam istediğimi vermiyor fakat 3 aşağı 5 yukarı bir şeyler verecektir diye düşünüyorum.
:( datanın bir kısmını bir üstteki yoruma ekledim.
 

Murat OSMA

Altın Üye
Altın Üye
Katılım
23 Mayıs 2011
Mesajlar
5,508
Excel Vers. ve Dili
Microsoft 365 TR-EN
Altın Üyelik Bitiş Tarihi
31-12-2028
KTF'de sizin yazdığını formülle ayın şekilde çalışır, sizin formülü kullanabiliyorsanız KTF'yi de kullanabilirsiniz.
Nasıl ki formülü aşağıya doğru çekiyorsunuz, aynı şekilde bunu da çekebilirsiniz.
KTF = Kullanıcı Tanımlı Fonksiyon'dur. İsterseniz KTF ile ilgili burada detaylı bilgiye ulaşabilirsiniz.

İyi geceler. (y)
 
Katılım
18 Ekim 2012
Mesajlar
126
Excel Vers. ve Dili
2016 türkçe
Altın Üyelik Bitiş Tarihi
17/03/2022
Murat Bey,

Makrolar bilgi güvenli açısından sistem yöneticileri tarafından engelli bilgisayarlarımızda bu nedenle formülle çözmem gerekiyor.
12. cevapta bulunan ekte formülün vermiş olduğu hatayı çözebilirsem sorunum çözülmüş olacak anlamsız bir şekilde hata dönüyor bazı satırlarda.
 
Üst