Skip to main content

Set of tools to manipulate Digital Elevation Models (DEMs)

Project description

xdem

Set of tools to manipulate Digital Elevation Models (DEMs)

More documentation to come!

Documentation Status build Conda Version Conda Platforms Conda Downloads

To cite this package: Zenodo

Installation

With conda (recommended)

conda install -c conda-forge --strict-channel-priority xdem

The --strict-channel-priority flag seems essential for Windows installs to function correctly, and is recommended for UNIX-based systems as well.

Solving dependencies can take a long time with conda. To speed up this, consider installing mamba:

conda install mamba -n base -c conda-forge

Once installed, the same commands can be run by simply replacing conda by mamba. More details available through the mamba project.

If running into the sklearn error ImportError: dlopen: cannot load any more object with static TLS, your system needs to update its glibc (see details here). If you have no administrator right on the system, you might be able to circumvent this issue by installing a working environment with specific downgraded versions of scikit-learn and numpy:

conda create -n xdem-env -c conda-forge xdem scikit-learn==0.20.3 numpy==1.19.*

On very old systems, if the above install results in segmentation faults, try setting more specifically numpy==1.19.2=py37h54aff64_0 (worked with Debian 8.11, GLIBC 2.19).

Installing with pip

NOTE: Setting up GDAL and PROJ may need some extra steps, depending on your operating system and configuration.

pip install xdem

Installing for contributors

Recommended: Use conda for depencency solving.

$ git clone https://github.com/GlacioHack/xdem.git
$ cd ./xdem
$ conda env create -f dev-environment.yml
$ conda activate xdem
$ pip install -e .

After installing, we recommend to check that everything is working by running the tests:

$ pytest -rA

Structure

xdem are for now composed of three libraries:

  • coreg.py with tools covering differet aspects of DEM coregistration
  • spatial_tools.py for spatial operations on DEMs
  • dem.py for DEM-specific operations, such as vertical datum correction.

How to contribute

You can find ways to improve the libraries in the issues section. All contributions are welcome. To avoid conflicts, it is suggested to use separate branches for each implementation. All changes must then be submitted to the dev branch using pull requests. Each PR must be reviewed by at least one other person.

Please see our contribution page for more detailed instructions.

Documentation

See the documentation at https://xdem.readthedocs.io

Testing - again please read!

These tools are only valuable if we can rely on them to perform exactly as we expect. So, we need testing. Please create tests for every function that you make, as much as you are able. Guidance/examples here for the moment: https://github.com/GeoUtils/georaster/blob/master/test/test_georaster.py https://github.com/corteva/rioxarray/blob/master/test/integration/test_integration__io.py

Examples

Coregister a DEM to another DEM

import xdem

reference_dem = xdem.DEM("path/to/reference.tif")
dem_to_be_aligned = xdem.DEM("path/to/dem.tif")

nuth_kaab = xdem.coreg.NuthKaab()

nuth_kaab.fit(reference_dem.data, dem_to_be_aligned.data, transform=reference_dem.transform)


aligned_dem = xdem.DEM.from_array(
	nuth_kaab.apply(dem_to_be_aligned.data, transform=dem_to_be_aligned.transform),
	transform=dem_to_be_aligned.transform,
	crs=dem_to_be_aligned.crs
)

aligned_dem.save("path/to/coreg.tif")

This is an implementation of the Nuth and Kääb (2011) approach. Please see the documentation for more approaches.

Subtract one DEM with another

import xdem

first_dem = xdem.DEM("path/to/first.tif")
second_dem = xdem.DEM("path/to/second.tif")

difference = first_dem - second_dem

difference.save("path/to/difference.tif")

By default, second_dem is reprojected to fit first_dem. This can be switched with the keyword argument reference="second". The resampling method can also be changed (e.g. resampling_method="nearest") from the default "cubic_spline".

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

xdem-0.0.5.tar.gz (78.0 kB view details)

Uploaded Source

Built Distribution

xdem-0.0.5-py3-none-any.whl (80.7 kB view details)

Uploaded Python 3

File details

Details for the file xdem-0.0.5.tar.gz.

File metadata

  • Download URL: xdem-0.0.5.tar.gz
  • Upload date:
  • Size: 78.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.4 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.1 CPython/3.9.6

File hashes

Hashes for xdem-0.0.5.tar.gz
Algorithm Hash digest
SHA256 1aace0e645c6805cd4c2e537bb97dfd2df8d738e5d29d21cde0b5e259d3931d4
MD5 1b284680105aee1ea42cade372b3c7c3
BLAKE2b-256 b8dfa4c04fbfd8a085846fb69fe55a26792358fe023c74c91b53c9664868f18c

See more details on using hashes here.

File details

Details for the file xdem-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: xdem-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 80.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.4 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.1 CPython/3.9.6

File hashes

Hashes for xdem-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 e16473566c031a6ed33f947b48d76081e41be97b60e7d1c79124406dd257cfca
MD5 d29e2b45dee0d4086e36fee8539b6809
BLAKE2b-256 8079237c6b4522575d6b8e62191ef2813432d59f7fe6727b8bb8038e98f8743b

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