1

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

3

4 u'''DEPRECATED functions for export and 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_, _DEPRECATED_, _negative_, \

10 _scalar_, _sep_, _SPACE_, _UNDER_, _value_

11 from pygeodesy.lazily import _ALL_MODS as _MODS, _ALL_OTHER

12 from pygeodesy.props import deprecated_function

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

14 from pygeodesy.units import Number_, Scalar_

15

16__all__ = ()

17__version__ = '23.09.28'

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):

36 '''DEPRECATED, 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)} as B{C{LatLon}}

45 or 4-Tuple C{(latS, lonW, latN, lonE)} if

46 B{C{LatLon}} is C{None}.

47 '''

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

49

50

51@deprecated_function

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

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

54

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

56 edge of the I{clipped} path.

57 '''

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

59 closed=closed, inull=inull):

60 yield ClipCS3Tuple(p1, p2, j)

61

62

63@deprecated_function

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

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

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

67

68

69@deprecated_function

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

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

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

73

74

75@deprecated_function

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

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

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

79 **useZ_Clas_and_kwds)

80

81

82@deprecated_function

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

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

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

86

87

88@deprecated_function

89 def decodeEPSG2(arg): # PYCHOK no cover

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

91

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

93 '''

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

95

96

97@deprecated_function

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

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

100

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

102 '''

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

104

105

106@deprecated_function

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

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

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

110

111

112@deprecated_function

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

114 '''DEPRECATED, use function L{pygeodesy.equirectangular_}.

115

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

117 '''

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

119

120

121@deprecated_function

122 def excessAbc(A, b, c):

123 '''DEPRECATED, use function L{pygeodesy.excessAbc_}.'''

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

125

126

127@deprecated_function

128 def excessGirard(A, B, C):

129 '''DEPRECATED, use function L{pygeodesy.excessGirard_}.'''

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

131

132

133@deprecated_function

134 def excessLHuilier(a, b, c):

135 '''DEPRECATED, use function L{pygeodesy.excessLHuilier_}.'''

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

137

138

139@deprecated_function

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

141 '''DEPRECATED, use function L{pygeodesy.falsed2f}.'''

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

143

144

145@deprecated_function

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

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

148

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

150

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

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

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

154

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

156

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

158 '''

159 t = NN

160 if len(name_value) == 1:

161 try:

162 for f in name_value.values():

163 f = float(f)

164 if falsed and f < 0:

165 break

166 return f

167 t = _COMMASPACE_('falsed', _negative_)

168 except (TypeError, ValueError) as x:

169 t = str(x)

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

171

172

173@deprecated_function

174 def float0(*xs):

175 '''DEPRECATED, use function L{pygeodesy.float0_}.'''

176 return float0_(*xs)

177

178

179@deprecated_function

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

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

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

183

184

185@deprecated_function

186 def fStrzs(floatstr): # PYCHOK no cover

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

188 return _MODS.streprs.fstrzs(floatstr)

189

190

191@deprecated_function

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

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

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

195

196

197@deprecated_function

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

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

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

201

202

203 def isDEPRECATED(obj):

204 '''Return C{True} if C{B{obj}} is a C{DEPRECATED} class, method

205 or function, C{False} if not or C{None} if undetermined.

206 '''

207 try: # XXX inspect.getdoc(obj)

208 return bool(obj.__doc__.lstrip().startswith(_DEPRECATED_))

209 except AttributeError:

210 return None

211

212

213@deprecated_function

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

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

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

217

218

219@deprecated_function

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

221 '''DEPRECATED, use function L{pygeodesy.islistuple}.'''

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

223

224

225@deprecated_function

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

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

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

229

230

231@deprecated_function

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

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

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

235

236

237@deprecated_function

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

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

240

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

242 '''

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

244

245

246@deprecated_function

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

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

249

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

251 '''

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

253

254

255@deprecated_function

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

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

258

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

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

261 '''

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

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

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

265 if isinstance(r, tuple): # UtmUps5Tuple

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

267 return r

268

269

270@deprecated_function

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

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

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

274

275

276@deprecated_function

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

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

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

280

281

282@deprecated_function

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

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

285

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

287

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

289 '''

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

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

292

293

294@deprecated_function

295 def simplify2(points, pipe, radius=R_M, shortest=False, indices=False, **options): # PYCHOK no cover

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

297 '''

298 return _MODS.simplify.simplifyRW(points, pipe, radius=radius, shortest=shortest,

299 indices=indices, **options)

300

301

302@deprecated_function

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

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

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

306

307

308@deprecated_function

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

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

311

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

313 easting, northing, band, convergence, scale)} if

314 B{C{Utm}} is C{None} or B{C{cmoff}} is C{False}.

315 '''

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

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

318 if isinstance(r, tuple): # UtmUps8Tuple

319 # no hemisphere/pole and datum

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

321 return r

322

323

324@deprecated_function

325 def triAngle4(a, b, c):

326 '''DEPRECATED, use function L{pygeodesy.triAngle5}.

327

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

329 '''

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

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

332

333

334@deprecated_function

335 def unsign0(x): # PYCHOK no cover

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

337 return _MODS.basics.unsigned0(x)

338

339

340@deprecated_function

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

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

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

344

345

346@deprecated_function

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

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

349

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

351 '''

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

353 return r.zone, r.band

354

355

356__all__ += _ALL_OTHER(anStr, areaof, atand, bounds,

357 clipCS3, clipDMS, clipStr, collins, copysign,

358 decodeEPSG2, enStr2, encodeEPSG, equirectangular3,

359 excessAbc, excessGirard, excessLHuilier,

360 false2f, falsed2f, float0, fStr, fStrzs,

361 hypot3, inStr, isDEPRECATED, isenclosedby, istuplist,

362 joined, joined_, nearestOn3, nearestOn4,

363 parseUTM, perimeterof, polygon, scalar, simplify2,

364 tienstra, toUtm, triAngle4, unsign0, unStr, utmZoneBand2)

365

366# **) MIT License

367#

368# Copyright (C) 2018-2023 -- mrJean1 at Gmail -- All Rights Reserved.

369#

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

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

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

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

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

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

376#

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

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

379#

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

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

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

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

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

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

386# OTHER DEALINGS IN THE SOFTWARE.