Beispiel #1
0
  def InverseLine(self, lat1, lon1, lat2, lon2,
                  caps = GeodesicCapability.STANDARD |
                  GeodesicCapability.DISTANCE_IN):
    """Define a GeodesicLine object in terms of the invese geodesic problem

    :param lat1: latitude of the first point in degrees
    :param lon1: longitude of the first point in degrees
    :param lat2: latitude of the second point in degrees
    :param lon2: longitude of the second point in degrees
    :param caps: the :ref:`capabilities <outmask>`
    :return: a :class:`~geographiclib.geodesicline.GeodesicLine`

    This function sets point 3 of the GeodesicLine to correspond to
    point 2 of the inverse geodesic problem.  The default value of *caps*
    is STANDARD | DISTANCE_IN, allowing direct geodesic problem to be
    solved.

    """

    from geographiclib.geodesicline import GeodesicLine
    a12, _, salp1, calp1, _, _, _, _, _, _ = self._GenInverse(
      lat1, lon1, lat2, lon2, 0)
    azi1 = Math.atan2d(salp1, calp1)
    if caps & (Geodesic.OUT_MASK & Geodesic.DISTANCE_IN):
      caps |= Geodesic.DISTANCE
    line = GeodesicLine(self, lat1, lon1, azi1, caps, salp1, calp1)
    line.SetArc(a12)
    return line
Beispiel #2
0
 def _GenDirectLine(self, lat1, lon1, azi1, arcmode, s12_a12,
                    caps = GeodesicCapability.STANDARD |
                    GeodesicCapability.DISTANCE_IN):
   """Private: general form of DirectLine"""
   from geographiclib.geodesicline import GeodesicLine
   # Automatically supply DISTANCE_IN if necessary
   if not arcmode: caps |= Geodesic.DISTANCE_IN
   line = GeodesicLine(self, lat1, lon1, azi1, caps)
   if arcmode:
     line.SetArc(s12_a12)
   else:
     line.SetDistance(s12_a12)
   return line