Skip to main content

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).

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.7.0.tar.gz (6.4 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.7.0-cp314-cp314t-win_amd64.whl (4.3 MB view details)

Uploaded CPython 3.14tWindows x86-64

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

Uploaded CPython 3.14tmacOS 13.0+ ARM64

pyinterp-2026.7.0-cp314-cp314-win_amd64.whl (4.3 MB view details)

Uploaded CPython 3.14Windows x86-64

pyinterp-2026.7.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.7.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.7.0-cp314-cp314-macosx_13_0_arm64.whl (5.5 MB view details)

Uploaded CPython 3.14macOS 13.0+ ARM64

pyinterp-2026.7.0-cp313-cp313-win_amd64.whl (4.2 MB view details)

Uploaded CPython 3.13Windows x86-64

pyinterp-2026.7.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.7.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.7.0-cp313-cp313-macosx_13_0_arm64.whl (5.5 MB view details)

Uploaded CPython 3.13macOS 13.0+ ARM64

pyinterp-2026.7.0-cp312-cp312-win_amd64.whl (4.2 MB view details)

Uploaded CPython 3.12Windows x86-64

pyinterp-2026.7.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.7.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.7.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.7.0.tar.gz.

File metadata

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

File hashes

Hashes for pyinterp-2026.7.0.tar.gz
Algorithm Hash digest
SHA256 e4be24317b9d801fcc15e4cb3b536ddccb04bba61ea6b5db8b00c477faeade67
MD5 4b030db945885d5654dd4afba64f0e04
BLAKE2b-256 fbd555dd5b9279ee9d10bac79e23333f680b348b8fb1cfe86459025dfa408def

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyinterp-2026.7.0-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 cf8ea930cee834e03cb77f561b1eadcdaf05ab243da3bd87806e0b118eff4d7a
MD5 8feca354306ca2f92d53ef6786cb8c95
BLAKE2b-256 34ca78923a6613cd614594c5c9324bd6c74e30f9c60c6f407eee320a5cd042ae

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyinterp-2026.7.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 26a8035c4b3240534e5c0d7679b9d942ba3eaf6844637d9fa38a6cac5ad8c135
MD5 7f6a50116f248d69ecbc9317d42126b5
BLAKE2b-256 3da8a9133230b729950c4ed348f752213d189ed27aff1e39a148c9f280274d51

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyinterp-2026.7.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f7260175a15d17ae269e1bedf8a6dfa8965d7684e3148b92d18530b23f85832c
MD5 46893de6a98e65dcd970030c4b706e82
BLAKE2b-256 12c779d257ea94a8705b37f2e6218a63771f4d220bcdfc564de278516e451443

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyinterp-2026.7.0-cp314-cp314t-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 948625f87300595c54cdb5d1f88ad410c392099d27becdb0f9dd540a04b09fc7
MD5 37ac4a614c7558f3bec22dd7ffc1d9b8
BLAKE2b-256 6471b54f54c53da29255def990b6566f862276062913bead2cc95c115b263a29

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyinterp-2026.7.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 65d879fc11ac63d01f8de465ecf49fba6c6492c9bb0ba378ce5d7257946af10d
MD5 ef55eae3d635d13eedff40e452f5cede
BLAKE2b-256 2b3810f79fcb3c1af033390882806189ac6cf81d5a30cdd4157749b432cf203a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyinterp-2026.7.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 393572410a3bb866ea5f8ba180b2794b9aa4a1b9a4df815ea7f96006aec52f3d
MD5 d9bf4708c33aa3204e38806fbb666f0f
BLAKE2b-256 0514990068e0f0d9f8828addbab388ada77468bfb6e83d0f36a0ea497d4039e2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyinterp-2026.7.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7e6193ff24b968131f94d8a4c1bce5708f89258885f942c84eccaa559a5ab9a7
MD5 9d7b1d0e1177f16a8c96463ffaa22c93
BLAKE2b-256 2dd13f38ab71fffed1269744bb4b431f750baf6e289415352598c94ef316e867

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyinterp-2026.7.0-cp314-cp314-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 686efcb9630e5b85668cbd5480835d83e04baf6ea931f27c19debca67743cb2c
MD5 17b2e9688ab23837bf7f50aff9ba4f16
BLAKE2b-256 860159df923c39044994bcb89df8326dec0c1ae9e78454457d441415c05c0b30

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyinterp-2026.7.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 6e254790ebd277f603d122da44d71ff47dcdd063e6e81a0f748953221e4bdc1e
MD5 c40425afdf633a52607d11045e139605
BLAKE2b-256 19fbd3687ac6ced190fa94d0c657dbf21d333bb46dcec18a753b394d7c011af0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyinterp-2026.7.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 78b0a53a404824ce5aa2f1201c5e619a27c5561213fc107578f00b38eae6ce17
MD5 ae10851fee356704235db0aa3e01de8d
BLAKE2b-256 a58a40492dab08c1b19cb9b79d049d756af5802055ffbfabd9e81d098a80cd5b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyinterp-2026.7.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f2c31cb551d06d88478db3e5fe35341729d37fbc43c1d9716aa7debaecf65b30
MD5 7e988491031561a04a72c92b33f81825
BLAKE2b-256 36938b37a79523710312402a136695fb35f4bcfb177d27bb26e86a01aa4f24ce

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyinterp-2026.7.0-cp313-cp313-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 5d866ccb250472265ec3b64ece1aad971cab2178c132a28b9c0302559eaf1470
MD5 717780f3f5e8cc906bf627ff7389c036
BLAKE2b-256 cf79095731fe487804e7388f64d314c9811029215386b792315ec3274ea933e5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyinterp-2026.7.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 85467c81331096d0a8e28cfc3ebdf8ce88e444180faefb237c6e6fbb8f9fb546
MD5 4d965104e929843ce0700e0e7023049d
BLAKE2b-256 5be7a39d9374ec8478bc62d44685dbe98cfb4d2ab8f1f1d8e61a7a49b707d394

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyinterp-2026.7.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6987bcc19b7743bc5fdbb8acba80c5ac6035fc0c450115a48bef7908fd153cdd
MD5 09877ea215f802ab4575175399a5dd11
BLAKE2b-256 b5902b14bb5844b5eca444d68ccb16c6a2356856507f0e210b3c00162799787d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyinterp-2026.7.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c1601992059e08a60c258debde08b42cec5fe36a5c1ebb42b4860578106726a6
MD5 cfbbd94bbabbcb5a96ffdcf98ed3c369
BLAKE2b-256 d2bbc6e319bc239bbc3cb913ed20b3e6cf3364bda4eb5076aa4e06facd891490

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyinterp-2026.7.0-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 9730740ed9c80dc8fb9ad96241f2369f7e40997fbe0c7968edfe14b48979f032
MD5 954f20042da5c476c1fe5dc770d1b7ee
BLAKE2b-256 4afe3849d7f4dc4cefd9ba731f75242763d068bbe1c6ef220e767a9f5cc5a6e0

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyinterp-2026.7.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 Sentry Error logging StatusPage Status page