تو سایت اصلی دنبال یک فرمول میگشتم که بشه با اون فرمول ، فاصله دو نقطه جغرافیایی را محاسبه کنم.
این کد خوبه تو سایت اصلی دیدم ولی وقتی موقعیت رو عوض میکنی بازم همون موقعیت قبلی رو نشون میده انگار فیکس کرده......
Sub distance(lat1 As Double, lon1 As Double, lat2 As Double, lon2 As Double) As Double
Dim dist As Double
Dim theta As Double
theta = lon1 - lon2
dist = Sin(deg2rad(lat1)) * Sin(deg2rad(lat2)) + Cos(deg2rad(lat1)) * Cos(deg2rad(lat2)) * Cos(deg2rad(theta))
dist = ACos(dist)
dist = rad2deg(dist)
dist = dist * 1000
Return dist * 60 * 1.1515
End Sub
Sub deg2rad(Deg As Double) As Double
Dim pi As Double= 3.14159265358979
Return Deg * pi / 180
End Sub
Sub rad2deg(Rad As Double) As Double
Dim pi As Double= 3.14159265358979
Return Rad * 180 / pi
End Sub
یک فرمول هست که این رو هم تست کردم عالیه
عیبش اینه که بار اول یک موقعیت بهش میدی جواب میده بعد عوض میکنی موقعیت رو بازم همون جواب اولی رو بهت میده
میشه راهنمایی کنید....
این هم فرمول دومی
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) )
d = R * c (where R is the radius of the Earth)
'شعاع زمین
' Radius As Int = 6372.795477598
' Radius As Int = 6371
اگر هستند کسی که کتابخانه براش بسازه یا فرمی بسازه که بعد از اولین محاسبه فیکس نکنه عالیه میشه.
سوال
mobah 132
عرض ادب واحترام
تو سایت اصلی دنبال یک فرمول میگشتم که بشه با اون فرمول ، فاصله دو نقطه جغرافیایی را محاسبه کنم.
این کد خوبه تو سایت اصلی دیدم ولی وقتی موقعیت رو عوض میکنی بازم همون موقعیت قبلی رو نشون میده انگار فیکس کرده......
Sub distance(lat1 As Double, lon1 As Double, lat2 As Double, lon2 As Double) As Double Dim dist As Double Dim theta As Double theta = lon1 - lon2 dist = Sin(deg2rad(lat1)) * Sin(deg2rad(lat2)) + Cos(deg2rad(lat1)) * Cos(deg2rad(lat2)) * Cos(deg2rad(theta)) dist = ACos(dist) dist = rad2deg(dist) dist = dist * 1000 Return dist * 60 * 1.1515 End Sub Sub deg2rad(Deg As Double) As Double Dim pi As Double= 3.14159265358979 Return Deg * pi / 180 End Sub Sub rad2deg(Rad As Double) As Double Dim pi As Double= 3.14159265358979 Return Rad * 180 / pi End Sub
یک فرمول هست که این رو هم تست کردم عالیه
عیبش اینه که بار اول یک موقعیت بهش میدی جواب میده بعد عوض میکنی موقعیت رو بازم همون جواب اولی رو بهت میده
میشه راهنمایی کنید....
این هم فرمول دومی
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) ) d = R * c (where R is the radius of the Earth) 'شعاع زمین ' Radius As Int = 6372.795477598 ' Radius As Int = 6371
اگر هستند کسی که کتابخانه براش بسازه یا فرمی بسازه که بعد از اولین محاسبه فیکس نکنه عالیه میشه.
لینک ارسال
به اشتراک گذاری در سایت های دیگر
5 پاسخ به این سوال تاکنون داده شده است
ارسالهای توصیه شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.