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.4.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.4.0-cp314-cp314t-win_amd64.whl (4.4 MB view details)

Uploaded CPython 3.14tWindows x86-64

pyinterp-2026.4.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.4.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.4.0-cp314-cp314t-macosx_13_0_arm64.whl (5.5 MB view details)

Uploaded CPython 3.14tmacOS 13.0+ ARM64

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

Uploaded CPython 3.14Windows x86-64

pyinterp-2026.4.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.4.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.4.0-cp314-cp314-macosx_13_0_arm64.whl (5.5 MB view details)

Uploaded CPython 3.14macOS 13.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

pyinterp-2026.4.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.4.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.4.0-cp313-cp313-macosx_13_0_arm64.whl (5.5 MB view details)

Uploaded CPython 3.13macOS 13.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

pyinterp-2026.4.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.4.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.4.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.4.0.tar.gz.

File metadata

  • Download URL: pyinterp-2026.4.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.4.0.tar.gz
Algorithm Hash digest
SHA256 8a314813e67dc215a7d63f57d0aefc865a5f7c7dc3882421a3f9d5398846c9e1
MD5 60f90b1f542d265b3e3b2e89b8af619c
BLAKE2b-256 91278506a1d6160c21cf00c8da1a5743eb1e5f417e1e477150569f7fcea12ba3

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyinterp-2026.4.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.4.0-cp314-cp314t-win_amd64.whl.

File metadata

File hashes

