โปรแกรมฟอร์แทรนการคำนวนระยะทางระหว่างพิกัดจุดภูมิศาสตร์สองจุด
2014.07.31
พอดีมีจุดพิกัดสองจุดที่ต้องการหาระยะทางเพื่อนำมาคำนวนผลในขั้นต่อไป
มีสองวิธีที่เห็นเค้าใช้กันบ่อยๆคือ
1.
Spherical Law of Cosines
2.
Haversine Formula
หากข้อหลังมีความถูกต้องเยอะกว่า
มีโค้ดให้เล่นเยอะแยะ http://rosettacode.org/wiki/Haversine_formula#Fortran ลองเล่นดูนะครับ
พร้อมแนวคิด http://en.wikipedia.org/wiki/Haversine_formula
program cal_dist_on_sphere
!-----------------------------------------------------------------------------------------------
! 2014.07.31
! Haversine codes :: http://rosettacode.org/wiki/Haversine_formula#Fortran
! Haversine formula ::
http://www.ig.utexas.edu/outreach/googleearth/latlong.html
!------------------------------------------------------------------------------------------------
implicit none
real,parameter :: re=6372.8*1000.0 !- earth radius in m
real :: lat1,lat2 !- lat lon in degree
converted to radian
real :: lon1,lon2
real :: dlat,dlon !- difference in lat and
lon in radian
real :: a,c !- Haversine parameter
real :: dist !- distance in meters
real, parameter :: pi = 4*atan(1.0) !- exploit intrinsic atan to generate pi
real,parameter :: rd=pi/180.0 !- radian conversion degree to radian
lat1=15.0;lat2=16.0
lon1=100.0;lon2=100.0
dlat=(lat2-lat1)*rd
dlon=(lon2-lon1)*rd
lat1=lat1*rd
lat2=lat2*rd
!-Haversine formula
a=(sin(dlat/2))**2+cos(lat1)*cos(lat2)*(sin(dlon/2)**2)
c=2*atan2(sqrt(a),sqrt(1-a))
dist=re*c
print*,lat1,lon1,lat2,lon2,dist
endprogram cal_dist_on_sphere
ไม่มีความคิดเห็น:
แสดงความคิดเห็น