[Tutor] return integer from function

David Craig dcdavemail at gmail.com
Wed Feb 22 11:57:56 CET 2012


Hi,
I have a function that calculates the distance between two points on a 
sphere. It works but I cant get it to return a float for use in another 
script. Anyone know how I do that??

The function is below,
Thanks,
D

import math
def distance_on_unit_sphere(lat1, long1, lat2, long2):

     # Convert latitude and longitude to
     # spherical coordinates in radians.
     degrees_to_radians = math.pi/180.0

     # phi = 90 - latitude
     phi1 = (90.0 - lat1)*degrees_to_radians
     phi2 = (90.0 - lat2)*degrees_to_radians

     # theta = longitude
     theta1 = long1*degrees_to_radians
     theta2 = long2*degrees_to_radians

     # Compute spherical distance from spherical coordinates.

     # For two locations in spherical coordinates
     # (1, theta, phi) and (1, theta, phi)
     # cosine( arc length ) =
     #    sin phi sin phi' cos(theta-theta') + cos phi cos phi'
     # distance = rho * arc length

     cos = (math.sin(phi1)*math.sin(phi2)*math.cos(theta1 - theta2) +
            math.cos(phi1)*math.cos(phi2))
     arc = math.acos( cos )
     type(arc)
     arc = arc*6378.1
     #print str(arc*6378.1)+' km'
     # Remember to multiply arc by the radius of the earth
     # in your favorite set of units to get length.
     return arc


More information about the Tutor mailing list