Skip to main content

Interpolation of geo-referenced data for Python.

Project description

Build Status Downloads Platforms Latest Release Date License Binder

Python library for optimized geo-referenced interpolation.

About

The motivation of this project is to provide tools for interpolating geo-referenced data used in the field of geosciences. Other libraries cover this problem, but written entirely in Python, the performance of these projects was not quite sufficient for our needs. That is why this project started.

With this library, you can interpolate 2D, 3D, or 4D fields using n-variate and bicubic interpolators and unstructured grids. You can also apply for a data binning on the bivariate area by simple or linear binning.

The library core is written in C++ using the Boost C++ Libraries, Eigen3 and nanobind libraries.

This software also uses CMake to configure the project and Googletest to perform unit testing of the library kernel.

Fill undefined values

The undefined values in the grids do not allow interpolation of values located in the neighborhood. This behavior is a concern when you need to interpolate values near the mask of some fields. The library provides utilities to fill the undefined values:

  • fft_inpaint to fill all undefined values in a grid using the FFT Inpainting method.

  • loess to fill the undefined values on the boundary between the defined/undefined values using local regression.

  • gauss_seidel to fill all undefined values in a grid using the Gauss-Seidel method by relaxation.

  • multi_grid to fill all undefined values in a grid using the Multi-Grid method.

Geographic indexers

N-Dimensional Grids

N-dimensional grid is a grid defined by a matrix, in a 2D space, by a cube in a 3D space, etc. Each dimension of the grid is associated with a vector corresponding to its coordinates or axes. Axes used to locate a pixel in the grid from the coordinates of a point. These axes are either:

  • regular: a vector of 181 latitudes spaced a degree from -90 to 90 degrees;

  • irregular: a vector of 109 latitudes irregularly spaced from -90 to 89.940374 degrees.

These objects are manipulated by the class pyinterp.Axis, which will choose, according to Axis definition, the best implementation. This object will allow you to find the two indexes framing a given value. This operating mode allows better performance when searching for a regular axis (a simple calculation will enable you to see the index of a point immediately). In contrast, in the case of an irregular axis, the search will be performed using a binary search.

Finally, this class can define a circular axis from a vector to correctly locate a value on the circle. This type of Axis will is used for handling longitudes.

Temporal Axes

The pyinterp.TemporalAxis class handles temporal axes, i.e., axes defined by 64-bit integer vectors, which is the encoding used by numpy to control dates. This class allows you to process dates using integer arithmetic to ensure that no information is lost during calculations. These objects are used by spatiotemporal grids to perform temporal interpolations.

Unstructured Grids

In the case of unstructured grids, the index used is a R*Tree. These trees have better performance than the KDTree generally found in Python library implementations.

The tree used here is the implementation provided by the C++ Boost library.

An adaptation has been introduced to address spherical equatorial coordinates effectively. Although the Boost library allows these coordinates to manipulate natively, the performance is lower than in the case of Cartesian space. Thus, we have chosen to implement a conversion of Longitude Latitude Altitude (LLA) coordinates into Earth-Centered, Earth-Fixed (ECEF) coordinates transparently for the user to ensure that we can preserve excellent performance. The disadvantage of this implementation is that it requires fairly more memory, as one more element gets used to index the value of the Cartesian space.

The management of the LLA/ECEF coordinate conversion is managed to use the Vermeille, H. algorithm. It has an excellent performance with the accuracy of 1e-8 meters for altitude.

Geohash

Geohashing is a geocoding method used to encode geographic coordinates (latitude and longitude) into a short string of digits and letters delineating an area on a map, which is called a cell, with varying resolutions. The more characters in the string, the more precise the location.

Geohashes use Base-32 alphabet encoding (characters can be 0 to 9 and A to Z, excl A, I, L and O).

The geohash is a compact way of representing a location, and is useful for storing a location in a database, or for indexing a location in a database.

Geometry

This library provides Python bindings to Boost Geometry concepts and algorithms for both geographic and Cartesian coordinate spaces. The geometry module offers a comprehensive set of geometric primitives including points, linestrings, polygons, rings, segments, and bounding boxes. For each coordinate space (cartesian and geographic), dedicated algorithms are provided for common geometric operations such as:

  • Computing areas and perimeters of geometries

  • Calculating distances and azimuths between points

  • Determining centroids and closest points

  • Performing buffer and envelope operations

  • Converting between coordinate spaces

In the geographic space, additional features include support for multiple geodetic strategies (Andoyer, Karney, Thomas, Vincenty) for precise calculations on a spheroid, and coordinate transformations (LLA/ECEF, geographic to Cartesian conversions).

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

