Skip to main content

Library for change detection in 4D point cloud data

Project description

Welcome to py4dgeo

logo

License: MIT GitHub Workflow Status PyPI Release Documentation Status codecov

py4dgeo is a C++ library with Python bindings for change analysis in multitemporal and 4D point clouds.

Topographic 3D/4D point clouds are omnipresent in geosciences, environmental, ecological and archaeological sciences, robotics, and many more fields and applications. Technology to capture such data using laser scanning and photogrammetric techniques have evolved into standard tools. Dense time series of topographic point clouds are becoming increasing available and require tools for automatic analysis. Moreover, methods considering the full 4D (3D space + time) data are being developed in research and need to be made available in an accessible way with flexible integration into existent workflows.

The main objective of py4dgeo is to bundle and provide different methods of 3D/4D change analysis in a dedicated, comprehensive Python library. py4dgeo is designed as an international open source project that can be integrated into almost any 3D and GIS software in the geodata domain supporting Python, e.g. as plugins.

py4dgeo is under ongoing active development. Below, you find a list of provided methods.

🔨 Methods provided by py4dgeo

  • M3C2 algorithm (Lague et al., 2013) for bitemporal point cloud distance computation. The concept and algorithm is explained in this tutorial by James Dietrich, including usage in the graphical software CloudCompare.

  • M3C2-EP (M3C2-EP; Winiwarter et al., 2021) for statistical signal-noise separation in change analysis through error propagation. The concept and method are explained in full detail in the related paper.

  • 4D objects-by-change (4D-OBC; Anders et al., 2021) for time series-based extraction of surface activities [under active development]. The concept and method are explained in this scientific talk:

  • Correspondence-driven plane-based M3C2 (Zahs et al., 2022) for lower uncertainty in 3D topographic change quantification. The concept and method are explained in this scientific talk:

  • Point cloud registration: Py4dgeo supports to calculate and apply affine transformations to point clouds using a standard ICP implementations. More ICP methods are currently being implemented - stay tuned!

🎮 Examples

Demo notebooks using methods provided by py4dgeo

Example 1 Example 2
Example 3 Example 4
Example 5 Example 6
Example 7

💻 Installation

Prerequisites

Using py4dgeo requires the following software installed:

  • 64-bit Python >= 3.8 (32-bit installations might cause trouble during installation of dependencies)

In order to build the package from source, the following tools are also needed.

  • A C++17-compliant compiler
  • CMake >= 3.9
  • Doxygen (optional, documentation building is skipped if missing)

Installing py4dgeo

The preferred way of installing py4dgeo is using pip.

Installing the release version using pip

py4dgeo can be installed using pip to obtain the current release:

python -m pip install py4dgeo

Building from source using pip

The following sequence of commands is used to build py4dgeo from source:

git clone --recursive https://github.com/3dgeo-heidelberg/py4dgeo.git
cd py4dgeo
python -m pip install -v --editable .

The --editable flag allows you to change the Python sources of py4dgeo without reinstalling the package. The -v flag enables verbose output which gives you detailed information about the compilation process that you should include into potential bug reports. To recompile the C++ source, please run pip install again. In order to enable multi-threading on builds from source, your compiler toolchain needs to support OpenMP.

If you want to contribute to the library's development you should also install its additional Python dependencies for testing and documentation building:

python -m pip install -r requirements-dev.txt

Setting up py4dgeo using Docker

Additionally, py4dgeo provides a Docker image that allows to explore the library using JupyterLab. The image can be locally built and run with the following commands:

docker build -t py4dgeo:latest .
docker run -t -p 8888:8888 py4dgeo:latest

🐍 Documentation of software usage

As a starting point, please have a look to the Jupyter Notebooks available in the repository and find the py4dgeo documentation on readthedocs.

🌐 Published test data

If you are looking for data to test different methods, consider the following open data publications:

Hourly TLS point clouds of a sandy beach


Vos et al. (2022): https://doi.org/10.1038/s41597-022-01291-9.

By-weekly TLS point clouds of an Alpine rock glacier


Zahs et al. (2022): https://doi.org/10.11588/data/TGSVUI.

📑 Citation

Please cite py4dgeo when using it in your research and reference the appropriate release version.

