def unit(self, ll=None): '''Normalize this vector to unit length. @kwarg ll: Optional, original latlon (C{LatLon}). @return: Normalised vector (L{Nvector}). ''' if self._united is None: u = NvectorBase.unit(self, ll=ll) if u.datum != self.datum: u._datum = self.datum # self._united = u._united = u return self._united
def __init__(self, x, y, z, h=0, datum=None, ll=None, name=NN): '''New n-vector normal to the earth's surface. @arg x: X component (C{meter}). @arg y: Y component (C{meter}). @arg z: Z component (C{meter}). @kwarg h: Optional height above model surface (C{meter}). @kwarg datum: Optional datum this n-vector is defined in (L{Datum}, L{Ellipsoid}, L{Ellipsoid2} or L{a_f2Tuple}). @kwarg ll: Optional, original latlon (C{LatLon}). @kwarg name: Optional name (C{str}). @raise TypeError: If B{C{datum}} is not a L{Datum}. @example: >>> from ellipsoidalNvector import Nvector >>> v = Nvector(0.5, 0.5, 0.7071, 1) >>> v.toLatLon() # 45.0°N, 045.0°E, +1.00m ''' NvectorBase.__init__(self, x, y, z, h=h, ll=ll, name=name) if datum not in (None, self._datum): self._datum = _ellipsoidal_datum(datum, name=name)
def __init__(self, x, y, z, h=0, datum=None, ll=None, name=''): '''New n-vector normal to the earth's surface. @param x: X component (C{meter}). @param y: Y component (C{meter}). @param z: Z component (C{meter}). @keyword h: Optional height above model surface (C{meter}). @keyword datum: Optional datum this n-vector is defined within (L{Datum}). @keyword ll: Optional, original latlon (C{LatLon}). @keyword name: Optional name (C{str}). @raise TypeError: If B{C{datum}} is not a L{Datum}. @example: >>> from ellipsoidalNvector import Nvector >>> v = Nvector(0.5, 0.5, 0.7071, 1) >>> v.toLatLon() # 45.0°N, 045.0°E, +1.00m ''' NvectorBase.__init__(self, x, y, z, h=h, ll=ll, name=name) if datum: _TypeError(Datum, datum=datum) self._datum = datum
def toLatLon(self, **kwds): # PYCHOK height=None, LatLon=LatLon '''Convert this n-vector to an C{Nvector}-based geodetic point. @keyword kwds: Optional, additional B{C{LatLon}} keyword arguments, ignored if C{B{LatLon}=None}. For example, use C{LatLon=...} to override the L{LatLon} (sub-)class or specify C{B{LatLon}=None}. @return: The B{C{LatLon}} point (L{LatLon}) or if C{B{LatLon}=None} or a L{LatLon3Tuple}C{(lat, lon, height)} if B{C{LatLon}} is C{None}. @raise TypeError: Invalid B{C{LatLon}} or B{C{kwds}}. ''' kwds = _2kwds(kwds, height=self.h, LatLon=LatLon) return NvectorBase.toLatLon(self, **kwds) # class or .classof
def toCartesian(self, **kwds): # PYCHOK Cartesian=Cartesian '''Convert this n-vector to C{Nvector}-based cartesian (ECEF) coordinates. @keyword kwds: Optional, additional B{C{Cartesian}} keyword arguments, ignored if C{B{Cartesian}=None}. For example, use C{Cartesian=...} to override the L{Cartesian} (sub-)class or specify @return: The B{C{Cartesian}} point (L{Cartesian}) or if C{B{Cartesian}=None}, an L{Ecef9Tuple}C{(x, y, z, lat, lon, height, C, M, datum)} with C{C} and C{M} if available. @raise TypeError: Invalid B{C{Cartesian}}, B{C{datum}} or B{C{kwds}}. ''' kwds = _2kwds(kwds, h=self.h, Cartesian=Cartesian) return NvectorBase.toCartesian(self, **kwds) # class or .classof
def toLatLon(self, **LatLon_height_kwds): # PYCHOK height=None, LatLon=LatLon '''Convert this n-vector to an C{Nvector}-based geodetic point. @kwarg LatLon_height_kwds: Optional L{LatLon}, B{C{height}} and other keyword arguments, ignored if C{B{LatLon}=None}. Use B{C{LatLon=...}} to override this L{LatLon} class or specify C{B{LatLon}=None}. @return: The geodetic point (L{LatLon}) or if B{C{LatLon}} is C{None}, a L{LatLon3Tuple}C{(lat, lon, height)}. @raise TypeError: Invalid B{C{LatLon}}, B{C{height}} or other B{C{LatLon_height_kwds}}. @raise ValueError: Invalid B{C{height}}. ''' kwds = _xkwds(LatLon_height_kwds, height=self.h, LatLon=LatLon) return NvectorBase.toLatLon(self, **kwds) # class or .classof
def toCartesian(self, **Cartesian_h_kwds): # PYCHOK Cartesian=Cartesian '''Convert this n-vector to C{Nvector}-based cartesian (ECEF) coordinates. @kwarg Cartesian_h_kwds: Optional L{Cartesian}, B{C{h}} and other keyword arguments, ignored if B{C{Cartesian=None}}. Use B{C{Cartesian=...}} to override this L{Cartesian} class or specify B{C{Cartesian=None}}. @return: The cartesian point (L{Cartesian}) or if B{C{Cartesian}} is C{None}, an L{Ecef9Tuple}C{(x, y, z, lat, lon, height, C, M, datum)} with C{C} and C{M} if available. @raise TypeError: Invalid B{C{Cartesian}}, B{C{h}} or other B{C{Cartesian_h_kwds}}. ''' kwds = _xkwds(Cartesian_h_kwds, h=self.h, Cartesian=Cartesian) return NvectorBase.toCartesian(self, **kwds) # class or .classof
def toLatLon(self, **kwds): # PYCHOK height=None, LatLon=LatLon '''Convert this n-vector to an C{Nvector}-based geodetic point. @keyword kwds: Optional, additional B{C{LatLon}} keyword arguments, ignored if C{B{LatLon}=None}. Specify C{LatLon=...} to override this L{LatLon} class or set C{B{LatLon}=None}. @return: The B{C{LatLon}} point (L{LatLon}) or a L{LatLon3Tuple}C{(lat, lon, height)} if C{B{LatLon}=None}. @raise TypeError: Invalid B{C{LatLon}} or B{C{kwds}}. @example: >>> v = Nvector(0.5, 0.5, 0.7071) >>> p = v.toLatLon() # 45.0°N, 45.0°E ''' kwds = _2kwds(kwds, height=self.h, LatLon=LatLon, datum=self.datum) return NvectorBase.toLatLon(self, **kwds) # class or .classof
def toLatLon(self, **LatLon_height_datum_kwds): # PYCHOK height=None, LatLon=LatLon '''Convert this n-vector to an C{Nvector}-based geodetic point. @kwarg LatLon_height_datum_kwds: Optional L{LatLon}, B{C{height}}, B{C{datum}} and other keyword arguments, ignored if B{C{LatLon=None}}. Use B{C{LatLon=...}} to override this L{LatLon} class or set B{C{LatLon=None}}. @return: The geodetic point (L{LatLon}) or a L{LatLon3Tuple}C{(lat, lon, height)} if B{C{LatLon}} is C{None}. @raise TypeError: Invalid B{C{LatLon}}, B{C{height}}, B{C{datum}} or other B{C{LatLon_height_datum_kwds}}. @example: >>> v = Nvector(0.5, 0.5, 0.7071) >>> p = v.toLatLon() # 45.0°N, 45.0°E ''' kwds = _xkwds(LatLon_height_datum_kwds, height=self.h, LatLon=LatLon, datum=self.datum) return NvectorBase.toLatLon(self, **kwds) # class or .classof