pyinterp-2026.6.0.tar.gz (6.3 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pyinterp-2026.6.0-cp314-cp314t-win_amd64.whl (4.4 MB view details)

Uploaded CPython 3.14tWindows x86-64

pyinterp-2026.6.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (5.1 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pyinterp-2026.6.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (4.9 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

pyinterp-2026.6.0-cp314-cp314t-macosx_13_0_arm64.whl (5.5 MB view details)

Uploaded CPython 3.14tmacOS 13.0+ ARM64

pyinterp-2026.6.0-cp314-cp314-win_amd64.whl (4.4 MB view details)

Uploaded CPython 3.14Windows x86-64

pyinterp-2026.6.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (5.1 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pyinterp-2026.6.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (4.9 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

pyinterp-2026.6.0-cp314-cp314-macosx_13_0_arm64.whl (5.5 MB view details)

Uploaded CPython 3.14macOS 13.0+ ARM64

pyinterp-2026.6.0-cp313-cp313-win_amd64.whl (4.3 MB view details)

Uploaded CPython 3.13Windows x86-64

pyinterp-2026.6.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (5.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pyinterp-2026.6.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (4.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

pyinterp-2026.6.0-cp313-cp313-macosx_13_0_arm64.whl (5.5 MB view details)

Uploaded CPython 3.13macOS 13.0+ ARM64

pyinterp-2026.6.0-cp312-cp312-win_amd64.whl (4.3 MB view details)

Uploaded CPython 3.12Windows x86-64

pyinterp-2026.6.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (5.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pyinterp-2026.6.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (4.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

pyinterp-2026.6.0-cp312-cp312-macosx_13_0_arm64.whl (5.5 MB view details)

Uploaded CPython 3.12macOS 13.0+ ARM64

File details

Details for the file pyinterp-2026.6.0.tar.gz.

File metadata

  • Download URL: pyinterp-2026.6.0.tar.gz
  • Upload date:
  • Size: 6.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyinterp-2026.6.0.tar.gz
Algorithm Hash digest
SHA256 6c9fafe108cfa1e0a15618d5b66ae06d47ad5cd68a2f690d368374ebd261fab9
MD5 36925393a84773076e97f3794a50c030
BLAKE2b-256 dd06c7e5e99738696e2422be48c2f6c490383237d2fad424d0d63edfb40ed6eb

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyinterp-2026.6.0.tar.gz:

Publisher: pypipublish.yaml on CNES/pangeo-pyinterp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyinterp-2026.6.0-cp314-cp314t-win_amd64.whl.

File metadata

File hashes

Hashes for pyinterp-2026.6.0-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 7d297e5456373ffa42e88bf75405cd08133bc955a0c295e88a6c6eccf3e8c30c
MD5 50d836d161f4c02cfaeccb16c9078029
BLAKE2b-256 3394ce3525e4f1831f9b6363ff03b1b85db0da1135ea81a720f82e1767b2bdf0

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyinterp-2026.6.0-cp314-cp314t-win_amd64.whl:

Publisher: wheels.yml on CNES/pangeo-pyinterp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyinterp-2026.6.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyinterp-2026.6.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1ecd28060a3f147391ad470dbbfb28a3f7dbbe718f8312a83da6cd52dae19022
MD5 31d0b8291ad1d11513689c3f014f32cf
BLAKE2b-256 1772510c13d5e51833365618f850d2902626f29bbd06ed761eec2b3c7b0a48fb

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyinterp-2026.6.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on CNES/pangeo-pyinterp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyinterp-2026.6.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyinterp-2026.6.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e76d9e573d07659fe71a0746ff4988a2deddea5dd593a0d9c085174b20726243
MD5 9b915bd061776d1e5c10abea374afe63
BLAKE2b-256 7d1bf9a42b601c0d04e44e2d92b60bca23efed0f0a8458496527af643e3ac7c4

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyinterp-2026.6.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on CNES/pangeo-pyinterp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyinterp-2026.6.0-cp314-cp314t-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for pyinterp-2026.6.0-cp314-cp314t-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 bbc76731af3eb1e0d9887caac0184d137d38e51abe7adbe4a024529972815c8a
MD5 6c85fb925cacd76644e1edc295f2dff8
BLAKE2b-256 0d9ec3eb7e2e06decea335111eb8f4b6c4296c1fcff746a120ba01a83496d485

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyinterp-2026.6.0-cp314-cp314t-macosx_13_0_arm64.whl:

Publisher: wheels.yml on CNES/pangeo-pyinterp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyinterp-2026.6.0-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for pyinterp-2026.6.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 2c0f8e4250c985dda11f63526058e12bb0fc51def784db9fd6f396f125665d40
MD5 22fe161a044ed0df989816f98b89c573
BLAKE2b-256 791335d41a0f31eb18b372836a3a52dac48d3c70eae90865735a198b5ddafc7a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyinterp-2026.6.0-cp314-cp314-win_amd64.whl:

Publisher: wheels.yml on CNES/pangeo-pyinterp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyinterp-2026.6.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyinterp-2026.6.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 97d691f7815870f1750f76e3c30c7322530cf3d34319710b44f49c1e9dcfb37d
MD5 680bd4fe644242aa4d52a2e82d5e3dd8
BLAKE2b-256 943b67af742990aa17edc1dd586dc34c748d70d71d70973f41bd2094299cd1a0

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyinterp-2026.6.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on CNES/pangeo-pyinterp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyinterp-2026.6.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyinterp-2026.6.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b680a85100e9db0297a68fd5f43c1dc4cf5780c483b23ed9410b1fa5492d66a5
MD5 f8380f9d074714333a8db8853689c60a
BLAKE2b-256 7db76555b28295d8a2807fb8909c110f66196bd0933cec864f84985c9a07cf56

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyinterp-2026.6.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on CNES/pangeo-pyinterp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyinterp-2026.6.0-cp314-cp314-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for pyinterp-2026.6.0-cp314-cp314-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 bdc3e0b15f301aa8c0185a3b0321be1231da740f3d40c9cdce1b53e162d3778f
MD5 217e47190e297bed4162ee4ca229154c
BLAKE2b-256 28c6ecd09fce62ae1d21f2811bf80e6a18076fbc6cb42a45a58163ddc496ae39

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyinterp-2026.6.0-cp314-cp314-macosx_13_0_arm64.whl:

Publisher: wheels.yml on CNES/pangeo-pyinterp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyinterp-2026.6.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for pyinterp-2026.6.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 9e302a3ae546b52f91ecee42db96b218dc9a911f1d5ed88d597030f88e60f5ba
MD5 84f335e9eb9c21540419782845532cd4
BLAKE2b-256 d6e201a9e8fc6be5c2ca5c708a06bb01b6a0e77cb8df21a8600a266e0e75a90a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyinterp-2026.6.0-cp313-cp313-win_amd64.whl:

Publisher: wheels.yml on CNES/pangeo-pyinterp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyinterp-2026.6.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyinterp-2026.6.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c98c32f58e1f1211a993d30d4496fd8f9241e33132e0e8cfd09092addcc81a78
MD5 6e48b84cc215eaf7377f7ad5895eb80a
BLAKE2b-256 558094d752ba573fa1216ed466807abbe95704c79a95e0646c53520212cc90e6

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyinterp-2026.6.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on CNES/pangeo-pyinterp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyinterp-2026.6.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyinterp-2026.6.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 74fc401fa286d8b27265d58efed756777ed059c0d674bd621661cf62fbc59c70
MD5 9195274386225061d8c52ef124f36688
BLAKE2b-256 b3c84d26f639d74fcd4ef456578345b82559f399230420424cd803da0f89a6ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyinterp-2026.6.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on CNES/pangeo-pyinterp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyinterp-2026.6.0-cp313-cp313-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for pyinterp-2026.6.0-cp313-cp313-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 9f35bb516b6bcb1caeb6dab876755e71973c9f12a8d2796bdc0009ab8c82dd32
MD5 f2a1b23a664cb0ac172e54b817ef6fe2
BLAKE2b-256 0ae6c7803f82a48a7cf5dd02d45ac035c5edf29387eaea7930ff22823ed66f1f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyinterp-2026.6.0-cp313-cp313-macosx_13_0_arm64.whl:

Publisher: wheels.yml on CNES/pangeo-pyinterp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyinterp-2026.6.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for pyinterp-2026.6.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 6ac54f40eca53fd20c36767159c99b3bddc6c8895be610e7ce3b06024c554a5e
MD5 a51ce570a89c38a480f47a7843546b3c
BLAKE2b-256 8aa51afef7ef18439e7b82140c8b484b2b6b5e687ed74757ee2667af6ecfa157

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyinterp-2026.6.0-cp312-cp312-win_amd64.whl:

Publisher: wheels.yml on CNES/pangeo-pyinterp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyinterp-2026.6.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyinterp-2026.6.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 35a6b35e9c0decb2d7bf32a8e5465225cc2dde05588bcdce28bb4dfc39f28f96
MD5 b48b2eee29cf6683a3ceee5e04b24ba7
BLAKE2b-256 ae739d2712868f29618e0aef86edea0f9e09e4a7ab9d488181dee77b5c2f9215

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyinterp-2026.6.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on CNES/pangeo-pyinterp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyinterp-2026.6.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyinterp-2026.6.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 62b17f5ccc595c57a39930917ea87e11cdab10a5be35b7ea9aca004d8cb4420f
MD5 f5a28e0d11ceff2f5e70ae6420d22880
BLAKE2b-256 3f9e2e1cabd9c44f32a3cdb7303c569c8a71e56832e09d18cd721da1178cc6e2

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyinterp-2026.6.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on CNES/pangeo-pyinterp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyinterp-2026.6.0-cp312-cp312-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for pyinterp-2026.6.0-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 8fe0e6c55358f1f3c76c2da923fcd2c0c3a9aa4124ffe198db876d4e05598236
MD5 8ca2b46f68f6a4316ad2645c0d34419f
BLAKE2b-256 0f844c6f8a4f79bda6d14709801b4ab91aedc588563c62770cdfe7cd3b90ca39

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyinterp-2026.6.0-cp312-cp312-macosx_13_0_arm64.whl:

Publisher: wheels.yml on CNES/pangeo-pyinterp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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