Skip to main content

AccessTr.neT


Koordinatlarla_mesafe_hesabi

Koordinatlarla_mesafe_hesabi

Çözüldü #1
Merhabalar,
Ekteki örnek dosyada form açılınca Haversine Formülüne göre her bir satırda verilen enlem-boylam bilgilerinin aşağıdaki referans enlem-boylama göre mesafesini hesaplamak istiyorum.

Referans Enlem:38.418847
Referans Boylam: 27.125511

Haversine Formülünü Python'dan biliyorum ancak Access'te kodlama içinde kullanamadım.
.zip Koordinatlar.zip (Dosya Boyutu: 51,5 KB | İndirme Sayısı: 4)
Cevapla
#2
Python formülünü paylaşır mısınız?
Cevapla
#3
(24/08/2023, 23:00)berduş yazdı: Python formülünü paylaşır mısınız?

Kod:
from tkinter import *
from math import sin, cos, sqrt, atan2, radians

# Mesafe hesaplaması için fonksiyon
def calculate_distance():
    # Enlem ve boylam değerlerini al
    lat1 = float(entry1.get())
    lon1 = float(entry2.get())

    # İkinci enlem ve boylam değerlerini sabit olarak belirt
    lat2 = Referans Enlem Değeri buraya girilecek
    lon2 = Referans boylam değeri buraya girilecek

    # Radyan cinsinden dönüşüm yap
    lat1 = radians(lat1)
    lon1 = radians(lon1)
    lat2 = radians(lat2)
    lon2 = radians(lon2)

    # Dünya yarıçapı (km)
    R = 6371.0

    # Haversine formülüne göre mesafeyi hesapla
    dlon = lon2 - lon1
    dlat = lat2 - lat1
    a = sin(dlat / 2)**2 + cos(lat1) * cos(lat2) * sin(dlon / 2)**2
    c = 2 * atan2(sqrt(a), sqrt(1 - a))
    distance = R * c

    # Mesafeyi metin kutusuna yazdır
    result_label.config(text="Mesafe: {:.2f} km".format(distance))


# Arayüzü oluştur
window = Tk()
window.geometry("350x200")
window.title("Mesafe Hesaplama Arayüzü")

# Etiketler
label1 = Label(window, text="Enlem:")
label1.pack()

# Enlem giriş kutusu
entry1 = Entry(window)
entry1.pack()

label2 = Label(window, text="Boylam:")
label2.pack()

# Boylam giriş kutusu
entry2 = Entry(window)
entry2.pack()

# Hesapla butonu
calculate_button = Button(window, text="Hesapla", command=calculate_distance)
calculate_button.pack()

# Sonuç etiketi
result_label = Label(window, text="")
result_label.pack()

# Arayüzü başlat
window.mainloop()

Cevapla
#4
aşağıdaki fonksiyonu dener misiniz?
Rad/Derece =2*π/360
Rad=Derece*(π/180)

π/180=1/ 57.2957795130823
Function HaversineHsp(lat1 As Double, lon1 As Double, lat2 As Double, lon2 As Double) As Double
    Dim R As Double
    R = 6371 ' Dünya yarıçapı km cinsinden
   
    Dim dLat As Double, dLon As Double
    dLat = (lat2 - lat1) / 57.2957795130823
    dLon = (lon2 - lon1) / 57.2957795130823
   
    Dim a As Double, c As Double
    a = Sin(dLat / 2) ^ 2 + Cos((lat1) / 57.2957795130823) * Cos((lat2) / 57.2957795130823) * Sin(dLon / 2) ^ 2
    c = 2 * Atn(Sqr(a) / Sqr(1 - a))
   
    HaversineHsp = R * c
End Function
Cevapla
#5
Maalesef başarılı olamıyorum.
Cevapla
#6
tam olarak başarılı olamadığınız ne?
sonuçları kontrol ettiniz mi, fonksiyon düzgün çalışıyor mu?
şimdilik asıl önemli olan bu, eğer fonksiyon doğru çalışıyorsa gerisi bir şekilde hallolur.
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task