Skip to main content

Python library for calculating geodesic distance on triangular based surface meshes

Project description

pygeodesic

Python library to compute geodesic distance over a triangular based surface mesh.

A Cython wrapper of the C++ code by Kirsanov, which is an implementation of the exact geodesic algorithm for triangular mesh first described by Mitchell, Mount and Papadimitriou in 1987.

pygeodesic is similar to other libraries on PyPi (such as gdist and tvb-gdist), but:

  • provides a wrapper of the GeodesicAlgorithmExact class
  • exposes geodesic path (not just geodesic distance)
  • licensed under MIT license similar to the orginal Kirsanov C++ code, rather than GPL

A good alternative to pygeodesic is potpourri3d, which uses the heat method and vector heat method to compute geodesic distance over surfaces and point clouds. However, this library does not currently output the geodesic path on the surface.

Requirements

A C++ compiler is required if you are not installing one of the precompiled wheels. Although pygeodesic is a Cython wrapper, Cython is not required as the cythonized C++ file is also provided.

VTK is used for visualisation in the example notebooks.

Installation

Install from PyPi:

pip install pygeodesic

Installation from source (from within folder containing setup.py):

python setup.py install

Usage

Loading pygeodesic:

import pygeodesic.geodesic as geodesic

To read the mesh files provided with the original C++ code:

filename = r'data/flat_triangular_mesh.txt'
result = geodesic.read_mesh_from_file(filename)
if result:
    points, faces = result

To calculate the geodesic distance and path between two points (the source and the target) on the mesh:

# Initialise the PyGeodesicAlgorithmExact class instance
geoalg = geodesic.PyGeodesicAlgorithmExact(points, faces)

# Define the source and target point ids with respect to the points array
sourceIndex = 25
targetIndex = 97

# Compute the geodesic distance and the path
distance, path = geoalg.geodesicDistance(sourceIndex, targetIndex)

To calculate the geodesic distances from a single point (the source point) to all other points on the mesh:

source_indices = np.array([25])
target_indices = None
distances, best_source = geoalg.geodesicDistances(source_indices, target_indices)

To calculate the geodesic distances from two source points to 3 target points:

source_indices = np.array([25,100]) 
target_indices = np.array([0,10,50])
distances, best_source = geoalg.geodesicDistances(source_indices, target_indices)

For more detail, a Jupyter notebook is provided in the examples folder to show how to use pygeodesic to compute geodesic distances and paths.

Example using the Stanford Bunny

A Jupyter notebook is provided showing how to use pygeodesic to calculate the geodesic distance and path using the Stanford Bunny as an example.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pygeodesic-0.1.7.tar.gz (1.2 MB view details)

Uploaded Source

Built Distributions

pygeodesic-0.1.7-cp39-cp39-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.9 Windows x86-64

pygeodesic-0.1.7-cp38-cp38-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.8 Windows x86-64

pygeodesic-0.1.7-cp37-cp37m-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.7m Windows x86-64

File details

Details for the file pygeodesic-0.1.7.tar.gz.

File metadata

  • Download URL: pygeodesic-0.1.7.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.0 importlib_metadata/3.7.3 packaging/20.9 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.7.9

File hashes

Hashes for pygeodesic-0.1.7.tar.gz
Algorithm Hash digest
SHA256 fc8ff31a4535b76bf6bd4d000e803da50ccb42fda5542f5d1b18648ee74da0a1
MD5 47062cacdd3af872db5e83b0cad67272
BLAKE2b-256 4f52d7aa3a39856ad08d77e4a22982b0ec7a59252ce4deed0e586d69f4747792

See more details on using hashes here.

File details

Details for the file pygeodesic-0.1.7-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: pygeodesic-0.1.7-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.0 importlib_metadata/3.7.3 packaging/20.9 pkginfo/1.7.0 requests/2.24.0 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.7.9

File hashes

Hashes for pygeodesic-0.1.7-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 5e124c4471f2d13283acc6a9b2b9a0910142936564f8c5274134170b8e99828a
MD5 36e608dac8fbe9387d050d39121727cc
BLAKE2b-256 ad6117a3d7a54d53b117b0586eaf21878490d05e67695a638ca0ce74cdd433bd

See more details on using hashes here.

File details

Details for the file pygeodesic-0.1.7-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: pygeodesic-0.1.7-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.0 importlib_metadata/3.7.3 packaging/20.9 pkginfo/1.7.0 requests/2.24.0 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.7.9

File hashes

Hashes for pygeodesic-0.1.7-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 b06f4fdfa0a94be713b38482ec2799bd12b24310c0056b1cb1e62732e4bdf23a
MD5 424525d7e897a5c7af95794b44f023a1
BLAKE2b-256 46ad0bdd405066fdd3752414f55cca5551ccb4caa27933f23a9978f9743333c4

See more details on using hashes here.

File details

Details for the file pygeodesic-0.1.7-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: pygeodesic-0.1.7-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.0 importlib_metadata/3.7.3 packaging/20.9 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.7.9

File hashes

Hashes for pygeodesic-0.1.7-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 02226745a71cc39679c080722bfa4e7801688415454c32a1effc14c801034e41
MD5 9e562b346b27cc6c287951075f98b304
BLAKE2b-256 facd179d1c7fdb3d1904de0419b7f377014a0374d6ea0ffb69167c370a62e198

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page