Calculate the great circle distance between two points
        on the earth (specified in decimal degrees)

def haversine(self, other):
        """
        Calculate the great circle distance between two points
        on the earth (specified in decimal degrees)
        """
        # convert decimal degrees to radians
        lon1, lat1, lon2, lat2 = map(radians,\
                [self.lon.low, self['lat'].low, other.lon.low,
                    other['lat'].low])
        # haversine formula
        dlon = lon2 - lon1
        dlat = lat2 - lat1
        a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2) ** 2
        c = 2 * asin(sqrt(a))
        # multiply by radius of the earth
        # km = 6367 * c
        miles = 3961 * c
        return miles