วันพฤหัสบดีที่ 31 กรกฎาคม พ.ศ. 2557

โปรแกรมฟอร์แทรนการคำนวนระยะทางระหว่างพิกัดจุดภูมิศาสตร์สองจุด



โปรแกรมฟอร์แทรนการคำนวนระยะทางระหว่างพิกัดจุดภูมิศาสตร์สองจุด

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

ไม่มีความคิดเห็น:

แสดงความคิดเห็น