article{py4dgeo,
author = {py4dgeo Development Core Team}
title = {py4dgeo: library for change analysis in 4D point clouds},
journal = {},
year = {2022},
number = {},
volume = {},
doi = {},
url = {https://github.com/3dgeo-heidelberg/py4dgeo},
}

💟 Funding / Acknowledgements

The initial software development was supported by the Scientific Software Center (SSC) in the Open Call 2021. The scientific software project is further supported by the research projects CharAct4D and AImon5.0.

🔔 Contact / Bugs / Feature Requests

You think you have found a bug or have specific request for a new feature? Please open a new issue in the online code repository on Github. Also for general questions please use the issue system.

Scientific requests can be directed to the 3DGeo Research Group Heidelberg and its respective members.

📜 License

See LICENSE.md.

📚 Literature

  • Anders, K., Winiwarter, L., Mara, H., Lindenbergh, R., Vos, S.E. & Höfle, B. (2021): Fully automatic spatiotemporal segmentation of 3D LiDAR time series for the extraction of natural surface changes. ISPRS Journal of Photogrammetry and Remote Sensing, 173, pp. 297-308. DOI: 10.1016/j.isprsjprs.2021.01.015.
  • Lague, D., Brodu, N., & Leroux, J. (2013). Accurate 3D comparison of complex topography with terrestrial laser scanner: Application to the Rangitikei canyon (N-Z). ISPRS Journal of Photogrammetry and Remote Sensing, 82, pp. 10-26. DOI: 10.1016/j.isprsjprs.2013.04.009.
  • Winiwarter, L., Anders, K., Höfle, B. (2021): M3C2-EP: Pushing the limits of 3D topographic point cloud change detection by error propagation. ISPRS Journal of Photogrammetry and Remote Sensing, 178, pp. 240–258. DOI: 10.1016/j.isprsjprs.2021.06.011.
  • Zahs, V., Winiwarter, L., Anders, K., Williams, J.G., Rutzinger, M. & Höfle, B. (2022): Correspondence-driven plane-based M3C2 for lower uncertainty in 3D topographic change quantification. ISPRS Journal of Photogrammetry and Remote Sensing, 183, pp. 541-559. DOI: 10.1016/j.isprsjprs.2021.11.018.

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

py4dgeo-0.6.0.tar.gz (19.9 MB view details)

Uploaded Source

Built Distributions

py4dgeo-0.6.0-cp312-cp312-win_amd64.whl (271.1 kB view details)

Uploaded CPython 3.12 Windows x86-64

py4dgeo-0.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (381.0 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

py4dgeo-0.6.0-cp312-cp312-macosx_10_9_x86_64.whl (564.8 kB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

py4dgeo-0.6.0-cp311-cp311-win_amd64.whl (270.1 kB view details)

Uploaded CPython 3.11 Windows x86-64

py4dgeo-0.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (381.5 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

py4dgeo-0.6.0-cp311-cp311-macosx_10_9_x86_64.whl (559.8 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

py4dgeo-0.6.0-cp310-cp310-win_amd64.whl (270.1 kB view details)

Uploaded CPython 3.10 Windows x86-64

py4dgeo-0.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (381.5 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

py4dgeo-0.6.0-cp310-cp310-macosx_10_9_x86_64.whl (559.8 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

py4dgeo-0.6.0-cp39-cp39-win_amd64.whl (265.9 kB view details)

Uploaded CPython 3.9 Windows x86-64

py4dgeo-0.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (381.6 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

py4dgeo-0.6.0-cp39-cp39-macosx_10_9_x86_64.whl (559.9 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

py4dgeo-0.6.0-cp38-cp38-win_amd64.whl (270.5 kB view details)

Uploaded CPython 3.8 Windows x86-64

py4dgeo-0.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (381.3 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

py4dgeo-0.6.0-cp38-cp38-macosx_10_9_x86_64.whl (559.7 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

File details

Details for the file py4dgeo-0.6.0.tar.gz.

File metadata

  • Download URL: py4dgeo-0.6.0.tar.gz
  • Upload date:
  • Size: 19.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for py4dgeo-0.6.0.tar.gz
Algorithm Hash digest
SHA256 40b32ba9df88229850d94a21725772ad3115ce9ee4e3bd9997959900927217bb
MD5 c4c92c0f83bcce9d367020d8fb3449aa
BLAKE2b-256 17022e80af101ad57c0af3f6019c932a90ae611fdbae567ee6d63f05fd907d35

See more details on using hashes here.

File details

Details for the file py4dgeo-0.6.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: py4dgeo-0.6.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 271.1 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for py4dgeo-0.6.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ce15333fbdc0f588494e4ce1cde2228ee6c77962a78492750753b943465648af
MD5 89434524834cc079bc24310a38e811ba
BLAKE2b-256 8d8ffb05c8ebb34d9729cb58584a52613568a113169f544e83a58245ae461856

See more details on using hashes here.

File details

Details for the file py4dgeo-0.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for py4dgeo-0.6.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 73f25a25d53099f266d8cd18a618649852519b43932fafb3897ac088c9ef9c1a
MD5 65eb6340543b907e58890fb4de2b6d3f
BLAKE2b-256 45b2c69bca615788282b1a7444df79ddfead44a24bd95ca3c40981b3efa872d4

See more details on using hashes here.

File details

Details for the file py4dgeo-0.6.0-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for py4dgeo-0.6.0-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 cab499ec15f64ed2cc637ab99b41c46c5cdbd64df45baf78aa49c6e463ce4eaf
MD5 a9af53c327744dda6d142a86eb254f9a
BLAKE2b-256 63d53fe4a0ff24db2c20ad980128f168dc9d758f2621136c99f385ee7b92bd45

See more details on using hashes here.

File details

Details for the file py4dgeo-0.6.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: py4dgeo-0.6.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 270.1 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for py4dgeo-0.6.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 f72cd89891630143898e94253ba10ff5b7cfcdc99564df45f8416fd749190042
MD5 474967b68bf067bcdf1856c5bad297de
BLAKE2b-256 ea10a3c21638a988a777f2e87d5ef616be9895e63784c60641a3bb6000fc8779

See more details on using hashes here.

File details

Details for the file py4dgeo-0.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for py4dgeo-0.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 68d3c0260d3f63f50d46ced18c5255887c5fa193a1dc51d2d6544cd0bd4ab935
MD5 309143a8cc8f81b2c7486988df568377
BLAKE2b-256 809211f4f937d9d9b0002622cbc8ade5e0639d587b332a46c81cb305405ed7ad

See more details on using hashes here.

File details

Details for the file py4dgeo-0.6.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for py4dgeo-0.6.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 2c2915e7aa6f12524913c62da5ec10acc8b2cb105ec62d51d1d44f3581ede4b6
MD5 138233413e1dc8b270c150329d0cc22c
BLAKE2b-256 c4ccf873d2cc3190ac0e19c44f52efd77d88c80ab3502e3e8f0e8d199fe72ae2

See more details on using hashes here.

File details

Details for the file py4dgeo-0.6.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: py4dgeo-0.6.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 270.1 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for py4dgeo-0.6.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 4bd135a19d355db3fa63f2e557e46634dd32b3d7c2a569c5ecd672f066792c40
MD5 2ba514e17d1367c85cc911c049184824
BLAKE2b-256 f13fe5b3c1ac1aadb7eb3023321db07dc9118fdd2bcfaa45baa6ed2b1cffdcf9

See more details on using hashes here.

File details

Details for the file py4dgeo-0.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for py4dgeo-0.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9ae35d3369b519a8cb9c64190c1b8040ca11dfb70c483f89bc7a56659ffd48b9
MD5 5966a0e237a95f31884d76a6bdeaa7b4
BLAKE2b-256 5149f2473b89d8f2ec062ac9e7b3048aa05c4ed63d0bcce3982f5b2cbbc4ffa1

See more details on using hashes here.

File details

Details for the file py4dgeo-0.6.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for py4dgeo-0.6.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 76666e2f9f2afe13615f6d78bf8067728114c91ad8f478d2e00027885332dbba
MD5 99e34461271c8a9809546696c5b561b3
BLAKE2b-256 4659aaeb584ea2e3a1b6691bc57c9e80f41f14572cc0fac7aa073fd161004a79

See more details on using hashes here.

File details

Details for the file py4dgeo-0.6.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: py4dgeo-0.6.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 265.9 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for py4dgeo-0.6.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 1b7973092eb5f1a7946233408a586d008373a581414630ea6c019373d38df2ce
MD5 2349ea82619bfbad3bb1a2f69b59157e
BLAKE2b-256 fd7efaa863dfc4b69f940bae452e70673671ae0d7da15ee4605c8000b824124b

See more details on using hashes here.

File details

Details for the file py4dgeo-0.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for py4dgeo-0.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b8e1b1caf3db525683d0052dfe2a08ed750972048b9af4ac827f1ff8449112ba
MD5 a9f09bc2c7a82bd603f2fa467f9b495c
BLAKE2b-256 b1821b4133f88c2092116ce680c6ffcd57a56dcc84b75ff8fe68dd46fa523d34

See more details on using hashes here.

File details

Details for the file py4dgeo-0.6.0-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for py4dgeo-0.6.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 38c55e60018407b429d47a9efe3f308b4b9b093150533a7520d624cf2c97039c
MD5 d3706e736309a6c9558087baa05987cc
BLAKE2b-256 68d27e283b04a989de2527e5247d47a3237672966ca2524f009cd045e3ef7fd8

See more details on using hashes here.

File details

Details for the file py4dgeo-0.6.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: py4dgeo-0.6.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 270.5 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for py4dgeo-0.6.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 4b8f5edb1324bef9195cbcfa3b818457321d4cac577005817515059cf4382f02
MD5 26d97982f43942ad9a2b0cc89cfea703
BLAKE2b-256 33f5f2bb583e37b8171f918bc6f4f27eb4f1bb64712f2910afbe3dfa184bc893

See more details on using hashes here.

File details

Details for the file py4dgeo-0.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for py4dgeo-0.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8b569652d996cb6403731e8999ed66d82291d834fff4415f3dc2c3525bca9c00
MD5 4e8313f674eb37cd50c4a89e9ddd53b9
BLAKE2b-256 e9a6fe1828c4a8c2491da82facab808f54d43b406d9c734cd3c2c9512efaf6a0

See more details on using hashes here.

File details

Details for the file py4dgeo-0.6.0-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for py4dgeo-0.6.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 0cfaa5b382f961e5571cf35e72c1ab9e8d9768889aad2daa55a91b79839daf39
MD5 4bd31c06d6751009d6d9c03f174c5a71
BLAKE2b-256 a60700905b9942124d1faf80ce16ce64ac505e1511d60c70b6635cf832833f7b

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