class_docstr: performs forward and inverse geodetic, or Great Circle,
  computations.  The forward computation (using the 'fwd' method)
  involves determining latitude, longitude and back azimuth of a
  terminus point given the latitude and longitude of an initial
  point, plus azimuth and distance. The inverse computation (using
  the 'inv' method) involves determining the forward and back
  azimuths and distance given the latitudes and longitudes of an
  initial and terminus point.
  
  Attributes
  ----------
  initstring: str
      The string form of the user input used to create the Geod.
  sphere: bool
      If True, it is a sphere.
  a: float
      The ellipsoid equatorial radius, or semi-major axis.
  b: float
      The ellipsoid polar radius, or semi-minor axis.
  es: float
      The 'eccentricity' of the ellipse, squared (1-b2/a2).
  f: float
      The ellipsoid 'flattening' parameter ( (a-b)/a ).
class_docstr_tok: ["performs","forward","and","inverse","geodetic",",","or","Great","Circle",",","computations",".","The","forward","computation","(","using","the","'fwd","'","method",")","involves","determining","latitude",",","longitude","and","back","azimuth","of","a","terminus","point","given","the","latitude","and","longitude","of","an","initial","point",",","plus","azimuth","and","distance",".","The","inverse","computation","(","using","the","'inv","'","method",")","involves","determining","the","forward","and","back","azimuths","and","distance","given","the","latitudes","and","longitudes","of","an","initial","and","terminus","point",".","Attributes","--","--","--","--","--","initstring",":","str","The","string","form","of","the","user","input","used","to","create","the","Geod",".","sphere",":","bool","If","True",",","it","is","a","sphere",".","a",":","float","The","ellipsoid","equatorial","radius",",","or","semi-major","axis",".","b",":","float","The","ellipsoid","polar","radius",",","or","semi-minor","axis",".","es",":","float","The","'eccentricity","'","of","the","ellipse",",","squared","(","1-b2\/a2",")",".","f",":","float","The","ellipsoid","'flattening","'","parameter","(","(","a-b",")","\/a",")","."]
docstr: Inverse transformation
  
  Determine forward and back azimuths, plus distances
  between initial points and terminus points.
  
  .. versionadded:: 3.5.0 inplace
  .. versionadded:: 3.5.0 return_back_azimuth
  
  Accepted numeric scalar or array:
  
  - :class:`int`
  - :class:`float`
  - :class:`numpy.floating`
  - :class:`numpy.integer`
  - :class:`list`
  - :class:`tuple`
  - :class:`array.array`
  - :class:`numpy.ndarray`
  - :class:`xarray.DataArray`
  - :class:`pandas.Series`
  
  Parameters
  ----------
  lons1: scalar or array
      Longitude(s) of initial point(s)
  lats1: scalar or array
      Latitude(s) of initial point(s)
  lons2: scalar or array
      Longitude(s) of terminus point(s)
  lats2: scalar or array
      Latitude(s) of terminus point(s)
  radians: bool, default=False
      If True, the input data is assumed to be in radians.
      Otherwise, the data is assumed to be in degrees.
  inplace: bool, default=False
      If True, will attempt to write the results to the input array
      instead of returning a new array. This will fail if the input
      is not an array in C order with the double data type.
  return_back_azimuth: bool, default=True
      If True, the second return value (azi21) will be the back azimuth
      (flipped 180 degrees), Otherwise, it will also be a forward azimuth.
  
  Returns
  -------
  scalar or array:
      Forward azimuth(s) (azi12)
  scalar or array:
      Back azimuth(s) or Forward azimuth(s) (azi21)
  scalar or array:
      Distance(s) between initial and terminus point(s)
      in meters
