docs: def EarthDistance((lat1, lon1), (lat2, lon2)):
      "Distance in meters between two points specified in degrees."
      x1 = CalcRad(lat1) * math.cos(Deg2Rad(lon1)) * math.sin(Deg2Rad(90-lat1))
      x2 = CalcRad(lat2) * math.cos(Deg2Rad(lon2)) * math.sin(Deg2Rad(90-lat2))
      y1 = CalcRad(lat1) * math.sin(Deg2Rad(lon1)) * math.sin(Deg2Rad(90-lat1))
      y2 = CalcRad(lat2) * math.sin(Deg2Rad(lon2)) * math.sin(Deg2Rad(90-lat2))
      z1 = CalcRad(lat1) * math.cos(Deg2Rad(90-lat1))
      z2 = CalcRad(lat2) * math.cos(Deg2Rad(90-lat2))
      a = (x1*x2 + y1*y2 + z1*z2)/pow(CalcRad((lat1+lat2)/2), 2)
      # a should be in [1, -1] but can sometimes fall outside it by
      # a very small amount due to rounding errors in the preceding
      # calculations (this is prone to happen when the argument points
      # are very close together).  Thus we constrain it here.
      if abs(a) > 1: a = 1
      elif a < -1: a = -1
      return CalcRad((lat1+lat2) / 2) * math.acos(a)