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.0a20222500.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.0a20222500-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.0a20222500-cp310-cp310-macosx_11_0_arm64.whl (457.6 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

lsst_sphgeom-24.0.0a20222500-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.0a20222500-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (610.0 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.9macOS 11.0+ ARM64

lsst_sphgeom-24.0.0a20222500-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.0a20222500-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.0a20222500-cp38-cp38-macosx_11_0_arm64.whl (457.6 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

lsst_sphgeom-24.0.0a20222500-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.0a20222500.tar.gz.

File metadata

  • Download URL: lsst-sphgeom-24.0.0a20222500.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.0a20222500.tar.gz
Algorithm Hash digest
SHA256 961cd51d15005a0514850e682d694b660331a8c2c2cb55265c9bbe81c1521905
MD5 5abfb873630f209b12b66186a8e4854a
BLAKE2b-256 96a3672d089cc3ad00006299166b600b33e1daba6cc00d5caceb6976f8e6c1c1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lsst_sphgeom-24.0.0a20222500-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c29af8bd8a4cc8818abc19252e36fbd0aad428d5f0ca8f8544451b7b3fc987f5
MD5 86b100593909ea788150ef1ebeaadb51
BLAKE2b-256 92e052a0595dfd5b2fd388775cf340beccd9d683f92e617d27032fd9ab1e13de

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lsst_sphgeom-24.0.0a20222500-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 926abb8d76a41e224fb6d96e0c8cefe28a14dbf9203f8ad99fcb3a4d2f4d9f9e
MD5 ca7a63ec324c46b8b3dd17c3de6d192d
BLAKE2b-256 33f113e0811a3ce148ec40c14b532162fa8573ebacdb3a31368bb886442ac8e9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lsst_sphgeom-24.0.0a20222500-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 72de3b8b50af311a6eb3f338e30563ee9cbdbf40dd2737da09a3c64ba6f07961
MD5 a8ad447b8034c68130902f624ae25b2b
BLAKE2b-256 62e9cb470c034b7328034ca7545bc9982800e1fd79804d17337faa8ab8501896

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lsst_sphgeom-24.0.0a20222500-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 be3b68fdffaed46c0e60291b2f182ed2e056a2ff7b361dc26751983980db6cbe
MD5 27613cc97bdc5206fa90752bdbc6eca1
BLAKE2b-256 0f81e3bfa08d2c390a119f811b3b6a973d8904e59e4ea1fc89a0f4a3c77aee91

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lsst_sphgeom-24.0.0a20222500-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a2e634e8b0fc23090f7d08cd5d61160c1d9322fb007a7789e2638e94efe527b0
MD5 6fd3ac0db850f99e6ba91f2c42fcdcf1
BLAKE2b-256 eb4c4103e7d2a1dc993b743339378252e7f24e19b1ef02dd3f3b74c42ea22049

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lsst_sphgeom-24.0.0a20222500-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a2377fd899c11700764d85fa5a6f711919187c6e8950f46b3b905fd56e187831
MD5 6d52a8b731f1ff400d0659f708714bb4
BLAKE2b-256 80fea3ca21b74fda7f794df821c7e23953ba346ff2bdd6313885e0e8daaadd62

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lsst_sphgeom-24.0.0a20222500-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 84abaa28e0ddcb9ec096afd9371f058a6ef8f8caa0ed153eb26529240d194e89
MD5 e7471534892e75ea3a44cd5352dd0ef4
BLAKE2b-256 2eca89db9828ee9da20c38418b7da7d749e2fd42f982f92c419e79026d366582

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lsst_sphgeom-24.0.0a20222500-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9c773eca114d74c9b0b7c3cc968f3c65054310df6395c5a3ca41d69486a60640
MD5 1f2607c14b4f14ed76a760be79569095
BLAKE2b-256 d3dba02b961be1da54e569d14450d1af869539ed499db507840b0790fc6c1892

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lsst_sphgeom-24.0.0a20222500-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6e970005d61cbcf8d20847e600610ad14d4333eaf119eb031971d22af34f696f
MD5 1d4398c76a40ff9bda59781c79a5c236
BLAKE2b-256 59b85028b5cfdbe6a92a44ee0696011d6b41bf5432f5537afeab0a6e31695cb3

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