Hashes for pyinterp-2026.4.0-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 156b1df6f9f600b112eed3bb3d2824f6150a58545ae3ef812d4ea6abf51760e1
MD5 d026840cbdf8dd224a5574a39e6fa2e1
BLAKE2b-256 e18b54015f0c98d7f0e638e25eb6284a0490d44d2aeea8bac1d256dc48a732c6

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyinterp-2026.4.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.4.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyinterp-2026.4.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e0ef8f5a6a91828dfae8e3c0bea5dc148696e326fb28f2654552e08d5f086a81
MD5 80f726f2516688192c776e8be2638de0
BLAKE2b-256 369e7e5d38367705af5b7c94afa30c1927c9fe5b5e4bb31904280afe9760eacb

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyinterp-2026.4.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.4.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyinterp-2026.4.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 fedbbc099b43d500d009a7c3b5aa5d9ae0a04ae1c4eaf57806da27a6ed1bc050
MD5 e75a43c21247f40db1d766d77713f0ce
BLAKE2b-256 a751a539c001265e89f3f73b3678669d89435dccf8ea8224ddabdc26866c2a13

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyinterp-2026.4.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.4.0-cp314-cp314t-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for pyinterp-2026.4.0-cp314-cp314t-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 dae15d692a134c1c5450abc00dc7b017086b213a22b706d085afed5e7dbab041
MD5 0cb788a14d6594ab81da7a37eeabf036
BLAKE2b-256 81c92c4c545eeaffcf6e5949417d70768472216c1bbb7e55adac374bf172f494

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyinterp-2026.4.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.4.0-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for pyinterp-2026.4.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 0c09da4fdc61ee8dcf7d6e6cd4ac2d6c92d817d2bdb0f07ae4d79704cc0498b0
MD5 07c6bb4ad771d7c81ff239d11c48f0fc
BLAKE2b-256 816213522628e3fdb0fd60cc6a69125d9d01e0b53a9f32b153130c790cdba158

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyinterp-2026.4.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.4.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyinterp-2026.4.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e7f8f0013b0c1f33548223e66e5c53bfb41b7516f7b401a871dac9ffe6f3d2b0
MD5 668da04e4ff0e754b3f56f3d9d466f49
BLAKE2b-256 fcbfb033bdab15d9b18dd879ab1fb3bcb3c576152012710705b543d2536657da

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyinterp-2026.4.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.4.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyinterp-2026.4.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 74eeeafd1383f5fdae7d970a5ca46c85d92c5a3b1a17d0ed9d8526e45e136e04
MD5 6c20efd20e1c90cbb4f69482d697a5a9
BLAKE2b-256 3016617ed72d2a096b83022ff5d5f130de193ee7285581ca6f00794482a633cb

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyinterp-2026.4.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.4.0-cp314-cp314-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for pyinterp-2026.4.0-cp314-cp314-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 003e24e15fdbab11b9a70dda0869bbb7e04ef5156b44ba88b292bf8434292340
MD5 5131c8fe0b8c46a95da6197e89b5f457
BLAKE2b-256 244bdfbeb62888aa4995d2be3e21253e493396c52f1b081613cd45741745b11d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyinterp-2026.4.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.4.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for pyinterp-2026.4.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 c311f0582b67eb25e81cb51cd4472b097f9d6a4ba3e8cc60a4f7025d8204488e
MD5 e00d9784e7ef97b299da0bfc6550dec3
BLAKE2b-256 3ccf35a9664b4bb24ae9c65ceffbb14deb483c57d60dedc68b243cb0d9ad33fd

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyinterp-2026.4.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.4.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyinterp-2026.4.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 056bcee52d95048aaa90f39ff785d1b19704e5cdb7c58292f8240f3a3b3098dd
MD5 6de016defc6190323cd3c549e587a546
BLAKE2b-256 5774e64e5027d51fd7c66041d720093ead66f491d67ca415cfe7f506f5fc9df7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyinterp-2026.4.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.4.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyinterp-2026.4.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 98a045f13c4b5b7a19c2f7b7dbc7cd9db0d5cbe8e8d8c403ace799b2167daf5a
MD5 bfdddd83792a234d0b8af94e8c59025c
BLAKE2b-256 9b0fa16ccdeb591d3c891f8965587e8e3d43c447049df199b4e2f25fe79bd274

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyinterp-2026.4.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.4.0-cp313-cp313-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for pyinterp-2026.4.0-cp313-cp313-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 c553ff96d032f609cb89c394173cb70c41ea4f9d5e53467dea5e09fdf3ce8e39
MD5 f8950249e2231ffe3ce5ae934d3e9272
BLAKE2b-256 99ed83fa60e1fb5cb8450556793c96cf9973254eef9eeb7f7ef3a4f50b7374b8

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyinterp-2026.4.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.4.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for pyinterp-2026.4.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 1de47978c521211cfa12f2189d119d3dc5fd9e5d45d7bd0eb7865d73e11c4e44
MD5 bbbd09f9ddb443d250bb5f74dbe44011
BLAKE2b-256 423004e6b714830f7953ccb72520b2dcd13d083bcbdf00fdd76a6cf972f19c88

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyinterp-2026.4.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.4.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyinterp-2026.4.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6bffa0321a457c19da1441a97943c68182feef4959ab19de30a12a3837d35c79
MD5 16a2268e245b1bd62efc38d663d0a504
BLAKE2b-256 50f4c0a3855998b6941b930b0ea1a52d7b485020996e4b86d9781b5c4183d7fa

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyinterp-2026.4.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.4.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pyinterp-2026.4.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c15319184d60e961ec1769a4f5501ab849439df3e5aae05825550e2c59f59ac9
MD5 854880de4fcbb3c5fd59f7682b676cbb
BLAKE2b-256 8f078c0d480d075c171275a834e2e3b903eb5eb7dd957dd4e2e8c4dfb3ba12f1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyinterp-2026.4.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.4.0-cp312-cp312-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for pyinterp-2026.4.0-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 f9fefa4d472d7ccbac2b6df6a031c1536070c32bb04bdee02ae325b4523117d8
MD5 6f7edabc96a22cec1de33981ebb5a5a9
BLAKE2b-256 6fb0130ecdb63f98fc4f1e334ff60400ec18e5bda4c4fd7db6e6852bdbf5c3e2

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyinterp-2026.4.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