有点不清楚你到底想要什么,但你可以使用query_polygon
from healpy
。例如:
nside = 512
vertices = numpy.array([[....]])
healpy.query_polygon(nside, vertices)
将返回多边形内的像素。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.