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.
Python formülünü paylaşır mısınız?
(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()
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
Maalesef başarılı olamıyorum.
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.