尽管有掩蔽区域,但是从另一个平面上的一个平面进行映射

时间:2014-09-02 12:54:10

标签: python scipy scikit-learn interpolation computational-geometry

我有一组给定here的数据,其中第一列和第二列分别有天空坐标(ra,dec),第三和第四列是笛卡尔系统中的坐标(x, Y)。

enter image description here

我需要使用坐标xy制作二维插值曲面,使用RaDec创建另一个插值曲面。问题是掩模区域的存在,如上图所示。我可以通过绘制它们来说明缺失的数据(目录中有非NaN值)。这是我到目前为止尝试过的,并没有给出正确的答案:

from scipy.interpolate import griddata
import numpy as np
import matplotlib.pyplot as plt

data = np.loadtxt('test.asc')

ra = data[:,0]
dec = data[:,1]
Xpos = data[:,2]
Ypos = data[:,3]

xi = np.linspace(Xpos.min(), Xpos.max(), 1000)
yi = np.linspace(Ypos.min(), Ypos.max(), 1000)
xi, yi = np.meshgrid(xi, yi, copy=False)
ra_int = griddata(data[:,2:4], ra, (xi.flatten(), yi.flatten()),
                  method='cubic')
dec_int = griddata(data[:,2:4], dec, (xi.flatten(), yi.flatten()),
                   method='cubic')

使用griddata失败并仅返回NaN个值。是否有任何方法可以进行此插值,以便从给定的RaDec坐标估计xy的值,即使在蒙版区域中也是如此(来自{ {1}}和xyra)?

1 个答案:

答案 0 :(得分:1)

如果我做得对,那就是这样的:

CCD projection

将笛卡尔坐标系移动到 CCD 的中间位置,并将Equatoreal坐标移动到 CCD 的中间位置。然后单独计算x,y。您唯一需要的是为fx分别计算焦距y !!!


pos是笛卡尔坐标(x或y)
ang是等长坐标(RA或Dec)

  1. 从数据库获取边缘点

    将角度移至 CCD

  2. 的中间位置
  3. 从中计算焦点(fx,fy)

    f = pos/tan(ang)
    
  4. 现在您可以计算数据集中任何条目的投影

    将角度移至 CCD 的中间,然后按

    计算x,y
    pos=f*tan(ang)
    

    CCD 中间转换回原始笛卡尔坐标。如果这种方法正确,你应该检查几点

  5. <强> [注释]

    x轴会在您的输出中进行镜像,因此只需在末尾使用x=-x,然后再切换回原始笛卡尔坐标或使焦点f为负。

    如果你的 CCD 不与赤道轴对齐,那么你需要计算旋转(X轴和赤道之间的角度)并在转换后在Z轴周围应用旋转在转回之前...