1

2# -*- coding: utf-8 -*-

3

4 u'''DEPRECATED functions kept for backward compatibility.

5'''

6

7 from pygeodesy.constants import EPS, R_M, float0_

8 from pygeodesy.deprecated.classes import ClipCS3Tuple, TriAngle4Tuple, _TriAngle5Tuple

9 from pygeodesy.interns import NN, _area_, _COMMASPACE_, _negative_, \

10 _scalar_, _sep_, _SPACE_, _UNDER_, _value_

11 from pygeodesy.lazily import _ALL_DEPRECATED, _ALL_MODS as _MODS

12 from pygeodesy.props import deprecated_function

13# from pygeodesy.resections import TriAngle5Tuple as _TriAngle5Tuple # from .classes

14 from pygeodesy.units import _1mm, Number_, Scalar_

15

16__all__ = _ALL_DEPRECATED.deprecated_functions

17__version__ = '24.12.31'

18

19_WGS84 = _UTM = object()

20

21

22@deprecated_function

23 def anStr(name, OKd='._-', sub=_UNDER_): # PYCHOK no cover

24 '''DEPRECATED, use function L{pygeodesy.anstr}.'''

25 return _MODS.streprs.anstr(name, OKd=OKd, sub=sub)

26

27

28@deprecated_function

29 def areaof(points, adjust=True, radius=R_M, wrap=True): # PYCHOK no cover

30 '''DEPRECATED, use function L{pygeodesy.areaOf}.'''

31 return _MODS.points.areaOf(points, adjust=adjust, radius=radius, wrap=wrap)

32

33

34@deprecated_function

35 def atand(x): # PYCHOK no cover

36 '''DEPRECATED on 2023.09.28, use function L{pygeodesy.atan1d}.'''

37 return _MODS.utily.atan1d(x)

38

39

40@deprecated_function

41 def bounds(points, wrap=True, LatLon=None): # PYCHOK no cover

42 '''DEPRECATED, use function L{pygeodesy.boundsOf}.

43

44 @return: 2-Tuple C{(latlonSW, latlonNE)}, each a B{C{LatLon}} or

45 4-Tuple C{(latS, lonW, latN, lonE)} if C{B{LatLon} is None}.

46 '''

47 return tuple(_MODS.points.boundsOf(points, wrap=wrap, LatLon=LatLon))

48

49

50@deprecated_function

51 def clipCS3(points, lowerleft, upperright, closed=False, inull=False): # PYCHOK no cover

52 '''DEPRECATED, use function L{pygeodesy.clipCS4}.

53

54 @return: Yield a L{ClipCS3Tuple}C{(start, end, index)} for each

55 edge of the I{clipped} path.

56 '''

57 for p1, p2, _, j in _MODS.clipy.clipCS4(points, lowerleft, upperright,

58 closed=closed, inull=inull):

59 yield ClipCS3Tuple(p1, p2, j)

60

61

62@deprecated_function

63 def clipDMS(deg, limit): # PYCHOK no cover

64 '''DEPRECATED, use function L{pygeodesy.clipDegrees}.'''

65 return _MODS.dms.clipDegrees(deg, limit)

66

67

68@deprecated_function

69 def clipStr(bstr, limit=50, white=NN): # PYCHOK no cover

70 '''DEPRECATED, use function L{pygeodesy.clips}.'''

71 return _MODS.basics.clips(bstr, limit=limit, white=white)

72

73

74@deprecated_function

75 def collins(pointA, pointB, pointC, alpha, beta, **useZ_Clas_and_kwds):

76 '''DEPRECATED, use function L{pygeodesy.collins5}.'''

77 return _MODS.resections.collins5(pointA, pointB, pointC, alpha, beta,

78 **useZ_Clas_and_kwds)

79

80

81@deprecated_function

82 def copysign(x, y): # PYCHOK no cover

83 '''DEPRECATED, use function L{pygeodesy.copysign0}.'''

84 return _MODS.basics.copysign0(x, y)

85

86

