Skip to main content

Morton numbering and indexing for healpix grids

Project description

mortie

Tests CodSpeed codecov PyPI version Python 3.10+ CodSpeed Badge

Morty using mortie

Mortie is a library for applying morton indexing to healpix grids. Morton numbering (also called z-ordering) facilitates several geospatial operators such as buffering and neighborhood look-ups, and can generally be thought of as a type of geohashing.

This particular implementation focuses on hierarchical healpix maps, and is mostly inspired from this paper.

Performance

Mortie uses Rust-accelerated morton indexing functions for high performance. The Rust implementation provides dramatic speedups:

Dataset Size Rust Python (reference) Speedup
1,000 values 1.93 ms 4.14 ms 2.1x
100,000 values 1.85 ms 410.59 ms 222x
1.2M coordinates 102.51 ms 5.1 sec 50x

Pre-built wheels are available for Linux, macOS, and Windows. The Rust extension is required and is included in all pip-installed wheels.

Installation

pip install mortie

For development builds with Rust, see BUILDING.md.

Spatial Buffer

Mortie provides a morton_buffer function for expanding a set of morton cells by a configurable border ring. This is useful for... well, buffering.

import numpy as np
import mortie

# Convert coordinates to morton cells at order 6
cells = np.unique(mortie.geo2mort(lats, lons, order=6))

# Expand by 1-cell ring (8-connected neighbors)
border = mortie.morton_buffer(cells, k=1)
expanded = np.union1d(cells, border)

All input indices must be at the same order. The function returns only the new border cells, not the input cells themselves.

Polygon Coverage

morton_coverage computes the set of morton indices that completely cover a polygon defined by lat/lon vertices. The algorithm builds a contiguous boundary via great-circle interpolation, classifies inner/outer buffer cells using connected components + point-in-polygon testing, then recursively fills the interior.

import mortie

# Define polygon vertices (lat, lon in degrees)
lats = [40.0, 40.0, 50.0, 50.0]
lons = [-125.0, -115.0, -115.0, -125.0]

# Get all morton cells covering the polygon at order 6
cells = mortie.morton_coverage(lats, lons, order=6)

The function handles concave polygons, antimeridian-crossing polygons, and polar regions. Polygon 'donut' holes are not yet supported.

Dependencies

numpy. All HEALPix operations use the Rust-native healpix crate bundled in the compiled extension — no external HEALPix library is needed.

Funding

Initial funding of this work was supported by the ICESat-2 project science office, at the Laboratory for Cryospheric Sciences (NASA Goddard, Section 615).

References

[1] Youngren, Robert W., and Mikel D. Petty. "A multi-resolution HEALPix data structure for spherically mapped point data." Heliyon 3.6 (2017): e00332. doi: 10.1016/j.heliyon.2017.e00332

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

mortie-0.6.6.tar.gz (17.0 MB view details)

Uploaded Source

Built Distributions

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

mortie-0.6.6-cp310-abi3-win_amd64.whl (15.1 MB view details)

Uploaded CPython 3.10+Windows x86-64

mortie-0.6.6-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (15.1 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ x86-64

mortie-0.6.6-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (15.1 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64

mortie-0.6.6-cp310-abi3-macosx_11_0_arm64.whl (15.1 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

mortie-0.6.6-cp310-abi3-macosx_10_12_x86_64.whl (15.1 MB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

Details for the file mortie-0.6.6.tar.gz.

File metadata

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

File hashes

Hashes for mortie-0.6.6.tar.gz
Algorithm Hash digest
SHA256 e5bef408db1fa853f90e2d3c555b87ed6a84db34e583e70154dfe91f6a3dc224
MD5 57cbf54c4a391ca8ff9aec7290211048
BLAKE2b-256 5c4d0d48d514630cb9043d108a1d2750e9751bbd8dcd78453f40f1c1cc940c4a

See more details on using hashes here.

Provenance

The following attestation bundles were made for mortie-0.6.6.tar.gz:

Publisher: build-wheels.yml on espg/mortie

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

File details

Details for the file mortie-0.6.6-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: mortie-0.6.6-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 15.1 MB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mortie-0.6.6-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 1941bd4468aab975b62d46bf63fd96a7c0911df497b117dc52e285a3d072ce32
MD5 ff21d29f27d0f7972e32ece3d10ee039
BLAKE2b-256 85c6dd103e013a10945ccd3d048c3cf9d0192701bab24a54078f7a44f784e83e

See more details on using hashes here.

Provenance

The following attestation bundles were made for mortie-0.6.6-cp310-abi3-win_amd64.whl:

Publisher: build-wheels.yml on espg/mortie

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

File details

Details for the file mortie-0.6.6-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for mortie-0.6.6-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1ec7ccd4674a85fb0345c755e1a24dbc5bfd18177949dc6be5ddb66bcd2dafe5
MD5 3f975dd2ba5d04c3165a514866be9e4c
BLAKE2b-256 6abaadb452b8bdb15eaf9403d51dc0644ab2a0d2a74f05521472126082f3ae8a

See more details on using hashes here.

Provenance

The following attestation bundles were made for mortie-0.6.6-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build-wheels.yml on espg/mortie

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

File details

Details for the file mortie-0.6.6-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for mortie-0.6.6-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 79386011c7b85b98ca930c6017886528b71cc94863ce622490de099008c20b2e
MD5 d526ae2eef46beb9f72a313a0182c790
BLAKE2b-256 7c7fb843a10d0ebd536d95838de3826508243c21d6f697fcb6abe7e9e2bc0b81

See more details on using hashes here.

Provenance

The following attestation bundles were made for mortie-0.6.6-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: build-wheels.yml on espg/mortie

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

File details

Details for the file mortie-0.6.6-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mortie-0.6.6-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1e4b414f779237a3c2d2c60d771ec00aae55bf3e8d075207ae20e6066266cc3d
MD5 7d5c9e851edbad1623fb27a6d1347e4a
BLAKE2b-256 6947c28ce8c06dbd6c89b05c86aeb7335443b375b5b063bec9ffb4728140027a

See more details on using hashes here.

Provenance

The following attestation bundles were made for mortie-0.6.6-cp310-abi3-macosx_11_0_arm64.whl:

Publisher: build-wheels.yml on espg/mortie

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

File details

Details for the file mortie-0.6.6-cp310-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for mortie-0.6.6-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 8283525e0ef0de5eea9afebaf0ad352434cc49ce64babc8426ee00ccef1288f0
MD5 9eaa03c5b5394e9324fc276590d7bf07
BLAKE2b-256 523970c8cbeb1d9ff9b7c4eb322c310f3632e79f4bfa9ad95de18018190941ed

See more details on using hashes here.

Provenance

The following attestation bundles were made for mortie-0.6.6-cp310-abi3-macosx_10_12_x86_64.whl:

Publisher: build-wheels.yml on espg/mortie

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