Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

sphgeom: spherical geometry primitives

Overview

This low-level C++ library provides primitives for representing points and regions on the unit sphere, as well as support for partitioning the sphere. It can be used to answer the following sorts of questions:

  • Is point X inside region Y?
  • Do two regions A and B intersect?
  • Which pieces of the sphere does region C overlap?

Regions can be serialized to binary strings, so that they may be stored efficiently in files or VARBINARY database columns. They can also be approximated with simpler regions - for example, one can ask for the bounding circle of a convex polygon.

Python bindings that expose most of the C++ API are also provided via pybind11.

Points

There are 3 different classes for points

  • LonLat for spherical coordinates,
  • Vector3d for Cartesian vectors in ℝ³ (not constrained to lie on the unit sphere)
  • UnitVector3d for vectors in ℝ³ with unit ℓ² norm.

Regions

Four basic spherical Region types are provided:

  • Box, a longitude/latitude angle box
  • Circle, a small circle defined by a center and opening angle/chord length
  • Ellipse, the intersection of an elliptical cone with the unit sphere
  • ConvexPolygon, a convex spherical polygon with unit vector vertices and great circle edges

In addition to the spherical regions, there is a type for 3-D axis aligned boxes, Box3d. All spherical regions know how to compute their 3-D bounding boxes, which makes it possible to insert them into a 3-D R-tree. This is used by the exposure indexing task in the daf_ingest package to spatially index exposure bounding polygons using the SQLite 3 R*tree module.

A region can also determine its spatial relationship to another region, and test whether or not it contains a given unit vector.

Pixelizations

This library also provides support for assigning points to pixels (a.k.a. cells or partitions) in a Pixelization (a.k.a. partitioning) of the sphere, and for determining which pixels intersect a region.

Currently, the Chunker class implements the partitioning scheme employed by Qserv. The HtmPixelization class implements the HTM (Hierarchical Triangular Mesh) pixelization. The Q3cPixelization and Mq3cPixelization classes implement the original Quad Tree Cube indexing scheme and a modified version with reduced pixel area variation.

Installing with pip

A simple pip-compatible installer is available. This only installs the Python bindings and the resulting installation is not usable for linking from C++. Some metadata (in particular the version number) are not set properly for the distribution. The main purpose for now is to allow other packages to pip install from the GitHub URL in their CI systems where sphgeom is a dependency.

See Also

Contributing

For instructions on how to contribute, see http://dm.lsst.org/#contributing (or just send us a pull request).

Support

For help, see http://dm.lsst.org/#support.

Metadata

Release files for lsst-sphgeom 25.0.0a20224100

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for lsst-sphgeom 25.0.0a20224100
File Size Uploaded Provenance
lsst-sphgeom-25.0.0a20224100.tar.gz 129.3 kB Without provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for lsst-sphgeom 25.0.0a20224100
File
lsst_sphgeom-25.0.0a20224100-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
lsst_sphgeom-25.0.0a20224100-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
lsst_sphgeom-25.0.0a20224100-cp310-cp310-macosx_10_9_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.9+ x86-64 Details
lsst_sphgeom-25.0.0a20224100-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ x86-64 Details
lsst_sphgeom-25.0.0a20224100-cp39-cp39-macosx_11_0_arm64.whl CPython 3.9 CPython 3.9 macOS 11.0+ ARM64 Details
lsst_sphgeom-25.0.0a20224100-cp39-cp39-macosx_10_9_x86_64.whl CPython 3.9 CPython 3.9 macOS 10.9+ x86-64 Details
lsst_sphgeom-25.0.0a20224100-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.17+ x86-64 Details
lsst_sphgeom-25.0.0a20224100-cp38-cp38-macosx_11_0_arm64.whl CPython 3.8 CPython 3.8 macOS 11.0+ ARM64 Details
lsst_sphgeom-25.0.0a20224100-cp38-cp38-macosx_10_9_x86_64.whl CPython 3.8 CPython 3.8 macOS 10.9+ x86-64 Details

Total release size: 5.1 MB

Release files / lsst-sphgeom-25.0.0a20224100.tar.gz

Download URL lsst-sphgeom-25.0.0a20224100.tar.gz
Size 129.3 kB
Tags Source
SHA-256 checksum
How to use checksums
5bf5b272678b4431a2eca0647a085d344444d9f7dbd6ff717829193d2e34bdcb
BLAKE2b-256 checksum
How to use checksums
85a8b540869d8cf664aeaa18d2d662936e1defe4eb6e62cdaca1857b66e2f00c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.14

