pygeodesy.geoids.GeoidPGM

Package pygeodesy :: Module geoids :: Class GeoidPGM |
[frames] | no frames]

# Class GeoidPGM

          object --+
                   |
        named._Named --+
                       |
    heights._HeightNamed --+
                           |
         heights._HeightBase --+
                               |
                      _GeoidBase --+
                                   |
                                  GeoidPGM

Geoid height interpolator for Karney's GeographicLib Earth Gravitational Model (EGM) geoid egm*.pgm datasets but based on `SciPy` RectBivariateSpline, bisplrep/-ev or interp2d interpolation.

Use any of the egm84-, egm96- or egm2008-*.pgm datasets. However, unless cropped, an entire `egm*.pgm` dataset is loaded into the `SciPy` interpolator and converted from 2-byte `int` to 8-byte `dtype float64`. Therefore, internal memory usage is 4x the egm*.pgm file size and may exceed the available memory, especially with 32-bit Python, see properties `.nBytes` and `.sizeB`.

Instance Methods
__init__(self, egm_pgm, crop=None, datum=Datum(name='WGS84', ellipsoid=Ellipsoids.WGS84, transform=Tran`...`, kind=3, smooth=0, **name) New GeoidPGM interpolator. |
__call__(self, *llis, **wrap_H) Interpolate the geoid (or orthometric) height for one or more locations. |
height(self, lats, lons, **wrap) Interpolate the geoid height for one or several lat-/longitudes. |
Inherited from `_GeoidBase`: `__enter__`, `__exit__`, `__repr__`, `__str__`, `center`, `close`, `height_`, `highest`, `loweright`, `lowerleft`, `lowerright`, `lowest`, `outside`, `toStr`, `upperleft`, `upperright` Inherited from `named._Named`: `__format__`, `__imatmul__`, `__matmul__`, `__rmatmul__`, `attrs`, `classof`, `copy`, `dup`, `methodname`, `rename`, `renamed`, `toRepr`, `toStr2` Inherited from `object`: `__delattr__`, `__getattribute__`, `__hash__`, `__new__`, `__reduce__`, `__reduce_ex__`, `__setattr__`, `__sizeof__`, `__subclasshook__`

Properties
Inherited from `_GeoidBase`: `closed`, `cropped`, `dtype`, `endian`, `hits`, `kind`, `knots`, `mean`, `nBytes`, `name`, `pgm`, `sizeB`, `smooth`, `stdev`, `u2B` Inherited from `heights._HeightBase`: `numpy`, `scipy`, `scipy_interpolate` Inherited from `heights._HeightNamed`: `datum`, `kmin`, `wrap` Inherited from `named._Named`: `classname`, `classnaming`, `iteration`, `named`, `named2`, `named3`, `named4`, `sizeof`, `typename` Inherited from `object`: `__class__`

Method Details

### __init__ (self, egm_pgm, crop=None, datum=Datum(name='WGS84', ellipsoid=Ellipsoids.WGS84, transform=Tran`...`, kind=3, smooth=0, **name) (Constructor) |
New GeoidPGM interpolator. Arguments: `egm_pgm` - An EGM geoid dataset file name (`egm*.pgm`). `crop` - Optional box to crop `egm_pgm`, a 4-tuple (`south, west, north, east`) or 2-tuple (`(south, west), (north, east)`), in `degrees90` lat- and `degrees180` longitudes or a 2-tuple (`LatLonSW, LatLonNE`) of `LatLon` instances. `datum` - Optional grid datum (Datum, Ellipsoid, Ellipsoid2 or a_f2Tuple), overriding `WGS84`. `kind` - `scipy.interpolate` order (`int`), use 1..5 for RectBivariateSpline or -1, -3 or -5 for bisplrep/-ev or interp2d `linear`, `cubic` respectively `quintic`, see note for more details. `smooth` - Smoothing factor for `kind=1..5` only (`int`). `name` - Optional geoid `name=NN` (`str`). Raises: `GeoidError` - EGM dataset `egm_pgm` issue or invalid `crop`, `kind` or `smooth`. `ImportError` - Package `numpy` or `scipy` not found or not installed. `LenError` - EGM dataset `egm_pgm` axis mismatch. `SciPyError` - A `scipy` issue. `SciPyWarning` - A `scipy` warning as exception. `TypeError` - Invalid `datum` or unexpected argument. Overrides: object.__init__ Notes: Specify `kind=-1, -3 or -5` to use `scipy.interpolate.interp2d` before or `scipy.interpolate.bisplrep/-ev` since `Scipy` version 1.14. The GeographicLib egm*.pgm file sizes are based on a 2-byte `int` height converted to 8-byte `dtype float64` for `scipy` interpolators. Therefore, internal memory usage is 4 times the `egm*.pgm` file size and may exceed the available memory, especially with 32-bit Python. To reduce memory usage, set keyword argument `crop` to the region of interest. For example `crop=(20, -125, 50, -65)` covers the conterminous US (CONUS), less than 3% of the entire `egm2008-1.pgm` dataset. See Also: Class GeoidKarney and function egmGeoidHeights.

### __call__ (self, *llis, **wrap_H) (Call operator) |
Interpolate the geoid (or orthometric) height for one or more locations. Arguments: `llis` - One or several locations (each `LatLon`), all positional. `wrap_H` - Keyword arguments `wrap=False` (`bool`) and `H=False` (`bool`). Use `wrap=True` to wrap or normalize all `llis` locations. If `H is True`, return the orthometric height instead of the geoid height at each location. Returns: A single geoid (or orthometric) height (`float`) or a list or tuple of geoid (or orthometric) heights (each `float`). Raises: `GeoidError` - Insufficient number of `llis`, an invalid `lli` or the `egm*.pgm` geoid file is closed. `RangeError` - An `lli` is outside this geoid's lat- or longitude range. `SciPyError` - A `scipy` issue. `SciPyWarning` - A `scipy` warning as exception. Overrides: heights._HeightNamed.__call__ Note: To obtain orthometric heights, each `llis` location must have an ellipsoid `height` or `h` attribute, otherwise `height=0` is used. See Also: Function pygeodesy.heightOrthometric.

### height (self, lats, lons, **wrap) |
Interpolate the geoid height for one or several lat-/longitudes. Arguments: `lats` - Latitude or latitudes (each `degrees`). `lons` - Longitude or longitudes (each `degrees`). `wrap` - Use `wrap=True` to wrap or normalize all `lats` and `lons`. Returns: A single geoid height (`float`) or a list of geoid heights (each `float`). Raises: `GeoidError` - Insufficient or unequal number of `lats` and `lons`. `RangeError` - A `lat` or `lon` is outside this geoid's lat- or longitude range. `SciPyError` - A `scipy` issue. `SciPyWarning` - A `scipy` warning as exception. Overrides: heights._HeightNamed.height