Skip to main content

A spherical geometry library.

Project description

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.

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

lsst-sphgeom-24.0.0a20222401.tar.gz (128.7 kB view details)

Uploaded Source

Built Distributions

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

lsst_sphgeom-24.0.0a20222401-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (606.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

lsst_sphgeom-24.0.0a20222401-cp310-cp310-macosx_11_0_arm64.whl (457.6 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

lsst_sphgeom-24.0.0a20222401-cp310-cp310-macosx_10_9_x86_64.whl (478.5 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

lsst_sphgeom-24.0.0a20222401-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (610.1 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

lsst_sphgeom-24.0.0a20222401-cp39-cp39-macosx_11_0_arm64.whl (457.7 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

lsst_sphgeom-24.0.0a20222401-cp39-cp39-macosx_10_9_x86_64.whl (478.6 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

lsst_sphgeom-24.0.0a20222401-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (607.5 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

lsst_sphgeom-24.0.0a20222401-cp38-cp38-macosx_11_0_arm64.whl (457.6 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

lsst_sphgeom-24.0.0a20222401-cp38-cp38-macosx_10_9_x86_64.whl (478.5 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

File details

Details for the file lsst-sphgeom-24.0.0a20222401.tar.gz.

File metadata

  • Download URL: lsst-sphgeom-24.0.0a20222401.tar.gz
  • Upload date:
  • Size: 128.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for lsst-sphgeom-24.0.0a20222401.tar.gz
Algorithm Hash digest
SHA256 7648820832e551473610bad73ae3580df2654d26a5047e4a18536359f32045ea
MD5 d86dae58d568bbf4ad1fc7aea5443405
BLAKE2b-256 86846bce2326f0ba15e770787029d8199a01ef63b29440075f7aa41c18c959a1

See more details on using hashes here.

File details

Details for the file lsst_sphgeom-24.0.0a20222401-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lsst_sphgeom-24.0.0a20222401-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 05a55490d11638154d7658a36a6afe4218d793fe303282c9fcf5d19c60855ed8
MD5 56eef2505f28de72299a2d07b540638f
BLAKE2b-256 c974b854ce6c0afa69c1daf18072a8e0e3b98e952a9be154968efc9bf4978105

See more details on using hashes here.

File details

Details for the file lsst_sphgeom-24.0.0a20222401-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lsst_sphgeom-24.0.0a20222401-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0636d8757aa2c2586051f7affa262c135df861f36089c5f7d0e42d6e1895e785
MD5 c38c4bd30c12d350ee5848025f25c725
BLAKE2b-256 4809323c6d37d46fde32ecf50c4157afde0cf6f98f90cd0a4ca45acad4b663a9

See more details on using hashes here.

File details

Details for the file lsst_sphgeom-24.0.0a20222401-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for lsst_sphgeom-24.0.0a20222401-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b29f467a70a1f5c3471016853f7bafeab0fe8c71742d4b7bf69c5657a0d8b444
MD5 14420d8d904076c614578e9626274dfe
BLAKE2b-256 f0f4685edb19867d5b8c73551f8acd71fb97379c7aa3d3e5f180aea7921b50d9

See more details on using hashes here.

File details

Details for the file lsst_sphgeom-24.0.0a20222401-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lsst_sphgeom-24.0.0a20222401-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4a90b9587ff7f10b246115caa6ee9e3b67fc24c11549e56d290aeaeb5af3c925
MD5 6615de16ed4f3e2cb6dc355afb2407f6
BLAKE2b-256 1cb0404734c773324e832c91f1d9d948ec3b2703d30827ec2c21d7d6bd46abcb

See more details on using hashes here.

File details

Details for the file lsst_sphgeom-24.0.0a20222401-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lsst_sphgeom-24.0.0a20222401-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5f1c9e30d75de75c3218d5754ac703d4e0519827879211ca9e9d839c3509997e
MD5 f380d7eb4a6906e61ca9991b75c507f1
BLAKE2b-256 0c5eaf8934cd129d42bafc7c9fbb6436e7d5ccc13788c12b2e6e4b41e5a88d26

See more details on using hashes here.

File details

Details for the file lsst_sphgeom-24.0.0a20222401-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for lsst_sphgeom-24.0.0a20222401-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f5ba8d5c203ec184777ba5a30d2efe137ea7a40cb415ac12c6deb07625ccdb61
MD5 ff487895666ea8ae4a01c76b7c49422f
BLAKE2b-256 4d2b2a225f49c8f0a69073688505fac319c7bfbb06082625df3980536ff81f98

See more details on using hashes here.

File details

Details for the file lsst_sphgeom-24.0.0a20222401-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lsst_sphgeom-24.0.0a20222401-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cefb7cc2d6a420a3d650e3b47c1eb0f54d67a8f11048f2e6eb3aab96d6f58806
MD5 4bd944854ad130a3cd25f7dc2ba1e403
BLAKE2b-256 8448f136eb64d0a151f3fd29876892f69bad4a3f3e0d4396116fd0d2e6f4a18d

See more details on using hashes here.

File details

Details for the file lsst_sphgeom-24.0.0a20222401-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lsst_sphgeom-24.0.0a20222401-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 610855921bffc6b11e59f57c547c36abf788d5fcde209c202fd030cb3b857bb1
MD5 7e0a9467ef2beb1960b2ad877cc875f4
BLAKE2b-256 355cdd9e3793c6d0bde7694a9a360fd24833e6b1da9b98f815b0e232a13ae350

See more details on using hashes here.

File details

Details for the file lsst_sphgeom-24.0.0a20222401-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for lsst_sphgeom-24.0.0a20222401-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 0d355bfbc864445a691b3298ed0eb0cc97acd55cf57f8a8b358dc10121c9bb2a
MD5 d7ee3abc790015592712dd61bd7497f5
BLAKE2b-256 e4935f423bda1598099f737d4bb26c170cf0245b253e5ed8a159edb07c1c8544

See more details on using hashes here.

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