Skip to content

Commit 3d886bf

Browse files
committed
vincenty: no squeeze outputs
1 parent a50c9ec commit 3d886bf

2 files changed

Lines changed: 36 additions & 54 deletions

File tree

src/pymap3d/timeconv.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
from ._typing import DatetimeArray, DatetimeLike
88

9-
109
__all__ = ["str2dt"]
1110

1211

src/pymap3d/vincenty.py

Lines changed: 36 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -6,30 +6,18 @@
66

77
import warnings
88

9+
from ._typing import FloatArray, FloatLike
910
import logging
1011
from copy import copy
11-
from math import nan, pi, tau
1212

1313
from .ellipsoid import Ellipsoid, resolve_ellipsoid
14-
from .mathfun import (
15-
asin,
16-
atan,
17-
atan2,
18-
cos,
19-
degrees,
20-
isnan,
21-
linspace,
22-
radians,
23-
sign,
24-
sin,
25-
sqrt,
26-
tan,
27-
)
14+
from .mathfun import isnan, linspace, degrees, radians, sign, sqrt, atan2, cos, sin, tan, asin, atan
15+
from math import pi, tau, nan
2816

2917
__all__ = ["vdist", "vreckon", "track2"]
3018

3119

32-
def vdist(Lat1, Lon1, Lat2, Lon2, ell: Ellipsoid | None = None, deg: bool = True) -> tuple:
20+
def vdist(lat1, lon1, lat2, lon2, ell: Ellipsoid | None = None, deg: bool = True) -> tuple:
3321
"""
3422
Using the reference ellipsoid, compute the distance between two points
3523
within a few millimeters of accuracy, compute forward azimuth,
@@ -43,13 +31,13 @@ def vdist(Lat1, Lon1, Lat2, Lon2, ell: Ellipsoid | None = None, deg: bool = True
4331
Parameters
4432
----------
4533
46-
Lat1 : float
34+
lat1 : float
4735
Geodetic latitude of first point (degrees)
48-
Lon1 : float
36+
lon1 : float
4937
Geodetic longitude of first point (degrees)
50-
Lat2 : float
38+
lat2 : float
5139
Geodetic latitude of second point (degrees)
52-
Lon2 : float
40+
lon2 : float
5341
Geodetic longitude of second point (degrees)
5442
ell : Ellipsoid, optional
5543
reference ellipsoid
@@ -108,13 +96,10 @@ def vdist(Lat1, Lon1, Lat2, Lon2, ell: Ellipsoid | None = None, deg: bool = True
10896
f = ell.flattening
10997

11098
if deg:
111-
Lat1 = radians(Lat1)
112-
Lon1 = radians(Lon1)
113-
Lat2 = radians(Lat2)
114-
Lon2 = radians(Lon2)
115-
116-
# keep old variable names in case someone is using them
117-
lat1, lon1, lat2, lon2 = Lat1, Lon1, Lat2, Lon2
99+
lat1 = radians(lat1)
100+
lon1 = radians(lon1)
101+
lat2 = radians(lat2)
102+
lon2 = radians(lon2)
118103

119104
try:
120105
if (abs(lat1) > pi / 2).any() | (abs(lat2) > pi / 2).any():
@@ -264,13 +249,17 @@ def vdist(Lat1, Lon1, Lat2, Lon2, ell: Ellipsoid | None = None, deg: bool = True
264249
if deg:
265250
a12 = degrees(a12)
266251

267-
try:
268-
return dist_m.squeeze()[()], a12.squeeze()[()]
269-
except AttributeError:
270-
return dist_m, a12
252+
return dist_m, a12
271253

272254

273-
def vreckon(Lat1, Lon1, Rng, Azim, ell: Ellipsoid | None = None, deg: bool = True) -> tuple:
255+
def vreckon(
256+
lat1,
257+
lon1,
258+
rng,
259+
azim,
260+
ell: Ellipsoid | None = None,
261+
deg: bool = True,
262+
) -> tuple:
274263
"""
275264
This is the Vincenty "forward" solution.
276265
@@ -285,13 +274,13 @@ def vreckon(Lat1, Lon1, Rng, Azim, ell: Ellipsoid | None = None, deg: bool = Tru
285274
Parameters
286275
----------
287276
288-
Lat1 : float
277+
lat1 : float
289278
inital geodetic latitude (degrees)
290-
Lon1 : float
279+
lon1 : float
291280
initial geodetic longitude (degrees)
292-
Rng : float
281+
rng : float
293282
ground distance (meters)
294-
Azim : float
283+
azim : float
295284
intial azimuth (degrees) clockwide from north.
296285
ell : Ellipsoid, optional
297286
reference ellipsoid
@@ -301,9 +290,9 @@ def vreckon(Lat1, Lon1, Rng, Azim, ell: Ellipsoid | None = None, deg: bool = Tru
301290
Results
302291
-------
303292
304-
Lat2 : float
293+
lat2 : float
305294
final geodetic latitude (degrees)
306-
Lon2 : float
295+
lon2 : float
307296
final geodetic longitude (degrees)
308297
309298
@@ -331,10 +320,10 @@ def vreckon(Lat1, Lon1, Rng, Azim, ell: Ellipsoid | None = None, deg: bool = Tru
331320
"""
332321

333322
try:
334-
if (Rng < 0.0).any():
323+
if (rng < 0.0).any():
335324
raise ValueError("Ground distance must be positive")
336325
except AttributeError:
337-
if Rng < 0.0:
326+
if rng < 0.0:
338327
raise ValueError("Ground distance must be positive")
339328

340329
ell = resolve_ellipsoid(ell)
@@ -344,12 +333,9 @@ def vreckon(Lat1, Lon1, Rng, Azim, ell: Ellipsoid | None = None, deg: bool = Tru
344333
f = ell.flattening
345334

346335
if deg:
347-
Lat1 = radians(Lat1) # intial latitude in radians
348-
Lon1 = radians(Lon1) # intial longitude in radians
349-
Azim = radians(Azim)
350-
351-
# in case someone is using the old variable names
352-
lat1, lon1 = Lat1, Lon1
336+
lat1 = radians(lat1) # intial latitude in radians
337+
lon1 = radians(lon1) # intial longitude in radians
338+
azim = radians(azim)
353339

354340
try:
355341
if (abs(lat1) > pi / 2).any():
@@ -366,7 +352,7 @@ def vreckon(Lat1, Lon1, Rng, Azim, ell: Ellipsoid | None = None, deg: bool = Tru
366352
if abs(pi / 2 - abs(lat1)) < 1e-10:
367353
lat1 = sign(lat1) * (pi / 2 - (1e-10))
368354

369-
alpha1 = Azim # inital azimuth in radians
355+
alpha1 = azim # inital azimuth in radians
370356
sinAlpha1 = sin(alpha1)
371357
cosAlpha1 = cos(alpha1)
372358

@@ -380,7 +366,7 @@ def vreckon(Lat1, Lon1, Rng, Azim, ell: Ellipsoid | None = None, deg: bool = Tru
380366
A = 1 + uSq / 16384 * (4096 + uSq * (-768 + uSq * (320 - 175 * uSq)))
381367
B = uSq / 1024 * (256 + uSq * (-128 + uSq * (74 - 47 * uSq)))
382368

383-
sigma = Rng / (b * A)
369+
sigma = rng / (b * A)
384370
sigmaP = 2 * pi
385371

386372
sinSigma = nan
@@ -414,7 +400,7 @@ def vreckon(Lat1, Lon1, Rng, Azim, ell: Ellipsoid | None = None, deg: bool = Tru
414400
)
415401
)
416402
sigmaP = sigma
417-
sigma = Rng / (b * A) + deltaSigma
403+
sigma = rng / (b * A) + deltaSigma
418404
try:
419405
i = (abs(sigma - sigmaP) > 1e-12).any()
420406
except AttributeError:
@@ -448,10 +434,7 @@ def vreckon(Lat1, Lon1, Rng, Azim, ell: Ellipsoid | None = None, deg: bool = Tru
448434
lat2 = degrees(lat2)
449435
lon2 = degrees(lon2)
450436

451-
try:
452-
return lat2.squeeze()[()], lon2.squeeze()[()]
453-
except AttributeError:
454-
return lat2, lon2
437+
return lat2, lon2
455438

456439

457440
def track2(

0 commit comments

Comments
 (0)