使用python healpy
,我想显示(并导出)用于天空镶嵌(在不同级别)的healpix网格。我该怎么做呢?理想情况下,我需要中点,网格的顶点和连接它们的线。
非常感谢任何帮助。
答案 0 :(得分:0)
我已经在处理它,还有更多方法:
1)您可以使用具有功能pix2vec_nest(和pix2vec_ring)的IDL库,然后可以选择返回向量(n,3,4)中像素的4个顶点。
2)您可以使用Java版,其中包含方法HealpixBase.boundaries
3)您可以使用具有T_Healpix_Base :: boundaries表现相同的HEALPix_cxx库。
使用边界可以显示网格。请注意,最后一个方法的编码非常好,并且很容易理解和在另一个程序中使用!它只需要像素索引和输出向量:
template<typename I> void T_Healpix_Base<I>::boundaries(I pix, tsize step,
vector<vec3> &out) const
{
out.resize(4*step);
int ix, iy, face;
pix2xyf(pix, ix, iy, face);
double dc = 0.5 / nside_;
double xc = (ix + 0.5)/nside_, yc = (iy + 0.5)/nside_;
double d = 1.0/(step*nside_);
for (tsize i=0; i<step; ++i)
{
double z, phi, sth;
bool have_sth;
xyf2loc(xc+dc-i*d, yc+dc, face, z, phi, sth, have_sth);
out[i] = locToVec3(z, phi, sth, have_sth);
xyf2loc(xc-dc, yc+dc-i*d, face, z, phi, sth, have_sth);
out[i+step] = locToVec3(z, phi, sth, have_sth);
xyf2loc(xc-dc+i*d, yc-dc, face, z, phi, sth, have_sth);
out[i+2*step] = locToVec3(z, phi, sth, have_sth);
xyf2loc(xc+dc, yc-dc+i*d, face, z, phi, sth, have_sth);
out[i+3*step] = locToVec3(z, phi, sth, have_sth);
}
}