首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Healpy query_polygon RuntimeError:未知异常

Healpy query_polygon RuntimeError:未知异常
EN

Stack Overflow用户
提问于 2019-04-06 11:40:11
回答 1查看 390关注 0票数 2

我使用healpy.query_polygon来获取多边形内的疗愈索引列表。根据文件:

顶点:包含多边形顶点的顶点数组,形状(N,3)。

但是,当我试图从以下多边形获取所有索引时,会出现一个RuntimeError: Unknown exception

In1

代码语言:javascript
复制
import healpy as hp

vertex_array = np.array([[0.65, -0.04, 0.76], [0.58, 0.38, 0.72], [0.91, -0.29, 0.31],[0.91, 0.18, 0.38]])

print(vertex_array.shape)
vertex_array

Out1

代码语言:javascript
复制
(4, 3)
array([[ 0.65, -0.04,  0.76],
       [ 0.58,  0.38,  0.72],
       [ 0.91, -0.29,  0.31],
       [ 0.91,  0.18,  0.38]])

In2

代码语言:javascript
复制
healpix_indexes_test = hp.query_polygon(4, vertex_array)

Out2

代码语言:javascript
复制
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
<ipython-input-63-5a14f69cb078> in <module>
----> 1 healpix_indexes_test = hp.query_polygon(4, vertex_array)

healpy/src/_query_disc.pyx in healpy._query_disc.query_polygon()

RuntimeError: Unknown exception

这里你可以看到这些点在一个球体上的可视化。

为了好玩,我尝试转换输入数组,因此它的形状变成(3,4)。Unknown exception问题消失了。但是这样的输入与文档有矛盾,所以我不相信。

In1

代码语言:javascript
复制
print(vertex_array.T.shape)
vertex_array.T

Out1

代码语言:javascript
复制
(3, 4)
array([[ 0.65,  0.58,  0.91,  0.91],
       [-0.04,  0.38, -0.29,  0.18],
       [ 0.76,  0.72,  0.31,  0.38]])

In2

代码语言:javascript
复制
healpix_indexes_test_1 = hp.query_polygon(4, vertex_array.T)

healpix_indexes_test_1

Out2

代码语言:javascript
复制
array([ 42,  58,  75, 107, 123, 140])

如有任何建议,我将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2019-04-08 13:24:13

帮助的健康成员上,找到了解决方案。正确定义顶点的顺序是很重要的。在我的例子中,这意味着最后两个点的坐标应该互换,使矩形变得简单,而不是自交叉:

In1

代码语言:javascript
复制
vertex_array_fixed = np.array([[0.65, -0.04, 0.76], [0.58, 0.38, 0.72], [0.91, 0.18, 0.38], [0.91, -0.29, 0.31]])

print(vertex_array_fixed.shape)
vertex_array_fixed

Out1

代码语言:javascript
复制
(4, 3)
array([[ 0.65, -0.04,  0.76],
       [ 0.58,  0.38,  0.72],
       [ 0.91,  0.18,  0.38],
       [ 0.91, -0.29,  0.31]])

In2

代码语言:javascript
复制
healpix_indexes_test = hp.query_polygon(4, vertex_array_fixed)

healpix_indexes_test

Out2

代码语言:javascript
复制
array([24, 40, 71])

来了可视化:

In3

代码语言:javascript
复制
Nside = 2048

healpix_indexes_test = hp.query_polygon(Nside, vertex_array_fixed)

healpix_indexes_test

Out3

代码语言:javascript
复制
array([ 5968575,  5968576,  5968577, ..., 17387119, 17387120, 17395310])

In4

代码语言:javascript
复制
Npix = hp.nside2npix(Nside)

whole_map = np.arange(Npix, dtype=float)
whole_map[healpix_indexes_test] = hp.UNSEEN

hp.mollview(m, title="Fixed rectangle")

Out4:输出图

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55548719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档