;********************************************* ; Calculate the distance in meters from two points on the earth ; ; Point 1 ; lat1 = latitude of point 1 ; lon1 = longitude of point 1 ; ; Point(s) 2 ; lat2 = latitude of point 2 OR array ; lon2 = longitude of point 2 OR array ; ; Returned value ; dm = distance in meters ;********************************************* pro haversine_distance,lat1,lon1,lat2,lon2,dm ; Convert from degrees to radians rlat1=double(lat1*(!dpi/180.0)) rlon1=double(lon1*(!dpi/180.0)) rlat2=double(lat2*(!dpi/180.0)) rlon2=double(lon2*(!dpi/180.0)) ; Calculate these differences drlat=rlat2-rlat1 drlon=rlon2-rlon1 ; Earth radius - km converted to meters re=double(6378.0*1000.0) ; Haversine formula for small distances - most accurate ; dm = distance in meters a=(sin(drlat/2))^2 + cos(rlat1) *cos(rlat2)*(sin(drlon/2))^2 c=2*atan(sqrt(a),sqrt(1-a)) dm=re*c return end