Release files / lsst_sphgeom-25.0.0a20224100-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL lsst_sphgeom-25.0.0a20224100-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 652.6 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
3079706749b913ba83a61c2954acb532b97af8beb215988d774744ffe2ef9392
BLAKE2b-256 checksum
How to use checksums
96da940d365467d1223f148f92435aeabf8f4b9596b6c87335e05319d2c5d84f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.14

Release files / lsst_sphgeom-25.0.0a20224100-cp310-cp310-macosx_11_0_arm64.whl

Download URL lsst_sphgeom-25.0.0a20224100-cp310-cp310-macosx_11_0_arm64.whl
Size 495.4 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
1b0144fcc7a396a3a995b05aeaa617b09f5427aaad5908b0e24c81bf4980204d
BLAKE2b-256 checksum
How to use checksums
4e52e0d926b537df03e5ba680a26c995a6e5e06470d8f464419eba1ca51ba723
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.14

Release files / lsst_sphgeom-25.0.0a20224100-cp310-cp310-macosx_10_9_x86_64.whl

Download URL lsst_sphgeom-25.0.0a20224100-cp310-cp310-macosx_10_9_x86_64.whl
Size 516.5 kB
Tags CPython 3.10 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
7c81adaafc4cac2d4ce08a92c03fdce1133e55febf241f39a7354a48335b65fd
BLAKE2b-256 checksum
How to use checksums
8669f979cca7bfb8047d71df7e39579dc6a40e55126aeba4ee356f6a3e7ec9c9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.14

Release files / lsst_sphgeom-25.0.0a20224100-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL lsst_sphgeom-25.0.0a20224100-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 656.6 kB
Tags CPython 3.9 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
f44f63c711d20fcf575f870ae85b9d8179abe8c3dd8e630952fe592d2f463331
BLAKE2b-256 checksum
How to use checksums
522dddb8409fcb430f9689f11c6c5c012996274a1267212c9ef8c5a98dd1ed00
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.14

Release files / lsst_sphgeom-25.0.0a20224100-cp39-cp39-macosx_11_0_arm64.whl

Download URL lsst_sphgeom-25.0.0a20224100-cp39-cp39-macosx_11_0_arm64.whl
Size 495.4 kB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
822798932a134612920b8a5039b068117cbe89cbadfd7d0060dfb87747e9e99d
BLAKE2b-256 checksum
How to use checksums
e4781268f95b8c5a57c1a23d94570afc7381b861929f41dfba98b4f5ac73efcf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.14

Release files / lsst_sphgeom-25.0.0a20224100-cp39-cp39-macosx_10_9_x86_64.whl

Download URL lsst_sphgeom-25.0.0a20224100-cp39-cp39-macosx_10_9_x86_64.whl
Size 516.7 kB
Tags CPython 3.9 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
3f099c0d0ba8296d1175352643e4a24366b16576473dff819ae76e729bc162e6
BLAKE2b-256 checksum
How to use checksums
6ab185aa274b5294f23fb3782f90e1cb41fccd3d0a5a1ae370f23be134c38395
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.14

Release files / lsst_sphgeom-25.0.0a20224100-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL lsst_sphgeom-25.0.0a20224100-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 652.7 kB
Tags CPython 3.8 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
d9b5dd04c43bd619005b2105afd4dcb486dfb73356d8ed017de4a229e610fb76
BLAKE2b-256 checksum
How to use checksums
f098c2884d1bdc47c1919781e28962a14cb2c90f019c65c3b76a0ec8ee934efc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.14

Release files / lsst_sphgeom-25.0.0a20224100-cp38-cp38-macosx_11_0_arm64.whl

Download URL lsst_sphgeom-25.0.0a20224100-cp38-cp38-macosx_11_0_arm64.whl
Size 495.3 kB
Tags CPython 3.8 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
4107e2b58d642375d8aaa24b36dc109544c8515e0c9b3e046f795b6faa75ac98
BLAKE2b-256 checksum
How to use checksums
614b5bdc8351abbca00c829a9e3d4d76ee1276597532f64ff22c8c98b16c1ad6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.14

Release files / lsst_sphgeom-25.0.0a20224100-cp38-cp38-macosx_10_9_x86_64.whl

Download URL lsst_sphgeom-25.0.0a20224100-cp38-cp38-macosx_10_9_x86_64.whl
Size 516.4 kB
Tags CPython 3.8 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
5cf9b2c20d37a4f5038a57bfaea625d1c0c4f66cbdcffa9703358f8852f910a9
BLAKE2b-256 checksum
How to use checksums
f6c3b5e06c7ff4f0b6154585d06813356a5d38b23ca9b8a4a7f4fd714dc89832
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.14

Security for lsst-sphgeom 25.0.0a20224100

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release
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