Calculate distance and azimuth


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Calculate distance and azimuth
# 1  
Old 02-13-2010
Tools Calculate distance and azimuth

Hi all,
I have a data file like this
Code:
 lat            lon     lat     lon
12.000 25.125 14.235 25.012
14.200 81.000  25.584 25.014
45.023 25.365 25.152 35.222

I want to calculate distance and azimuth between this points
eg:- 12.000,25.125 and 14.235,25.012
I want to use awk programming language for this calculation

If you know about this please tell me

Last edited by Scott; 02-14-2010 at 07:02 AM.. Reason: Code tags
# 2  
Old 02-13-2010
Power

Before using a programmation language, tell us how you would calculate that "on the paper" because it seems to be spherical trigonometrics Smilie
# 3  
Old 02-14-2010
calculate distance & azimuth between two points

Hi all,
I have a data file like this
Code:
lat lon lat lon
12.000 25.125 14.235 25.012
14.200 81.000 25.584 25.014
45.023 25.365 25.152 35.222

I want to calculate distance and azimuth between this points
eg:- 12.000,25.125 and 14.235,25.012

calculation proocedure-

Code:
 
# calculate distance between two points 
 distance=sqrt((pow(londif*prcurt*cos(meanlat),2))+(pow((latdif*mrcurt),2)));
 latdif=point 1 latitude- point 2 latitude;
 londif=point 1 longitude-point 2 longitude;
 meanlat=(point 1 latitude+point 2 latitude)/2.0;
 a=6377276.345,b=6356075.4131;
 e=sqrt(((a*a)-(b*b))/(a*a));
  function mrcurt(a, e, meanlat)
  {
  mrc=(a*(1-(e*e)))/pow((1-((e*e)*pow(sin(meanlat),2))),1.5);
  return mrc;
  }
  
function prcurt( a, e, meanlat)
  {
 prc;
  prc=a/sqrt(1-pow((e*sin(meanlat)),2));
  return prc;
  }

# calculate Azimuth between two points
A=2*atan((londif/latdif)*((prcurt/mrcurt)*(cos(meanlat))));
  B=londif*(sin(meanlat));
  Az=(A-B)/2;
  if(londif>0&&latdif>0)
  Az=Az;
  if(londif>0&&latdif<0)
  Az=Az+M_PI;
  if(londif<0&&latdif<0)
  Az=Az+M_PI;
  if(londif<0&&latdif>0)
  Az=Az+(2*M_PI);

I want to use awk programming language for this calculation

If you know about this please tell me

Last edited by Scott; 02-14-2010 at 07:01 AM.. Reason: Please use code tags
# 4  
Old 02-15-2010
I rearranged your formulas and made it awk executable. Not sure if it's right:

Code:
$ cat sphere.awk
function pow(b, p)
{
  return b^p
}

{
  M_PI = 4*atan2(1,1)
  rad = 180 / M_PI
  lat1 = $1 / rad
  lat2 = $3 / rad
  lon1 = $2 / rad
  lon2 = $4 / rad
  latdif = lat1 - lat2
  londif = lon1 - lon2
  meanlat = (lat1 + lat2)/2

  a = 6377276.345
  b = 6356075.4131
  e = sqrt(((a*a)-(b*b))/(a*a))
  mrcurt = (a*(1-(e*e)))/pow((1-((e*e)*pow(sin(meanlat),2))),1.5)
  prcurt =a/sqrt(1-pow((e*sin(meanlat)),2))
  distance=sqrt((pow(londif*prcurt*cos(meanlat),2))+(pow((latdif*mrcurt),2)))

  A=2*atan2(londif*((prcurt/mrcurt)*(cos(meanlat))),latdif)
  B=londif*(sin(meanlat))
  Az=(A-B)/2
  if(londif>0&&latdif<0) Az=Az+M_PI
  if(londif<0&&latdif<0) Az=Az+M_PI
  if(londif<0&&latdif>0) Az=Az+(2*M_PI)

  printf("%8.0f %6.2f\n", distance, Az*rad)
}

$ cat sphere.dat
12.000 25.125 14.235 25.012
14.200 81.000 25.584 25.014
45.023 25.365 25.152 35.222

