Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
H = hypot(shx, cy)
if H < EPS:
raise self._Error(H=H)
T = t0 = sy / H # τʹ
S = Fsum(T)
q = 1.0 / E.e12
P = 7 # -/+ toggle trips
d = 1.0 + eps
while abs(d) > eps and P > 0:
p = -d # previous d, toggled
h = hypot1(T)
s = sinh(E.e * atanh(E.e * T / h))
t = T * hypot1(s) - s * h
d = (t0 - t) / hypot1(t) * ((q + T**2) / h)
T, d = S.fsum2_(d) # τi, (τi - τi-1)
if d == p: # catch -/+ toggling of d
P -= 1
# else:
# P = 0
a = atan(T) # lat
b = atan2(shx, cy)
if unfalse and self.falsed:
b += radians(_cmlon(self.zone))
ll = _LLEB(degrees90(a), degrees180(b), datum=self.datum, name=self.name)
# convergence: Karney 2011 Eq 26, 27
p = -K.ps(-1)
q = K.qs(0)
ll._convergence = degrees(atan(tan(y) * tanh(x)) + atan2(q, p))
# atanh(_e * snu / dnv) = asinh(_e * snu / sqrt(_mu * cnu^2 + _mv * cnv^2))
d1 = cnu**2 + self._mv * (snu * snv)**2
d2 = self._mu * cnu**2 + self._mv * cnv**2
# Overflow value s.t. atan(overflow) = pi/2
t1 = t2 = copysign(_OVERFLOW, snu)
if d1 > 0:
t1 = snu * dnv / sqrt(d1)
lam = 0
if d2 > 0:
t2 = sinh(e * asinh(e * snu / sqrt(d2)))
if d1 > 0:
lam = atan2(dnu * snv , cnu * cnv) - \
atan2(cnu * snv * e, dnu * cnv) * e
# psi = asinh(t1) - asinh(t2)
# taup = sinh(psi)
taup = t1 * hypot1(t2) - t2 * hypot1(t1)
return taup, lam, d2
sy, cy = sincos2(y)
H = hypot(shx, cy)
if H < EPS:
raise self._Error(H=H)
T = t0 = sy / H # τʹ
S = Fsum(T)
q = 1.0 / E.e12
P = 7 # -/+ toggle trips
d = 1.0 + eps
while abs(d) > eps and P > 0:
p = -d # previous d, toggled
h = hypot1(T)
s = sinh(E.e * atanh(E.e * T / h))
t = T * hypot1(s) - s * h
d = (t0 - t) / hypot1(t) * ((q + T**2) / h)
T, d = S.fsum2_(d) # τi, (τi - τi-1)
if d == p: # catch -/+ toggling of d
P -= 1
# else:
# P = 0
a = atan(T) # lat
b = atan2(shx, cy)
if unfalse and self.falsed:
b += radians(_cmlon(self.zone))
ll = _LLEB(degrees90(a), degrees180(b), datum=self.datum, name=self.name)
# convergence: Karney 2011 Eq 26, 27
p = -K.ps(-1)
q = K.qs(0)
def _scale(E, rho, tau):
# compute the point scale factor, ala Karney
t = hypot1(tau)
return Scalar((rho / E.a) * t * sqrt(E.e12 + E.e2 / t**2))
# else:
# P = 0
a = atan(T) # lat
b = atan2(shx, cy)
if unfalse and self.falsed:
b += radians(_cmlon(self.zone))
ll = _LLEB(degrees90(a), degrees180(b), datum=self.datum, name=self.name)
# convergence: Karney 2011 Eq 26, 27
p = -K.ps(-1)
q = K.qs(0)
ll._convergence = degrees(atan(tan(y) * tanh(x)) + atan2(q, p))
# scale: Karney 2011 Eq 28
ll._scale = E.e2s(sin(a)) * hypot1(T) * H * (A0 / E.a / hypot(p, q))
self._latlon_to(ll, eps, unfalse)
return self._latlon5(LatLon, **LatLon_kwds)
>>> u = toUtm(p) # 48 N 377302 1483035
'''
z, B, lat, lon, d, f, name = _to7zBlldfn(latlon, lon, datum,
falsed, name, zone,
UTMError, **cmoff)
E = d.ellipsoid
a, b = radians(lat), radians(lon)
# easting, northing: Karney 2011 Eq 7-14, 29, 35
sb, cb = sincos2(b)
T = tan(a)
T12 = hypot1(T)
S = sinh(E.e * atanh(E.e * T / T12))
T_ = T * hypot1(S) - S * T12
H = hypot(T_, cb)
y = atan2(T_, cb) # ξ' ksi
x = asinh(sb / H) # η' eta
A0 = E.A * getattr(Utm, '_scale0', _K0) # Utm is class or None
K = _Kseries(E.AlphaKs, x, y) # Krüger series
y = K.ys(y) * A0 # ξ
x = K.xs(x) * A0 # η
# convergence: Karney 2011 Eq 23, 24
p_ = K.ps(1)
q_ = K.qs(0)
c = degrees(atan(T_ / hypot1(T_) * tan(b)) + atan2(q_, p_))
Coordinate Conversion'},
Apr 1996, both from Lawrence Livermore National Laboratory (LLNL) and
John J. Sudano U{An exact conversion from an Earth-centered coordinate
system to latitude longitude and altitude}.
'''
x, y, z, name = _xyzn4(xyz, y, z, Error=EcefError)
E = self.ellipsoid
p = hypot(x, y) # distance from minor axis
r = hypot(p, z) # polar radius
if min(p, r) > EPS:
# parametric latitude (Bowring eqn 17, replaced)
t = (E.b * z) / (E.a * p) * (1 + E.e22 * E.b / r)
c = 1 / hypot1(t)
s = t * c
# geodetic latitude (Bowring eqn 18)
a = atan2(z + E.e22 * E.b * s**3,
p - E.e2 * E.a * c**3)
b = atan2(y, x) # ... and longitude
# height above ellipsoid (Bowring eqn 7)
sa, ca = sincos2(a)
# r = E.a / E.e2s(sa) # length of normal terminated by minor axis
# h = p * ca + z * sa - (E.a * E.a / r)
h = fsum_(p * ca, z * sa, -E.a * E.e2s(sa))
C, lat, lon = 1, degrees90(a), degrees180(b)
# see