• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

PyGeodesy.egg-info/H03-May-2022-281245

docs/H03-May-2022-323302

pygeodesy/H03-May-2022-61,23645,388

test/H03-May-2022-30,64227,110

testcoverage/H03-May-2022-377341

testresults/H03-May-2022-

MANIFEST.inH A D04-Jun-2021210 1110

PKG-INFOH A D17-Sep-202118.3 KiB281245

README.rstH A D15-Sep-202113.3 KiB254218

setup.cfgH A D17-Sep-202138 53

setup.pyH A D26-Aug-20217 KiB15193

testcoverage.rcH A D03-Sep-2021366 2217

README.rst

1
2=========
3PyGeodesy
4=========
5
6A pure Python implementation of ``geodesy`` tools for various ellipsoidal
7and spherical earth models using precision trigonometric, vector-based,
8exact, elliptic and approximate methods for geodetic (lat-/longitude) and
9geocentric (ECEF_ cartesian) coordinates.
10
11Transcoded from `JavaScript originals`_ by *Chris Veness (C) 2005-2019*
12and from several `C++ classes`_ by *Charles F.F. Karney (C) 2008-2021*
13and published under the same `MIT License`_.
14
15There are four modules for ellipsoidal earth models, *ellipsoidalExact*,
16*-Karney*, *-Vincenty* and *-Nvector* and two for spherical ones,
17*sphericalTrigonometry* and *-Nvector*.  Each module provides a geodetic
18LatLon_ and a geocentric Cartesian_ class with methods and functions to
19compute distance, surface area, perimeter, initial and final bearing,
20intermediate and nearest points, circle intersections, path intersections,
21trilateration (by intersection, by overlap and in 3d), conversions and
22unrolling, among other things.  For more information and further details
23see the documentation_, the descriptions of `Latitude/Longitude`_, Vincenty_
24and `Vector-based`_ geodesy, the original `JavaScript source`_ or docs_
25and *Karney*\'s Python geographiclib_ and `C++ GeographicLib`_.
26
27Also included are modules for conversions to and from `Cassini-Soldner`_,
28ECEF_ (Earth-Centered, Earth-Fixed cartesian), UPS_ (Universal Polar
29Stereographic), UTM_ (Exact_ and Universal Transverse Mercator) and
30`Web Mercator`_ (Pseudo-Mercator) coordinates, MGRS_ (NATO Military Grid
31Reference System) and OSGR_ (British Ordinance Survery Grid Reference) grid
32references, TRF_ (Terrestrial Reference Frames) and modules to encode and
33decode EPSG_, Geohashes_, `Georefs (WGRS)`_ and `Garefs (GARS)`_ .
34
35Other modules provide `Albers equal-area`_ projections, equidistant_
36and other *azimuthal* projections, Lambert *conformal conic* projections
37and positions, functions to clip a path or polygon of *LatLon* points
38using the `Cohen-Sutherland`_, the `Liang-Barsky`_ and the
39`Sutherland-Hodgman`_ methods, functions to simplify_ or linearize a
40path of *LatLon* points (or a `numpy array`_), including implementations
41of the `Ramer-Douglas-Peucker`_, the `Visvalingam-Whyatt`_ and the
42`Reumann-Witkam`_ algorithms and modified versions of the former.  Other
43classes interpolate_ the *height* of *LatLon* points and *Geoid* models
44or compute various Frechet_ or Hausdorff_ distances.
45
46Installation
47============
48
49To install PyGeodesy, type ``pip install PyGeodesy`` or ``easy_install
50PyGeodesy`` in a terminal or command window.
51
52Alternatively, download ``PyGeodesy-yy.m.d.zip`` from PyPI_ or GitHub_,
53``unzip`` the downloaded file, ``cd`` to directory ``PyGeodesy-yy.m.d``
54and type ``python[3] setup.py install``.
55
56To run all PyGeodesy tests, type ``python[3] setup.py test`` or type
57``python[3] test/run.py`` or type ``python[3] test/unitTestSuite.py``
58before or after installation.
59
60Dependencies
61============
62
63Installation of *Karney*\'s Python package geographiclib_ is optional,
64but required to use modules ``ellipsoidalKarney`` and ``css``, ``azimuthal``
65classes ``EquidistantKarney`` and ``GnomonicKarney`` and the
66``HeightIDWkarney`` interpolator.
67
68Both numpy_ and scipy_ must be installed for ``Geoid...`` and ``Height...``
69interpolators, except the ``HeigthIDW...`` ones.  Functions ``circin6``,
70``circum3``, ``circum4_``, ``soddy4`` and ``trilaterate3d2/-5`` and the
71corresponding ``Cartesian``, ``LatLon``, ``Nvector`` and ``Vector3d``
72methods require numpy_.
73
74Modules ``ellipsoidalGeodSolve`` and ``geodsolve`` and ``azimuthal``
75classes ``EquidistantGeodSolve`` and ``GnomonicGeodSolve`` depend
76on *Karney*\'s C++ utility GeodSolve_ to be executable.
77
78Documentation
79=============
80
81In addition to the ``pygeodesy`` package, the PyGeodesy_ `distribution
82files`_ contain the tests, the test results (on macOS only) and the
83complete documentation_ generated by Epydoc_ using command line:
84``epydoc --html --no-private --no-source --name=PyGeodesy --url=... -v
85pygeodesy``.
86
87Tests
88=====
89
90The tests have been run with Python 3.10.0rc1 (with geographiclib_ 1.52),
91Python 3.9.6 (with geographiclib_ 1.52 and numpy_ 1.21.2), Python 3.8.10
92(with geographiclib_ 1.52, GeodSolve_ 1.51, numpy_ 1.19.2 and scipy_ 1.5.2)
93and macOS\' Python 2.7.16 (with GeodSolve_ 1.51), all on macOS 11.6 Big
94Sur (aka 10.16) and in 64-bit only.  The tests are run with and without
95``lazy import`` for Python 3 and with command line option ``-W always``
96and environment variable ``PYGEODESY_WARNINGS=on`` for all Python versions.
97The results of only those tests are included in the distribution files.
98
99Python 3.10.0rc1, 3.9.6 and macOS\' Python 2.7.16 run on Apple Silicon
100(arm64), all other Python versions run on Intel (x86_64) or emulated
101Intel (\"arm64_x86_64\", see function ``machine``).
102
103Test coverage has been measured with coverage_ 4.5.4 using Python 3.9.6
104(with geographiclib_ 1.52 and numpy_ 1.21.2), Python 3.8.10 (with
105geographiclib_ 1.52, GeodSolve_ 1.51, numpy_ 1.19.2 and scipy_ 1.5.2) and
106macOS\' Python 2.7.16 (with GeodSolve_ 1.51).  The complete coverage report
107in HTML and a PDF summary are included in the distribution files.
108
109The tests also ran with Python 3.8.0, 3.7.1, 3.6.7, 2.7.15 and PyPy_
1107.1.1 (Python 3.6.1 and 2.7.13) (and geographiclib_ 1.52) on
111`Ubuntu 16.04`_ and with Python 3.9.1 (and geographiclib_ 1.52) on
112`Debian 9`_, all in 64-bit only and with Python 3.8.0, 3.7.5 and 2.7.17
113(all with geographiclib_ 1.52) on `Windows Server 2012R2`_ in both 64-
114and 32-bit.
115
116A single-File and single-Directory application with ``pygeodesy`` has
117been bundled using PyInstaller_ 3.4 and 64-bit Python 3.7.4 and 3.7.3
118on macOS 10.13.6 High Sierra.
119
120Previously, the tests were run with Python 3.9.0-5, 3.8.0-6, 3.7.2-6,
1213.7.0, 3.6.2-5, 3.5.3, 2.7.13-17, 2.7.10 and 2.6.9 (and numpy_ 1.19.0,
1221.16.5, 1.16.2, 1.15.2, 1.14.0, 1.13.1, 1.8.0rc1 or 1.6.2 and scipy_
1231.5.0), PyPy_ 7.3.0 (Python 2.7.13 and 3.6.9), PyPy_ 6.0.0 (Python 2.7.13
124and 3.5.3) and `Intel-Python`_ 3.5.3 (and numpy_ 1.11.3) on macOS 11.0-5.2
125Big Sur (aka 10.16), 10.15.3, 10.15.5-7 Catalina, macOS 10.14 Mojave,
126macOS 10.13.6 High Sierra, macOS 10.12 Sierra, MacOS X 10.11 El Capitan
127and/or MacOS X 10.10 Yosemite, with Pythonista_ 3.2 (with geographiclib
1281.50 or 1.49 and numpy 1.8.0) on iOS 14.4.2, 11.4.1, 12.0-3 on iPad4,
129iPhone6 and/or iPhone10, with Pythonista_ 3.1 on iOS 10.3.3, 11.0.3, 11.1.2
130and 11.3 on iPad4, all in 64-bit only and with 32-bit Python 2.7.14 on
131Windows 10 Pro and 32-bit Python 2.6.6 on Windows XP SP3.
132
133Notes
134=====
135
136All Python source code has been statically checked_ with PyChecker_,
137PyFlakes_, PyCodeStyle_ (formerly Pep8) and McCabe_ using Python 2.7.18
138and with Flake8_ using Python 3.10.0rc1, both in 64-bit on macOS 11.6
139Big Sur (aka 10.16).
140
141For a summary of all *Karney*-based functionality in ``pygeodesy``, see
142module karney_.
143
144Some function and method names differ from the JavaScript version.  In such
145cases documentation tag **JS name:** shows the original JavaScript name.
146
147*Last updated: Sep 16, 2021.*
148
149License
150=======
151
152``Copyright (C) 2016-2021 -- mrJean1 at Gmail -- All Rights Reserved.``
153
154``Permission is hereby granted, free of charge, to any person obtaining a
155copy of this software and associated documentation files (the "Software"),
156to deal in the Software without restriction, including without limitation
157the rights to use, copy, modify, merge, publish, distribute, sublicense,
158and/or sell copies of the Software, and to permit persons to whom the
159Software is furnished to do so, subject to the following conditions:``
160
161``The above copyright notice and this permission notice shall be included
162in all copies or substantial portions of the Software.``
163
164``THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
165OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
166FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
167THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
168OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
169ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
170OTHER DEALINGS IN THE SOFTWARE.``
171
172.. image:: https://Img.Shields.io/pypi/pyversions/PyGeodesy.svg?label=Python
173  :target: https://PyPI.org/project/PyGeodesy
174.. image:: https://Img.Shields.io/appveyor/ci/mrJean1/PyGeodesy.svg?branch=master&label=AppVeyor
175  :target: https://CI.AppVeyor.com/project/mrJean1/PyGeodesy/branch/master
176.. image:: https://Img.Shields.io/cirrus/github/mrJean1/PyGeodesy?branch=master&label=Cirrus
177  :target: https://Cirrus-CI.com/github/mrJean1/PyGeodesy
178.. image:: https://Img.Shields.io/travis/mrJean1/PyGeodesy.svg?branch=master&label=Travis
179  :target: https://Travis-CI.com/mrJean1/PyGeodesy
180.. image:: https://Img.Shields.io/badge/coverage-96%25-brightgreen
181  :target: https://GitHub.com/mrJean1/PyGeodesy/blob/master/testcoverage.pdf
182.. image:: https://Img.Shields.io/pypi/v/PyGeodesy.svg?label=PyPI
183  :target: https://PyPI.org/project/PyGeodesy
184.. image:: https://Img.Shields.io/pypi/wheel/PyGeodesy.svg
185  :target: https://PyPI.org/project/PyGeodesy/#files
186.. image:: https://img.shields.io/pypi/dm/PyGeodesy
187  :target: https://PyPI.org/project/PyGeodesy
188.. image:: https://Img.Shields.io/pypi/l/PyGeodesy.svg
189  :target: https://PyPI.org/project/PyGeodesy
190
191.. _Albers equal-area: https://GeographicLib.SourceForge.io/html/classGeographicLib_1_1AlbersEqualArea.html
192.. _C++ classes: https://GeographicLib.SourceForge.io/html/annotated.html
193.. _C++ GeographicLib: https://GeographicLib.SourceForge.io/html/index.html
194.. _Cartesian: https://mrJean1.GitHub.io/PyGeodesy/docs/pygeodesy-Cartesian-attributes-table.html
195.. _Cassini-Soldner: https://GeographicLib.SourceForge.io/html/classGeographicLib_1_1CassiniSoldner.html
196.. _checked: https://GitHub.com/ActiveState/code/tree/master/recipes/Python/546532_PyChecker_postprocessor
197.. _Cohen-Sutherland: https://WikiPedia.org/wiki/Cohen-Sutherland_algorithm
198.. _coverage: https://PyPI.org/project/coverage
199.. _Debian 9: https://Cirrus-CI.com/github/mrJean1/PyGeodesy/master
200.. _distribution files: https://GitHub.com/mrJean1/PyGeodesy/tree/master/dist
201.. _docs: https://www.Movable-Type.co.UK/scripts/geodesy/docs
202.. _documentation: https://mrJean1.GitHub.io/PyGeodesy
203.. _ECEF: https://WikiPedia.org/wiki/ECEF
204.. _EPSG: https://www.EPSG-Registry.org
205.. _Epydoc: https://PyPI.org/project/epydoc
206.. _equidistant: https://GeographicLib.SourceForge.io/html/classGeographicLib_1_1AzimuthalEquidistant.html
207.. _Exact: https://GeographicLib.SourceForge.io/html/classGeographicLib_1_1TransverseMercatorExact.html
208.. _Flake8: https://PyPI.org/project/flake8
209.. _Frechet: https://WikiPedia.org/wiki/Frechet_distance
210.. _Garefs (GARS): https://WikiPedia.org/wiki/Global_Area_Reference_System
211.. _GeodSolve: https://GeographicLib.SourceForge.io/html/utilities.html
212.. _geographiclib: https://PyPI.org/project/geographiclib
213.. _Geohashes: https://www.Movable-Type.co.UK/scripts/geohash.html
214.. _Georefs (WGRS): https://WikiPedia.org/wiki/World_Geographic_Reference_System
215.. _GitHub: https://GitHub.com/mrJean1/PyGeodesy
216.. _Hausdorff: https://WikiPedia.org/wiki/Hausdorff_distance
217.. _Intel-Python: https://software.Intel.com/en-us/distribution-for-python
218.. _interpolate: https://docs.SciPy.org/doc/scipy/reference/interpolate.html
219.. _JavaScript originals: https://GitHub.com/ChrisVeness/geodesy
220.. _JavaScript source: https://GitHub.com/ChrisVeness/geodesy
221.. _John P. Snyder: https://pubs.er.USGS.gov/djvu/PP/PP_1395.pdf
222.. _karney: https://mrJean1.GitHub.io/PyGeodesy/docs/pygeodesy.karney-module.html
223.. _Latitude/Longitude: https://www.Movable-Type.co.UK/scripts/latlong.html
224.. _LatLon: https://mrJean1.GitHub.io/PyGeodesy/docs/pygeodesy-LatLon-attributes-table.html
225.. _Liang-Barsky: https://www.CS.Helsinki.FI/group/goa/viewing/leikkaus/intro.html
226.. _McCabe: https://PyPI.org/project/mccabe
227.. _MGRS: https://www.Movable-Type.co.UK/scripts/latlong-utm-mgrs.html
228.. _MIT License: https://OpenSource.org/licenses/MIT
229.. _numpy: https://PyPI.org/project/numpy
230.. _numpy array: https://docs.SciPy.org/doc/numpy/reference/generated/numpy.array.html
231.. _OSGR: https://www.Movable-Type.co.UK/scripts/latlong-os-gridref.html
232.. _PyChecker: https://PyPI.org/project/pychecker
233.. _PyCodeStyle: https://PyPI.org/project/pycodestyle
234.. _PyFlakes: https://PyPI.org/project/pyflakes
235.. _PyGeodesy: https://PyPI.org/project/PyGeodesy
236.. _PyInstaller: https://www.PyInstaller.org
237.. _PyPI: https://PyPI.org/project/PyGeodesy
238.. _PyPy: https://PyPy.org
239.. _Pythonista: https://OMZ-Software.com/pythonista
240.. _Ramer-Douglas-Peucker: https://WikiPedia.org/wiki/Ramer-Douglas-Peucker_algorithm
241.. _Reumann-Witkam: https://psimpl.SourceForge.net/reumann-witkam.html
242.. _scipy: https://PyPI.org/project/scipy
243.. _simplify: https://Bost.Ocks.org/mike/simplify
244.. _Sutherland-Hodgman: https://WikiPedia.org/wiki/Sutherland-Hodgman_algorithm
245.. _TRF: http://ITRF.ENSG.IGN.FR
246.. _Ubuntu 16.04: https://Travis-CI.com/mrJean1/PyGeodesy
247.. _UPS: https://WikiPedia.org/wiki/Universal_polar_stereographic_coordinate_system
248.. _UTM: https://www.Movable-Type.co.UK/scripts/latlong-utm-mgrs.html
249.. _Vector-based: https://www.Movable-Type.co.UK/scripts/latlong-vectors.html
250.. _Vincenty: https://www.Movable-Type.co.UK/scripts/latlong-vincenty.html
251.. _Visvalingam-Whyatt: https://hydra.Hull.ac.UK/resources/hull:8338
252.. _Web Mercator: https://WikiPedia.org/wiki/Web_Mercator
253.. _Windows Server 2012R2: https://CI.AppVeyor.com/project/mrJean1/pygeodesy
254