87@deprecated_function

88 def cosineAndoyerLambert(lat1, lon1, lat2, lon2, **datum_wrap):

89 '''DEPRECATED on 2024.12.31, use function L{pygeodesy.cosineLaw} with C{B{corr}=1}.'''

90 return _MODS.formy.cosineLaw(lat1, lon1, lat2, lon2, corr=1, **datum_wrap)

91

92

93@deprecated_function

94 def cosineAndoyerLambert_(phi2, phi1, lam21, **datum):

95 '''DEPRECATED on 2024.12.31, use function L{pygeodesy.cosineLaw_} with C{B{corr}=1}.'''

96 return _MODS.formy.cosineLaw_(phi2, phi1, lam21, corr=1, **datum)

97

98

99@deprecated_function

100 def cosineForsytheAndoyerLambert(lat1, lon1, lat2, lon2, **datum_wrap):

101 '''DEPRECATED on 2024.12.31, use function L{pygeodesy.cosineLaw} with C{B{corr}=2}.'''

102 return _MODS.formy.cosineLaw(lat1, lon1, lat2, lon2, corr=2, **datum_wrap)

103

104

105@deprecated_function

106 def cosineForsytheAndoyerLambert_(phi2, phi1, lam21, **datum):

107 '''DEPRECATED on 2024.12.31, use function L{pygeodesy.cosineLaw_} with C{B{corr}=2}.'''

108 return _MODS.formy.cosineLaw_(phi2, phi1, lam21, corr=2, **datum)

109

110

111@deprecated_function

112 def decodeEPSG2(arg): # PYCHOK no cover

113 '''DEPRECATED, use function L{epsg.decode2}.

114

115 @return: 2-Tuple C{(zone, hemipole)}

116 '''

117 return tuple(_MODS.epsg.decode2(arg))

118

119

120@deprecated_function

121 def encodeEPSG(zone, hemipole=NN, band=NN): # PYCHOK no cover

122 '''DEPRECATED, use function L{epsg.encode}.

123

124 @return: C{EPSG} code (C{int}).

125 '''

126 return int(_MODS.epsg.encode(zone, hemipole=hemipole, band=band))

127

128

129@deprecated_function

130 def enStr2(easting, northing, prec, *extras): # PYCHOK no cover

131 '''DEPRECATED, use function L{pygeodesy.enstr2}.'''

