Visit Our UNIX and Linux User Community

Calculating distance between two LAT long coordinates

Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Calculating distance between two LAT long coordinates
# 1  
Old 04-14-2010
Calculating distance between two LAT long coordinates

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


			Earth_Radius = 6378

			Function distance(lat1, lon1, lat2, lon2, unit)
			Dim theta, dist
			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)
			distance = dist * 60 * 1.1515
			Select Case ucase(unit)
			Case "K"
			distance = distance * 1.609344
			Case "N"
			distance = distance * 0.8684
			End Select
			End Function

			' This function get the arccos function from arctan function

			Function acos(rad)
			If Abs(rad) <> 1 Then
			acos = pi/2 - Atn(rad / Sqr(1 - rad * rad))
			ElseIf rad = -1 Then
			acos = pi
			End If
			End function

			' This function converts decimal degrees to radians

			Function deg2rad(Deg)
			deg2rad = cdbl(Deg * pi / 180)
			End Function

			' This function converts radians to decimal degrees

			Function rad2deg(Rad)
			rad2deg = cdbl(Rad * 180 / pi)
			End Function

			'Display on screen
			response.write distance(lat1, lon1, lat2, lon2, "K") & " Km<br>"

Pls help me !
# 2  
Old 04-14-2010
use 'bc'. Read the man page, it has all the functions built in.
# 3  
Old 04-15-2010

this is the way i converted ....not succeeded..

pi = 3.14159265358979323846
Earth_Radius = 6378

theta =$(($2 - $4))
dist = $($($(sin($(deg2rad $1))) * $(sin($(deg2rad $3)))) + $($(cos($(deg2rad $1))) * $(cos($(deg2rad $3))) * $(cos($(deg2rad
dist = $(acos $dist)
dist = $(rad2deg $dist)
distance = $(($dist * 60 * 1.1515))
distance = $(($distance * 1.609344))
echo $distance

If ( $(abs($1)) != 1 ) Then
acos = $($($pi/2) - $(atan2($1 / $(sqrt(1 - $($1 * $1))))))
Else acos = $pi

deg2rad = $($(($1 * $pi)) / 180)

rad2deg = $($(($1 * 180)) / pi)


./calcDist[2]: pi: not found
./calcDist[3]: Earth_Radius: not found
./calcDist[16]: syntax error at line 18 : `(' unexpected
# 4  
Old 04-15-2010
You've got too many whitespaces, you're using uppercase statements when only lowercase are allowed, and you won't get the desired result, as the shell can't do floating point arithmetics.

2 questions:
* Why do you want to convert it to a shell script?
* Why a shell script, and not a general purpose scripting language (which would make this far easier)?
# 5  
Old 04-15-2010
In vbscript i achieved in the following way
I don't know where you found this program but one of the many places this VB program is published is:

I don't know whether you are a programmer or shell scripter or what computer or software you have. To embark on writing this sort of program you would need to know what tools are available and know how to use them.
What might be trivial in a high-level language beomes a nightmare if you start in the wrong language (like trying to use ksh when you do not know the capabilities or syntax).

Of the tools supplied with most unixes "bs" might be more suitable than "bc".
Both "bs" and "bc" are hard to get right. However you are more likely to find examples in "awk", "C" or "perl" online.

This "awk" idea posted recently on might get you started (not checked, not tested).
# 6  
Old 04-16-2010

its right neither a programmer nor a shell simply learning new things through this kind of forums...since i had the intention to learn, i came not confident enough to read any book continuously for some time so am searching about my small small official requirements and carrying out day to day works...

by the way i tried the link u posted before posting my query here...that gave some 200 metre difference in value with that of vbscript code i gave here. thats y i thought of converting the same to shell script..
# 7  
Old 04-16-2010
And the 200 metre difference is what percentage of the actual distance?
Would this difference be lost in order of calculation, limits of precision, rounding?

Previous Thread | Next Thread
Test Your Knowledge in Computers #299
Difficulty: Easy
Novell bought the SUSE (then SuSE) brands and trademarks in 2003.
True or False?

10 More Discussions You Might Find Interesting

1. What is on Your Mind?

Calculating Warp Coordinates in Cyberspace - Cyberspace Situational Awareness

Please message me or post in this thread if anyone is interested in contributing some C, C++, or C# code for this project. Right now we have an open source C++ git project (created by someone else a few years ago) that fails when we try to compile on Ubuntu. I need someone to fix the make... (4 Replies)
Discussion started by: Neo
4 Replies

2. Shell Programming and Scripting

Geographical distance between long and lat in bash

Does anyone know of any script or packages that allow the calculation of the geographical distance between two points of lat/long from within a bash shell? I have been searching the web for the past few days and none of the options seem compatible with bash variables... (eg. geodist) Many... (3 Replies)
Discussion started by: lily-anne
3 Replies

3. Shell Programming and Scripting

Calculating the epoch time from standard time using awk and calculating the duration

Hi All, I have the following time stamp data in 2 columns Date TimeStamp(also with milliseconds) 05/23/2012 08:30:11.250 05/23/2012 08:30:15.500 05/23/2012 08:31.15.500 . . etc From this data I need the following output. 0.00( row1-row1 in seconds) 04.25( row2-row1 in... (5 Replies)
Discussion started by: ks_reddy
5 Replies

4. 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

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

Calculate distance and azimuth

Hi all, I have a data file like this 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... (3 Replies)
Discussion started by: chamara
3 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

Featured Tech Videos