Module etm
Classes ETMError and Etm, a pure Python implementation of Charles
Karney's C++ class TransverseMercatorExact, abbreviated as
TMExact
below.
Python class ExactTransverseMercator implements the Exact
Transverse Mercator
(ETM) projection. Instances of class Etm represent ETM
easting, nothing
locations.
Following is a copy of Karney's TransverseMercatorExact.hpp file
Header
.
Copyright (C) Charles Karney (2008-2017) and licensed under the
MIT/X11 License. For more information, see the GeographicLib documentation.
The method entails using the Thompson Transverse Mercator
as an intermediate projection. The projections from the intermediate
coordinates to phi, lam
and x, y
are given by
elliptic functions. The inverse of these projections are found by
Newton's method with a suitable starting guess.
The relevant section of L.P. Lee's paper Conformal Projections Based On Jacobian Elliptic
Functions is part V, pp 67--101. The C++ implementation and notation
closely follow Lee, with the following exceptions:
Lee here Description
x/a xi Northing (unit Earth)
y/a eta Easting (unit Earth)
s/a sigma xi + i * eta
y x Easting
x y Northing
k e Eccentricity
k^2 mu Elliptic function parameter
k'^2 mv Elliptic function complementary parameter
m k Scale
zeta zeta Complex longitude = Mercator = chi in paper
s sigma Complex GK = zeta in paper
Minor alterations have been made in some of Lee's expressions in an
attempt to control round-off. For example, atanh(sin(phi))
is replaced by asinh(tan(phi))
which maintains accuracy near
phi = pi/2
. Such changes are noted in the code.
|
ETMError
Exact Transverse Mercator (ETM) parse, projection or other Etm issue.
|
|
Etm
Exact Transverse Mercator (ETM) coordinate, a sub-class of Utm, a
Universal Transverse Mercator (UTM) coordinate using the ExactTransverseMercator projection for highest
accuracy.
|
|
ExactTransverseMercator
A Python version of Karney's TransverseMercatorExact C++ class, a numerically
exact transverse mercator projection, referred to as
TMExact here.
|
|
parseETM5(strUTM,
datum=Datum(name='WGS84', ellipsoid=Ellipsoids.WGS84, transform=Tran... ,
Etm=<class 'pygeodesy.etm.Etm'>,
falsed=True,
name='
' )
Parse a string representing a UTM coordinate, consisting of
"zone[band] hemisphere easting northing" . |
|
|
|
toEtm8(latlon,
lon=None,
datum=None,
Etm=<class 'pygeodesy.etm.Etm'>,
falsed=True,
name='
' ,
zone=None,
**cmoff)
Convert a lat-/longitude point to an ETM coordinate. |
|
|
parseETM5(strUTM,
datum=Datum(name='WGS84', ellipsoid=Ellipsoids.WGS84, transform=Tran... ,
Etm=<class 'pygeodesy.etm.Etm'>,
falsed=True,
name='
' )
|
|
Parse a string representing a UTM coordinate, consisting of
"zone[band] hemisphere easting northing" .
- Parameters:
strUTM - A UTM coordinate (str ).
datum - Optional datum to use (Datum).
Etm - Optional (sub-)class to return the UTM coordinate (Etm) or
None .
falsed - Both easting and northing are falsed (bool ).
name - Optional Etm name (str ).
- Returns:
- The UTM coordinate (
Etm ) or a UtmUps5Tuple(zone, hemipole, easting,
northing, band) if Etm is
None . The hemipole is the hemisphere
'N'|'S' .
- Raises:
Example:
>>> u = parseETM5('31 N 448251 5411932')
>>> u.toStr2()
>>> u = parseETM5('31 N 448251.8 5411932.7')
>>> u.toStr()
|
toEtm8(latlon,
lon=None,
datum=None,
Etm=<class 'pygeodesy.etm.Etm'>,
falsed=True,
name='
' ,
zone=None,
**cmoff)
|
|
Convert a lat-/longitude point to an ETM coordinate.
- Parameters:
latlon - Latitude (degrees ) or an (ellipsoidal) geodetic
LatLon point.
lon - Optional longitude (degrees ) or None .
datum - Optional datum for this ETM coordinate, overriding
latlon 's datum (Datum ).
Etm - Optional (sub-)class to return the ETM coordinate (Etm) or
None .
falsed - False both easting and northing (bool ).
name - Optional Utm name (str ).
zone - Optional UTM zone to enforce (int or
str ).
cmoff - DEPRECATED, use falsed . Offset longitude
from the zone's central meridian (bool ).
- Returns:
- The ETM coordinate (
Etm ) or a UtmUps8Tuple(zone, hemipole, easting,
northing, band, datum, convergence, scale) if
Etm is None or not
falsed . The hemipole is the
'N'|'S' hemisphere.
- Raises:
EllipticError - No convergence.
ETMError - Invalid zone .
TypeError - If latlon is not ellipsoidal.
RangeError - If lat outside the valid UTM bands or if
lat or lon outside the
valid range and rangerrors set to True .
ValueError - If lon value is missing or if
latlon is invalid.
|