132 return _MODS.streprs.enstr2(easting, northing, (int(prec) // 2 - 5), *extras)

133

134

135@deprecated_function

136 def equirectangular_(lat1, lon1, lat2, lon2, **options): # PYCHOK no cover

137 '''DEPRECATED on 2024.05.25, use function L{pygeodesy.equirectangular4}.'''

138 return _MODS.formy.equirectangular4(lat1, lon1, lat2, lon2, **options)

139

140

141@deprecated_function

142 def equirectangular3(lat1, lon1, lat2, lon2, **options): # PYCHOK no cover

143 '''DEPRECATED, use function L{pygeodesy.equirectangular4}.

144

145 @return: 3-Tuple C{(distance2, delta_lat, delta_lon)}.

146 '''

147 return tuple(_MODS.formy.equirectangular4(lat1, lon1, lat2, lon2, **options)[:3])

148

149

150@deprecated_function

151 def excessAbc(A, b, c): # PYCHOK no cover

152 '''DEPRECATED on 2023.04.04, use function L{pygeodesy.excessAbc_}.'''

153 return _MODS.formy.excessAbc_(A, b, c)

154

155

156@deprecated_function

157 def excessGirard(A, B, C): # PYCHOK no cover

158 '''DEPRECATED on 2023.04.04, use function L{pygeodesy.excessGirard_}.'''

159 return _MODS.formy.excessGirard_(A, B, C)

160

161

162@deprecated_function

163 def excessLHuilier(a, b, c): # PYCHOK no cover

164 '''DEPRECATED on 2023.04.04, use function L{pygeodesy.excessLHuilier_}.'''

165 return _MODS.formy.excessLHuilier_(a, b, c)

166

167

168@deprecated_function

169 def false2f(value, name=_value_, false=True, Error=ValueError): # PYCHOK no cover

170 '''DEPRECATED, use class L{Easting} or L{Northing}.'''

171 return falsed2f(falsed=false, Error=Error, **{name: value})

172

173

174@deprecated_function

175 def falsed2f(falsed=True, Error=ValueError, **name_value): # PYCHOK no cover

176 '''DEPRECATED, use class L{Easting} or L{Northing}.

177

178 Convert a falsed east-/northing to non-negative C{float}.

179

180 @kwarg falsed: Value includes false origin (C{bool}).

181 @kwarg Error: Optional, overriding error (C{Exception}).

182 @kwarg name_value: One C{B{name}=value} pair.

183

184 @return: The value (C{float}).

185

186 @raise Error: Invalid or negative C{B{name}=value}.

187 '''

188 t = NN

189 if len(name_value) == 1:

190 try:

191 for f in name_value.values():

192 f = float(f)

193 if falsed and f < 0:

194 break

195 return f

196 t = _COMMASPACE_('falsed', _negative_)

197 except (TypeError, ValueError) as x:

198 t = str(x)

199 raise _MODS.errors._InvalidError(Error=Error, txt=t, **name_value)

200

201

202@deprecated_function

203 def float0(*xs): # PYCHOK no cover

204 '''DEPRECATED on 2023.04.21, use function L{pygeodesy.float0_}.'''

205 return float0_(*xs)

206

207

208@deprecated_function

209 def fStr(floats, prec=6, fmt=_MODS.streprs.Fmt.f, ints=False, sep=_COMMASPACE_): # PYCHOK no cover

210 '''DEPRECATED, use function L{fstr}.'''

211 return _MODS.streprs.fstr(floats, prec=prec, fmt=fmt, ints=ints, sep=sep)

212

213

214@deprecated_function

215 def fStrzs(floatstr): # PYCHOK no cover

216 '''DEPRECATED, use function L{pygeodesy.fstrzs}.'''

217 return _MODS.streprs.fstrzs(floatstr)

218

219

220@deprecated_function

221 def Fsum2product(*xs, **kwds):

222 '''DEPRECATED on 2024.09.19, use L{Fsum}C{(*B{xs}, B{f2product}=True, ...)}.'''

223 F = _MODS.fsums.Fsum(**kwds)

224 _ = F.f2product(True)

225 return F._facc_args(xs, up=False) if xs else F

226

227

228@deprecated_function

229 def hypot3(x, y, z): # PYCHOK no cover

230 '''DEPRECATED, use function L{pygeodesy.hypot_}.'''

231 return _MODS.fmath.hypot_(x, y, z)

232

233

234@deprecated_function

235 def inStr(inst, *args, **kwds): # PYCHOK no cover

236 '''DEPRECATED, use function L{pygeodesy.instr}.'''

237 return _MODS.streprs.instr(inst, *args, **kwds)

238

239

240@deprecated_function

241 def isenclosedby(point, points, wrap=False): # PYCHOK no cover

242 '''DEPRECATED, use function L{pygeodesy.isenclosedBy}.'''

243 return _MODS.points.isenclosedBy(point, points, wrap=wrap)

244

245

246@deprecated_function

247 def istuplist(obj, minum=0): # PYCHOK no cover

248 '''DEPRECATED on 2023.03.31, use function L{pygeodesy.islistuple}.'''

249 return _MODS.basics.islistuple(obj, minum=minum)

250

251

252@deprecated_function

253 def joined(*words, **sep): # PYCHOK no cover

254 '''DEPRECATED, use C{NN(...)}, C{NN.join_} or C{B{sep}.join}.'''

255 return sep.get(_sep_, NN).join(map(str, words))

256

257

258@deprecated_function

259 def joined_(*words, **sep): # PYCHOK no cover

260 '''DEPRECATED, use C{_SPACE_(...)}, C{_SPACE_.join_} or C{B{sep}.join}, sep=" ".'''

261 return sep.get(_sep_, _SPACE_).join(map(str, words))

262

263

264@deprecated_function

265 def nearestOn3(point, points, closed=False, wrap=False, **options): # PYCHOK no cover

266 '''DEPRECATED, use function L{pygeodesy.nearestOn5}.

267

268 @return: 3-Tuple C{(lat, lon, distance)}

269 '''

270 return tuple(_MODS.points.nearestOn5(point, points, closed=closed, wrap=wrap, **options)[:3])

271

272

273@deprecated_function

274 def nearestOn4(point, points, closed=False, wrap=False, **options): # PYCHOK no cover

275 '''DEPRECATED, use function L{pygeodesy.nearestOn5}.

276

277 @return: 4-Tuple C{(lat, lon, distance, angle)}

278 '''

279 return tuple(_MODS.points.nearestOn5(point, points, closed=closed, wrap=wrap, **options)[:4])

280

281

282@deprecated_function

283 def parseUTM(strUTM, datum=_WGS84, Utm=_UTM, name=NN): # PYCHOK no cover

284 '''DEPRECATED, use function L{parseUTM5}.

285

286 @return: The UTM coordinate (B{L{Utm}}) or 4-tuple C{(zone,

287 hemisphere, easting, northing)} if C{B{Utm} is None}.

288 '''

289 d = _MODS.datums.Datums.WGS84 if datum is _WGS84 else datum # PYCHOK shadows?

290 U = _MODS.utm.Utm if Utm is _UTM else Utm

291 r = _MODS.utm.parseUTM5(strUTM, datum=d, Utm=U, name=name)

292 if isinstance(r, tuple): # UtmUps5Tuple

293 r = r.zone, r.hemipole, r.easting, r.northing # no band

294 return r

295

296

297@deprecated_function

298 def perimeterof(points, closed=False, adjust=True, radius=R_M, wrap=True): # PYCHOK no cover

299 '''DEPRECATED, use function L{pygeodesy.perimeterOf}.'''

300 return _MODS.points.perimeterOf(points, closed=closed, adjust=adjust, radius=radius, wrap=wrap)

301

302

303@deprecated_function

304 def polygon(points, closed=True, base=None): # PYCHOK no cover

305 '''DEPRECATED, use function L{pygeodesy.points2}.'''

306 return _MODS.deprecated.bases.points2(points, closed=closed, base=base)

307

308

309@deprecated_function

310 def scalar(value, low=EPS, high=1.0, name=_scalar_, Error=ValueError): # PYCHOK no cover

311 '''DEPRECATED, use class L{Number_} or L{Scalar_}.

312

313 @return: New value (C{float} or C{int} for C{int} B{C{low}}).

314

315 @raise Error: Invalid B{C{value}}.

316 '''

317 C_ = Number_ if _MODS.basics.isint(low) else Scalar_

318 return C_(value, name=name, Error=Error, low=low, high=high)

319

320

321@deprecated_function

322 def simplify2(points, pipe=_1mm, **radius_shortest_indices_options): # PYCHOK no cover

323 '''DEPRECATED, use function L{pygeodesy.simplifyRW}.'''

324 return _MODS.simplify.simplifyRW(points, pipe=pipe, **radius_shortest_indices_options)

325

326

327@deprecated_function

328 def simplifyRDPm(points, distance=_1mm, **radius_shortest_indices_options):

329 '''DEPRECATED on 2024.11.28, use function L{pygeodesy.simplifyRDP}C{(points, modified=True, ...)}.'''

330 return _MODS.simplify.simplifyRDP(points, modified=True, distance=distance, **radius_shortest_indices_options)

331

332

333@deprecated_function

334 def simplifyVWm(points, area=_1mm, **radius_attr_indices_options):

335 '''DEPRECATED on 2024.11.28, use function L{pygeodesy.simplifyVW}C{(points, modified=True, ...)}.'''

336 return _MODS.simplify.simplifyVW(points, modified=True, area=area, **radius_attr_indices_options)

337

338

339@deprecated_function

340 def tienstra(pointA, pointB, pointC, alpha, **beta_gamma_useZ_Clas_and_kwds):

341 '''DEPRECATED, use function L{pygeodesy.tienstra7}.'''

342 return _MODS.resections.tienstra7(pointA, pointB, pointC, alpha, **beta_gamma_useZ_Clas_and_kwds)

343

344

345@deprecated_function

346 def toUtm(latlon, lon=None, datum=None, Utm=_UTM, cmoff=True, name=NN): # PYCHOK no cover

347 '''DEPRECATED, use function L{pygeodesy.toUtm8}.

348

349 @return: The UTM coordinate (B{C{Utm}}) or a 6-tuple C{(zone, easting, northing,

350 band, convergence, scale)} if C{B{Utm} is None} or C{B{cmoff} is False}.

351 '''

352 U = _MODS.utm.Utm if Utm is _UTM else Utm

353 r = _MODS.utm.toUtm8(latlon, lon=lon, datum=datum, Utm=U, name=name, falsed=cmoff)

354 if isinstance(r, tuple): # UtmUps8Tuple

355 # no hemisphere/pole and datum

356 r = r.zone, r.easting, r.northing, r.band, r.gamma, r.scale

357 return r

358

359

360# @deprecated_function

361# def trfTransforms(reframe, epoch, reframe2, epoch2):

362# '''DEPRECATED on 2024.02.02, use function L{trfTransform0}C{(reframe, reframe2, epoch=None, epoch2=None)}.

363#

364# @return: A 0-, 1- or 2-tuple of Helmert L{Transform}s or C{None} if no conversion exists.

365# '''

366# t = _MODS.trf.trfTransform0(reframe, reframe2, epoch=epoch, epoch2=epoch2)

367# return (t,) if t else t

368

369

370@deprecated_function

371 def triAngle4(a, b, c):

372 '''DEPRECATED on 2023.09.14, use function L{pygeodesy.triAngle5}.

373

374 @return: A I{DEPRECATED} L{TriAngle4Tuple}C{(radA, radB, radC, rIn)}.

375 '''

376 assert _TriAngle5Tuple._Names_.index(_area_) == 4

377 return TriAngle4Tuple(_MODS.resections.triAngle5(a, b, c)[:4])

378

379

380@deprecated_function

381 def unsign0(x): # PYCHOK no cover

382 '''DEPRECATED, use function L{pygeodesy.unsigned0}.'''

383 return _MODS.basics.unsigned0(x)

384

385

386@deprecated_function

387 def unStr(name, *args, **kwds): # PYCHOK no cover

388 '''DEPRECATED, use function L{pygeodesy.unstr}.'''

389 return _MODS.streprs.unstr(name, *args, **kwds)

390

391

392@deprecated_function

393 def utmZoneBand2(lat, lon): # PYCHOK no cover

394 '''DEPRECATED, use function L{pygeodesy.utmZoneBand5}.

395

396 @return: 2-Tuple C{(zone, band)}.

397 '''

398 r = _MODS.utm.utmZoneBand5(lat, lon) # UtmUpsLatLon5Tuple

399 return r.zone, r.band

400

401# **) MIT License

402#

403# Copyright (C) 2018-2025 -- mrJean1 at Gmail -- All Rights Reserved.

404#

405# Permission is hereby granted, free of charge, to any person obtaining a

406# copy of this software and associated documentation files (the "Software"),

407# to deal in the Software without restriction, including without limitation

408# the rights to use, copy, modify, merge, publish, distribute, sublicense,

409# and/or sell copies of the Software, and to permit persons to whom the

410# Software is furnished to do so, subject to the following conditions:

411#

412# The above copyright notice and this permission notice shall be included

413# in all copies or substantial portions of the Software.

414#

415# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS

416# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

417# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL

418# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR

419# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,

420# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR

421# OTHER DEALINGS IN THE SOFTWARE.