docstr_tok: ["Inverse","transformation","Determine","forward","and","back","azimuths",",","plus","distances","between","initial","points","and","terminus","points",".","..","versionadded",":",":","3.5.0","inplace","..","versionadded",":",":","3.5.0","return_back_azimuth","Accepted","numeric","scalar","or","array",":","-",":","class",":","`","int","`","-",":","class",":","`","float","`","-",":","class",":","`","numpy.floating","`","-",":","class",":","`","numpy.integer","`","-",":","class",":","`","list","`","-",":","class",":","`","tuple","`","-",":","class",":","`","array.array","`","-",":","class",":","`","numpy.ndarray","`","-",":","class",":","`","xarray.DataArray","`","-",":","class",":","`","pandas.Series","`","Parameters","--","--","--","--","--","lons1",":","scalar","or","array","Longitude","(","s",")","of","initial","point","(","s",")","lats1",":","scalar","or","array","Latitude","(","s",")","of","initial","point","(","s",")","lons2",":","scalar","or","array","Longitude","(","s",")","of","terminus","point","(","s",")","lats2",":","scalar","or","array","Latitude","(","s",")","of","terminus","point","(","s",")","radians",":","bool",",","default=False","If","True",",","the","input","data","is","assumed","to","be","in","radians",".","Otherwise",",","the","data","is","assumed","to","be","in","degrees",".","inplace",":","bool",",","default=False","If","True",",","will","attempt","to","write","the","results","to","the","input","array","instead","of","returning","a","new","array",".","This","will","fail","if","the","input","is","not","an","array","in","C","order","with","the","double","data","type",".","return_back_azimuth",":","bool",",","default=True","If","True",",","the","second","return","value","(","azi21",")","will","be","the","back","azimuth","(","flipped","180","degrees",")",",","Otherwise",",","it","will","also","be","a","forward","azimuth",".","Returns","--","--","--","-","scalar","or","array",":","Forward","azimuth","(","s",")","(","azi12",")","scalar","or","array",":","Back","azimuth","(","s",")","or","Forward","azimuth","(","s",")","(","azi21",")","scalar","or","array",":","Distance","(","s",")","between","initial","and","terminus","point","(","s",")","in","meters"]
code: def inv(
      self,
      lons1: Any,
      lats1: Any,
      lons2: Any,
      lats2: Any,
      radians: bool = False,
      inplace: bool = False,
      return_back_azimuth: bool = True,
  ) -> tuple[Any, Any, Any]:
      """
  
      Inverse transformation
  
      Determine forward and back azimuths, plus distances
      between initial points and terminus points.
  
      .. versionadded:: 3.5.0 inplace
      .. versionadded:: 3.5.0 return_back_azimuth
  
      Accepted numeric scalar or array:
  
      - :class:`int`
      - :class:`float`
      - :class:`numpy.floating`
      - :class:`numpy.integer`
      - :class:`list`
      - :class:`tuple`
      - :class:`array.array`
      - :class:`numpy.ndarray`
      - :class:`xarray.DataArray`
      - :class:`pandas.Series`
  
      Parameters
      ----------
      lons1: scalar or array
          Longitude(s) of initial point(s)
      lats1: scalar or array
          Latitude(s) of initial point(s)
      lons2: scalar or array
          Longitude(s) of terminus point(s)
      lats2: scalar or array
          Latitude(s) of terminus point(s)
      radians: bool, default=False
          If True, the input data is assumed to be in radians.
          Otherwise, the data is assumed to be in degrees.
      inplace: bool, default=False
          If True, will attempt to write the results to the input array
          instead of returning a new array. This will fail if the input
          is not an array in C order with the double data type.
      return_back_azimuth: bool, default=True
          If True, the second return value (azi21) will be the back azimuth
          (flipped 180 degrees), Otherwise, it will also be a forward azimuth.
  
      Returns
      -------
      scalar or array:
          Forward azimuth(s) (azi12)
      scalar or array:
          Back azimuth(s) or Forward azimuth(s) (azi21)
      scalar or array:
          Distance(s) between initial and terminus point(s)
          in meters
      """
      try:
          # Fast-path for scalar input, will raise if invalid types are input
          # and we can fallback below
          return self._inv_point(
              lons1,
              lats1,
              lons2,
              lats2,
              radians=radians,
              return_back_azimuth=return_back_azimuth,
          )
      except TypeError:
          pass
  
      # process inputs, making copies that support buffer API.
      inx, x_data_type = _copytobuffer(lons1, inplace=inplace)
      iny, y_data_type = _copytobuffer(lats1, inplace=inplace)
      inz, z_data_type = _copytobuffer(lons2, inplace=inplace)
      ind = _copytobuffer(lats2, inplace=inplace)[0]
      self._inv(
          inx,
          iny,
          inz,
          ind,
          radians=radians,
          return_back_azimuth=return_back_azimuth,
      )
      # if inputs were lists, tuples or floats, convert back.
      outx = _convertback(x_data_type, inx)
      outy = _convertback(y_data_type, iny)
      outz = _convertback(z_data_type, inz)
      return outx, outy, outz
  
imports: import math
  import warnings
  from typing import Any
  from pyproj._geod import Geod
  from pyproj._geod import GeodIntermediateReturn, geodesic_version_str
  from pyproj._geod import reverse_azimuth
  from pyproj.enums import GeodIntermediateFlag
  from pyproj.exceptions import GeodError
  from pyproj.list import get_ellps_map
  from pyproj.utils import DataType, _convertback, _copytobuffer
label_desc: Use image node_id 3 for calling the Geod obj's underlying member method code with example usage: obj.inv(lons1, lats1, lons2, lats2, radians, inplace, return_back_azimuth) and returns: outx,  outy,  outz, self