$ awk -f sphere.awk sphere.dat
  247544 357.15
 5995861 272.61
 2380475 340.65

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Calculate average, azimut and distance

Gents, Please i will to get the distance and azimut from 2 coordinates: Usig excel formula i get the correct values, but i will like to do it using awk. Example A 35089.0 50345.016 9 75 1 2101774 77 70 79 483911.6 2380106.9 137.4 1 1 6 1 A 35089.0 50345.01620 75... (8 Replies)
Discussion started by: jiam912
8 Replies

2. Shell Programming and Scripting

Edit distance using perl or awk

Dear all, I am working on a large Sindhi lexicon which I hope to complete by 2017 and place in open source. The database is in Arabic script in two columns delimited by an equal to sign. Column 1 contains a word or words without the short vowel and also some extraneous information which is... (0 Replies)
Discussion started by: gimley
0 Replies

3. Shell Programming and Scripting

finding distance between numbers

Hi, I have a file as ABC 1634230,1634284,1634349,1634468 1634272,1634301,1634356,1634534 What I want is to find distance between the numbers.. column 1 is the gene name and column 2 are starts and column 3 are their respective stops for the starts. So what I want is column 3 which has +1... (2 Replies)
Discussion started by: Diya123
2 Replies

4. Shell Programming and Scripting

Calculate age of a file | calculate time difference

Hello, I'm trying to create a shell script (#!/bin/sh) which should tell me the age of a file in minutes... I have a process, which delivers me all 15 minutes a new file and I want to have a monitoring script, which sends me an email, if the present file is older than 20 minutes. To do... (10 Replies)
Discussion started by: worm
10 Replies

5. UNIX for Dummies Questions & Answers

How to make a distance matrix

Hi, I'm trying to generate a distance matrix between sample pairs for use in a tree-drawing program (example below). The example below demonstrates what I'd like to get out of the data - essentially, to calculate the proportion of positions where two samples differ. Any help much appreciated!... (1 Reply)
Discussion started by: auburn
1 Replies

6. Shell Programming and Scripting

Calculating distance between two LAT long coordinates

hi, i have a pair of latitude and longitude and i want to calculate the distance between these two points. In vbscript i achieved in the following way...Now i want to implement this in unix shell scripting.... <% Dim lat1, lon1, lat2, lon2 const pi = 3.14159265358979323846 ... (8 Replies)
Discussion started by: aemunathan
8 Replies

7. Programming

Converting distance list to distance matrix in R

Hi power user, I have this type of data (distance list): file1 A B 10 B C 20 C D 50I want output like this # A B C D A 0 10 30 80 B 10 0 20 70 C 30 20 0 50 D 80 70 50 0 Which is a distance matrix I have tried... (0 Replies)
Discussion started by: anjas
0 Replies

8. Shell Programming and Scripting

program to calculate distance between 5 atoms

Hello, I am a beginner with perl. I have a perl program to calculate the distance between 5 atoms or more. i have an array which looks like this: 6.324 32.707 50.379 5.197 32.618 46.826 4.020 36.132 46.259 7.131 38.210 45.919 6.719 38.935 42.270 2.986 39.221 ... (1 Reply)
Discussion started by: annie_singh
1 Replies

9. UNIX for Dummies Questions & Answers

Long Distance UNIX (Solaris) Cloning ?

Need some advice and guidance for this UNIX beginner. Due to downsizing I have inherited the SysAdmin duties..(sigh). Please excuse and forgive me if I use the wrong terms below.... Situation: We have UNIX ( Solaris 7/8/9( it varies) on Sun Ultra 10's) servers located at several global... (1 Reply)
Discussion started by: HikerLT
1 Replies

10. Shell Programming and Scripting

Lat/Long Distance Calculation

I amtrying to write a script that would compute the distance between an "x" number of points. This is what I have come up with so far and it is not working. Can anyone modify it to make it work? A=34.16597 B=-84.33244 C=34.2344 D=-84.29189 test "$A" -eq "$C" -o "$B" -eq "$D" then echo... (3 Replies)
Discussion started by: Ernst
3 Replies
Login or Register to Ask a Question