python - 尽管有 mask 区域,但从一个平面映射到另一个平面

标签 python scipy scikit-learn interpolation computational-geometry

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

enter image description here

我需要使用坐标 x 制作一个二维插值曲面和 y另一个使用 RaDec .问题是masked region的存在,如上图所示。我可以通过绘制它们来说明缺失的数据(目录中没有 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值。有什么方法可以进行这种插值以估计 Ra 的值吗?和 Dec来自给定的 xy坐标甚至在掩蔽区域(从 xy 映射到 radec )?

最佳答案

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

CCD projection

只需将笛卡尔坐标系移动到CCD 的中间,同时将赤道坐标移动到CCD 的中间。然后分别计算 x,y。您唯一需要做的就是分别为 xy 计算焦距 f !!!


pos 是笛卡尔坐标(x 或 y)
ang 为赤道坐标(赤经或赤经)

  1. 从数据库获取边缘点

    将角度移到CCD

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

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

    将角度移动到 CCD 的中间,然后计算 x,y

    pos=f*tan(ang)
    

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

[注释]

x 轴在您的输出中是镜像的,因此只需在最后使用 x=-x,然后再移回原始笛卡尔坐标或离开焦点 f 否定。

如果您的 CCD 轴未与赤道对齐,那么您需要计算旋转(X 轴与赤道之间的角度)并围绕 Z< 进行旋转 转换后的轴在移回之前...

关于python - 尽管有 mask 区域,但从一个平面映射到另一个平面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25623926/

相关文章:

python - 用于 Python 的 Google Maps Engine API 客户端库,用于创建表资源

python - Optimize.fmin 没有找到行为良好的连续函数的最小值

python - scipy.signal.convolve 给出的结果与手动计算卷积积分不同

python - 决策树学习中当前节点到下一个节点的特征组合: useful to determine potential interactions?

python - 虚拟变量,有必要标准化吗?

python - 如何存储经过训练的分类器?

Python 脚本 - 帐户生成器

python - pymongo 和 $ne : null 的语法错误

python - Django 非提交模型对象和提交模型对象的交集

python - 如何在 Python 中为每个 x 数组值插入具有唯一 y 数组的 2D 数据?