如何找到指定坐标内的所有像素索引?

How to find all pixel indices within specified coordinates?

有许多 Healpix IDL 例程旨在查找属于由其顶点定义的某些几何区域(例如球形三角形、球形多边形)的像素索引。有 query_* 例程(例如 query_triangle)。请参阅此处的文档:

http://healpix.jpl.nasa.gov/html/idlnode45.htm

我希望在我的 healpy 程序中使用这些像素索引。要么

(A) 我可以将 IDL query_* 例程的像素索引输出列表保存为 data_file.save 格式。然后,您可以使用各种模块将此 .sav 像素索引文件导入 Python,例如http://www.astropython.org/packages/idlsave94/

(B) 完全不使用 IDL 会方便得多! Healpy 有几个与像素相关的函数,但似乎无法单独使用 Healpy "convert" IDL query_* 例程。

有没有办法 query_polygon 使用 healpy?是否有可能做到这一点?

有点不清楚你到底想要什么,但你可以使用 healpy 中的 query_polygon。例如:

nside = 512
vertices = numpy.array([[....]])
healpy.query_polygon(nside, vertices)

将 return 多边形内的像素。 vertices 是多边形顶点的 (N, 3) 数组。


来自内置帮助:

query_polygon(nside, vertices, inclusive=False, fact=4, nest=False, ndarray buff=None
Returns the pixels whose centers lie within the convex polygon
defined by the *vertices* array (if *inclusive* is False), or which
overlap with this polygon (if *inclusive* is True).

Parameters
----------
nside : int
  The nside of the Healpix map.
vertices : float, array-like
  Vertex array containing the vertices of the polygon, shape (N, 3).
inclusive : bool, optional
  If False, return the exact set of pixels whose pixel centers lie
  within the polygon; if True, return all pixels that overlap with the
  polygon, and maybe a few more. Default: False.
fact : int, optional
  Only used when inclusive=True. The overlapping test will be done at
  the resolution fact*nside. For NESTED ordering, fact must be a power of 2, less than 2**30,
  else it can be any positive integer. Default: 4.
nest: bool, optional
  if True, assume NESTED pixel ordering, otherwise, RING pixel ordering
buff: int array, optional
  if provided, this numpy array is used to contain the return values and must be
  at least long enough to do so

Returns
-------
ipix : int, array
  The pixels which lie within the given polygon.

Note
----
This method is more efficient in the RING scheme.
For inclusive=True, the algorithm may return some pixels which don't overlap
with the disk at all. The higher fact is chosen, the fewer false positives
are returned, at the cost of increased run time.