基于Python的球面几何工具
项目描述
spherical_geometry 库是一个Python包,用于处理表示天空中任意区域的球面多边形。
安装
在PyPI上
pip install spherical-geometry
在conda上
conda install -c conda-forge spherical-geometry
需求
Python 3.9或更高版本
Numpy 1.23或更高版本
astropy 5.0.4或更高版本
qd-library 2.3.7 或更高版本(可选:如果不可用,将使用捆绑版本)。要强制使用系统安装的版本,请使用 USE_SYSTEM_QD=1 pip install . 编译。
捆绑的qd-library
来源: https://www.davidhbailey.com/dhbsoftware/qd-2.3.24.tar.gz
提供自定义的 libqd/include/qd/qd_config.h 以避免运行任何配置脚本的需求。这种通用配置可能不会针对您的系统进行优化。
当与系统优化的 qd 库链接时,spherical_geometry 测试套件会失败,因为测试是为通用情况编写的。
坐标表示
世界空间中的坐标通常表示为赤经和赤纬(ra 和 dec),或经度和纬度。虽然这些表示方法很方便,但在两极处存在不连续性,使得在天空球体的任意位置上对这些坐标进行操作更加困难。因此,本库的所有内部操作都是在三维向量空间中完成的,其中坐标表示为 (x, y, z) 向量。spherical_geometry.vector 模块包含将 (ra, dec) 和 (x, y, z) 表示之间进行转换的函数。
尽管任何 (x, y, z) 三元组都代表一个向量,因此代表天空球体上的一个位置,但必须在归一化坐标和未归一化坐标之间做出区分。归一化坐标定义为长度为 1 的向量,即
为了防止不必要的重新计算,本库中的许多方法都假设传入的向量已经归一化。如果不是这种情况,可以使用 spherical_geometry.vector.normalize_vector 对向量数组进行归一化。
当不在笛卡尔向量中工作时,库允许用户在度或弧度中工作。所有需要或返回角度值的方法都有一个 degrees 关键字参数。当 degrees 为 True 时,这些测量值以度为单位,否则以弧度为单位。
球面多边形
球面多边形是天空球体上由大圆弧包围的任意区域。它们由 ~spherical_geometry.polygon.SphericalPolygon 类表示。
表示
定义多边形的点可通过 ~polygon.SphericalPolygon.points 属性获得。它是一个 Nx3 数组,其中每一行是一个归一化的 (x, y, z) 向量。多边形点是显式封闭的,即第一个和最后一个点是相同的。
内部在哪里?
多边形的多边形边用于将“内部”区域与“外部”区域分开。在传统的二维平面表面上,“内部”是有限区域,“外部”是无限区域。然而,由于球面是环形的,即它自己环绕,球面多边形实际上定义了两个有限区域。为了指定哪个应被视为“内部”与“外部”,多边形的定义还有一个“内部点”,它只是任何应被视为多边形内部的点。
在以下图像中,内部点(用红色点标记)表明多边形的面积是绿色区域,而不是白色区域。
多边形的内部点可以通过 ~polygon.SphericalPolygon.inside 属性获得。
方向是什么?
使用多边形的几个算法的正确性取决于定义它的点的方向一致性。也就是说,点应该按照顺时针顺序排列。在创建新的球面多边形时,如果点不是按照顺时针顺序排列,定义多边形的点的顺序将被反转。使用方法 SphericalPolygon.is_clockwise 来判断点是否按照顺时针顺序。它接受两个连续的边并计算边的法向量。如果法向量指向球体中心内部,则两个边是逆时针的。如果法向量指向外部,则两个边是顺时针的。代码通过计算两个边与两个边的顶点的三重积来确定方向。对所有边求和的三重积给出多边形中点的占主导地位的方向。
不连续的多边形
如果一个多边形是多个多边形交集的结果,它可能是断开的。断开的多边形表示为球面多边形的列表。库内部处理这些细节。然而,用户必须意识到,多边形的几个属性是生成器,一次返回一个多边形的值。要访问所有属性的值,可以使用for循环或将属性强制转换为列表。是生成器的属性有
SphericalPolygon.points:定义每个多边形的点
SphericalPolygon.inside:每个多边形的内部点
如果两个多边形的交集生成断开的多边形,则代码将计算断开多边形的新内部点。
创建球面多边形
SphericalPolygon 对象有5种不同的构造函数
SphericalPolygon:接受一个 (x, y, z) 点的数组,或一个断开 SphericalPolygon 实例的列表。
SphericalPolygon.from_radec:接受一个 (ra, dec) 点的数组和内部点。
SphericalPolygon.from_cone:从一个天球上的圆锥创建多边形。接受 (ra, dec, radius)。
SphericalPolygon.from_wcs:使用其WCS头关键字从FITS图像的足迹创建多边形。接受FITS文件名或 astropy.io.fits.Header 对象。
SphericalPolygon.convex_hull:创建一个多边形,它是点列表的凸包。
球面多边形上的操作
一旦有一个 SphericalPolygon 对象,就有许多操作可用
~SphericalPolygon.contains_point:确定给定点是否在多边形内部。
~SphericalPolygon.intersects_poly:确定一个多边形是否与另一个多边形相交。
~SphericalPolygon.area:确定多边形的面积。
~SphericalPolygon.union 和 ~SphericalPolygon.multi_union:返回两个或多个多边形并集的新多边形。
~SphericalPolygon.intersection 和 ~SphericalPolygon.multi_intersection:返回两个或多个多边形交集的新多边形。
~SphericalPolygon.overlap:确定给定多边形与另一个多边形重叠的程度。
~SphericalPolygon.to_radec:将多边形中的 (x, y, z) 点转换为 (ra, dec) 点。
~SphericalPolygon.draw:使用matplotlib的Basemap工具包绘制多边形。这个特性相当简单,主要用于调试目的。
大圆弧
如上所示,大圆弧被用来定义多边形的边。模块 spherical_geometry.great_circle_arc 包含了处理这些弧线的一系列有用函数。
length:返回球面上两点之间的角距离。
intersection:返回两个大圆弧的交点。
intersects:判断两个大圆弧是否相交。
intersects_point:判断一个点是否在大圆弧上。
angle:计算两个大圆弧之间的角度。
midpoint:计算大圆弧的中点。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分发
构建分发
哈希值 for spherical_geometry-1.3.2-cp312-cp312-win_amd64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a3090d10f67ad0cb9497fe2517028c7241de32e97e5d6cf5042d7cd85a2db4c2 |
|
MD5 | cb80366a1c58e573f47a3e160804ed36 |
|
BLAKE2b-256 | c1c0c43f75bb0ceb508b31d043b8aad758bbb652301365bb0a820b62f64681d8 |
哈希值 for spherical_geometry-1.3.2-cp312-cp312-win32.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0c59cae46ede5a0c1352edebffef8651620c6ab2e863f1dd35043b74ac298b77 |
|
MD5 | b3a0d97065120556e4a8e41b61bda9be |
|
BLAKE2b-256 | 9f0c58d482db7f7ebbe7cc0aa68de36a6471a1c24fc076274bb589f23a164e85 |
哈希值 for spherical_geometry-1.3.2-cp312-cp312-musllinux_1_2_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8fd68dffe3fc33ea6e1c50730ed59ffcd433d609a51daf599fd4ec1848652901 |
|
MD5 | 9c025144d774c9c570a44b3134976c96 |
|
BLAKE2b-256 | 870af324afd2ac9adb2f58bcdaff94287320fecee534e4eb6df08a0e26222048 |
哈希值 for spherical_geometry-1.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 728e1cda8ad1ebebf60cbb48d763946813169133f12640bc1c11b49ea838b8db |
|
MD5 | 0ed09b1cf6614f51c43fd4ddee49f129 |
|
BLAKE2b-256 | 4aea878a89446f9c08ca68e8d1cad6d732b34bb9608ada00f790897591df8e1e |
哈希值 for spherical_geometry-1.3.2-cp312-cp312-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5173f56001b8721181adc12b377898c58afca76159937a3391aafcfc756d2a05 |
|
MD5 | 9523c22788844e9fbd330a7fb5b0bac5 |
|
BLAKE2b-256 | d7bfa21de23ab3887bc5ec7883c8748ffe2731eb3323eaccecea3e443e566e43 |
哈希值 for spherical_geometry-1.3.2-cp312-cp312-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ce5ceef9902e2564d44b5c22c11a7e4590918acf149c06f99611e10b6a76a3f7 |
|
MD5 | 1c289980b4d86e741941db3e28c145b3 |
|
BLAKE2b-256 | a1bcb6c2abafce560d0b649abf0b6c2c31df2129144619807177a7dc58f4e09b |
哈希值 for spherical_geometry-1.3.2-cp311-cp311-win_amd64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 54d178c3cddc271ae5e0f1e4c49cd99e22358f8047a12804fcf201979172de9c |
|
MD5 | fd6d6dd0266aae55704ad94d283c7e60 |
|
BLAKE2b-256 | f4db3668a968b7b88ec0d4ee2c117e19d9185c306888fe019fd8e001ac64525e |
哈希值 for spherical_geometry-1.3.2-cp311-cp311-win32.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e3c01f2074c2b36f803311180d1a78b914bb30283f6eea1644c93928e7782c20 |
|
MD5 | 76560d1af45be9e4001bd3bf2c843be5 |
|
BLAKE2b-256 | fca1b2c8eb18f58e319d088eeadb6985239f0119c4bb44d15b0d11c726167af8 |
哈希值 for spherical_geometry-1.3.2-cp311-cp311-musllinux_1_2_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6b125ac4dc9ed8cab0325a84b6d2c676fc3a32c9f8c1d5055a053c30413f67fb |
|
MD5 | 05b66731af99aedc9f662175dc2854d2 |
|
BLAKE2b-256 | b54cb99dffaf8193da118724a322d7ac14149596d8fd9ba0efe76652798acf43 |
哈希值 for spherical_geometry-1.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6ebefd216e64bfdbe150036c117593b5cb22f75ecf552598e35aa3cd1b822310 |
|
MD5 | 03f6ab52ee91bcc4368476cd3d0cbf02 |
|
BLAKE2b-256 | 5dc18447207a8e8245843e6b28016535f29c58c9ce50bbc6c598d2b0c8034d24 |
哈希值 for spherical_geometry-1.3.2-cp311-cp311-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0e27786b7509aa16f15809a1ed2d2fcca7570a65e7376c5b867bc0c726557322 |
|
MD5 | 8de47cf4d99ae7fad0bfd7aa2cbb7d3b |
|
BLAKE2b-256 | 56538a2e1b46de05c7775c9d9e7946998c8c7c51ba3354be94249ed4d5a4a10d |
哈希值 for spherical_geometry-1.3.2-cp311-cp311-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 03e010efaa470d708201262cf8f1ac94b26775e8e039f6ea77559c798a3cf697 |
|
MD5 | 2cff475006961112121e8fe492f7de29 |
|
BLAKE2b-256 | 894bfbc162b25d93932de384dd11cc7f6e177a5e3e521c94903db0d13c3cd4cb |
哈希值 用于 spherical_geometry-1.3.2-cp310-cp310-win_amd64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1513841201510a071168cb6bbaaf03a5054878d373a3f8fe9a3aa38c4edf4b63 |
|
MD5 | 8f1d06a2e702ba820b3f9f99276d607b |
|
BLAKE2b-256 | 8e5481d610de18ac372830d808ec2095fb11f03aad5ef957695d080fe7a7f1b7 |
哈希值 用于 spherical_geometry-1.3.2-cp310-cp310-win32.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 06cd418fb475fb6a51b2b62dbc35a5e828ae00fd6e7f1c08dc902f8a97faa52a |
|
MD5 | 937ab0f420f18b83e8ab744740947d07 |
|
BLAKE2b-256 | 93e62dcbc65f68a36ed29524780a35f217deff5a6fd718e5f12ed87054983643 |
哈希值 用于 spherical_geometry-1.3.2-cp310-cp310-musllinux_1_2_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0c09f8caba44873398dbe1a5dfbefd9d70e17140125593ec9ec4eef753f2f111 |
|
MD5 | 7a19c6590d955293bb6f33196114021b |
|
BLAKE2b-256 | d9ee5032360d26bc6a03c696daa24b54f94eedf961989983de2d283af74dfaf9 |
哈希值 用于 spherical_geometry-1.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 005e2e529ed6c21609c77fed787efbd5731fe0f86d729fb6ed9f1ac9ae7ab2b7 |
|
MD5 | 3d2c3832d18ee4581cce9cb6bfe316a5 |
|
BLAKE2b-256 | cd930af19edd6d5cd7bcb90eb949240e52ce9ad29c93c1a5db38468046f3ecd1 |
哈希值 用于 spherical_geometry-1.3.2-cp310-cp310-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b87668f88f0a16cff4061f8d4d6099b800316888e27824db3d1892fb4d0b97fb |
|
MD5 | 3ca4c6ffcf021c03c66764610eb16d99 |
|
BLAKE2b-256 | bf3b6587b4ba284ce4da31caf3452aa905b485c3d91650e0e9b258a80e5b5656 |
哈希值 用于 spherical_geometry-1.3.2-cp310-cp310-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 06cb0965aed16f4247dee04df5a177cff24076b40bf752fc3c6885d2f0006185 |
|
MD5 | be188f73212a6d9724ee45a60a2ddbc7 |
|
BLAKE2b-256 | 5a37e52237d48cdf4466cc685bf83c4cbdc2df02b0f4386aa9bb37290423efff |
哈希值 用于 spherical_geometry-1.3.2-cp39-cp39-win_amd64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | caf55117b9fbb130cb1ca090d395bb89bd032bd449534a74f095e9490dbcec50 |
|
MD5 | 6834cc85feb00a6f4ccc46c6ada11851 |
|
BLAKE2b-256 | e7e911e6fbbff500ad3f2f12f62d8bdd43ec9bd6e940e0f5a0acbc08d5e1a9b0 |
哈希值 用于 spherical_geometry-1.3.2-cp39-cp39-musllinux_1_2_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | bc9e125bd75014f8ad6c677ca2913e70b039c14125680811336ba0247956a54e |
|
MD5 | e7d878c408d575b4bd4d530a5e1f590a |
|
BLAKE2b-256 | 610f7a696e0bb58398c52cdb3e8669c838b8e2fff49ddf5cfe6a1d12d3a57a90 |
哈希值 用于 spherical_geometry-1.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8c6e34806b25f965e4564ef11e4c487df6afc71e25605772e2d56244cc57cb62 |
|
MD5 | 57c351a5d6512365046ea5c2a1859754 |
|
BLAKE2b-256 | 9cd5288a42ca95e88743c229ee0352976664eba0851686bb9e2bf09141c8b443 |
哈希值 用于 spherical_geometry-1.3.2-cp39-cp39-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b0a1ff01e0c7f2f749c0c038ba91fa0096069ae243febda2c980f455fb99e886 |
|
MD5 | e7cffa881c3927ba3a3583e7ae8388f1 |
|
BLAKE2b-256 | aa83986d436933f065a57912b38d9385ef26ffcd9e19227b1b9f98ed7b66c501 |
哈希值 用于 spherical_geometry-1.3.2-cp39-cp39-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | accab32117fdaf7aa94b3ffe7568b9f5fe9cb0d519a59d15f44ddab6030a277e |
|
MD5 | 2879d4e7aa118f2f26a1e50e098d4c18 |
|
BLAKE2b-256 | acaace807aa7210ba0393a9802fbd23b773347f239a390adb59a787afee1f540 |