Skip to main content

Crates.io Documentation PyPI Rust Python

The Roaring Landmask

Have you ever needed to know whether you are in the ocean or on land? And you need to know it fast? And you need to know it without using too much memory or too much disk? Then try the Roaring Landmask!

The roaring landmask is a Rust + Python package for quickly determining whether a point given in latitude and longitude is on land or not. A landmask is stored in a tree of Roaring Bitmaps. Points close to the shore might still be in the ocean, so a positive value is then checked against the vector shapes of the coastline.

(source)

The landmask is generated from the GSHHG shoreline database (Wessel, P., and W. H. F. Smith, A Global Self-consistent, Hierarchical, High-resolution Shoreline Database, J. Geophys. Res., 101, 8741-8743, 1996) and the OpenStreetMap (© OpenStreetMap).

An alternative is the opendrift-landmask-data, which is slightly faster, is pure Python, but requires more memory and disk space (memory-mapped 3.7Gb).

Performance

Microbenchmarks:

test tests::test_contains_in_ocean         ... bench:          24 ns/iter (+/- 0)
test tests::test_contains_on_land          ... bench:       3,795 ns/iter (+/- 214)

Many points, through Python:

------------------------------------------------------------------------------------------------------ benchmark: 5 tests -----------------------------------------------------------------------------------------------------
Name (time in us)                       Min                     Max                    Mean                StdDev                  Median                   IQR            Outliers           OPS            Rounds  Iterations
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
test_landmask_many_par          34,335.6220 (>1000.0)   39,922.9660 (>1000.0)   36,167.6438 (>1000.0)  1,602.6359 (>1000.0)   35,658.2270 (>1000.0)  1,722.6990 (>1000.0)       9;1       27.6490 (0.00)         30           1
test_landmask_many             130,760.1480 (>1000.0)  131,155.3400 (>1000.0)  130,863.7110 (>1000.0)    137.1064 (598.03)   130,809.7410 (>1000.0)    135.3770 (>1000.0)       1;1        7.6415 (0.00)          8           1
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

The parallel version is significantly faster, while the sequential version is slightly slower than the equivalent benchmark in opendrift-landmask-data, which uses about 120 ms.

Usage from Python

from roaring_landmask import RoaringLandmask

l = RoaringLandmask.new()
x = np.arange(-180, 180, .5)
y = np.arange(-90, 90, .5)

xx, yy = np.meshgrid(x,y)

print ("points:", len(xx.ravel()))
on_land = l.contains_many(xx.ravel(), yy.ravel())

Building & installing

Pre-built wheels are available on PyPI:

  1. pip install roaring-landmask

To build from source, you can use pip:

  1. pip install .

or maturin:

  1. Install maturin.

  2. Build and install

maturin build --release
pip install target/wheels/... # choose your whl

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

roaring_landmask-0.11.0.tar.gz (571.1 kB view details)

Uploaded Source

Built Distributions

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

roaring_landmask-0.11.0-cp39-abi3-win_amd64.whl (97.5 MB view details)

Uploaded CPython 3.9+Windows x86-64

roaring_landmask-0.11.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (100.5 MB view details)

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

roaring_landmask-0.11.0-cp39-abi3-manylinux_2_12_i686.manylinux2010_i686.whl (100.1 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.12+ i686

roaring_landmask-0.11.0-cp39-abi3-macosx_11_0_arm64.whl (98.3 MB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

File details

Details for the file roaring_landmask-0.11.0.tar.gz.

File metadata

  • Download URL: roaring_landmask-0.11.0.tar.gz
  • Upload date:
  • Size: 571.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.14.1

File hashes

Hashes for roaring_landmask-0.11.0.tar.gz
Algorithm Hash digest
SHA256 551dd95d3c6b735ccea102b45bd0996b39581486a9934923265e87edfb3fdd15
MD5 252c4b9563a4e208db41bed626c61024
BLAKE2b-256 04b14c232188b2aa7e33f7b0876c8389c2275b563a715e6e10789067b39b32a3

See more details on using hashes here.

File details

Details for the file roaring_landmask-0.11.0-cp39-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for roaring_landmask-0.11.0-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 986093c3928ec10cbd41b87f522c530ab583a7e60f0788a1acca98e1c1341756
MD5 4fee4af2e7a5313dc507138540e0a414
BLAKE2b-256 2e4c54fd1a03a9facb49b4817f1fd79cf79dc6faefe378d62af789ff3b5ff751

See more details on using hashes here.

File details

Details for the file roaring_landmask-0.11.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for roaring_landmask-0.11.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e11b1e180ce28e2366f5238aa261db2b2d68007ee72800c4eccc70330f4608dd
MD5 0831a12932e9ba9f9ed4aba149d77964
BLAKE2b-256 a61a99419743511672a8a69db20f804499f48728282ded28dcf75917674e8f53

See more details on using hashes here.

File details

Details for the file roaring_landmask-0.11.0-cp39-abi3-manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for roaring_landmask-0.11.0-cp39-abi3-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 c1283fd529f5fa4ae159b8d0396d84c14d22a7a909e8d8a663260d90d8bdfe2e
MD5 4ce243d42477173540f7b4078af5c36a
BLAKE2b-256 9462fa2ff77aee4cb5fafce54b2f763b7cd5c6e569ddf520783ba2746230545d

See more details on using hashes here.

File details

Details for the file roaring_landmask-0.11.0-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for roaring_landmask-0.11.0-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ae5e1e72aa6468ad0c4fbf74595bae678ab3fd5efe19b6a41b1bbc800eba3ecb
MD5 6402ebce8a02c9702ab09bf09168cb88
BLAKE2b-256 934ae285d7ef078d55eefd042b7a56c171d1833c41b44b3db3f8894b66f98825

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.11.0 This release

5 files

0.10.1

6 files

0.10.0

6 files

0.9.2

6 files

0.9.1

1 file

0.8.0

11 files

0.7.3

6 files

0.7.2

6 files

0.6.1

6 files

0.5.3

6 files

0.4.1

25 files

0.3.1

21 files

0.2.4

21 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page