【发布时间】:2018-12-22 02:59:11
【问题描述】:
我正在研究太阳黑子检测,我正在尝试使用 sunpy.net.hek 客户端构建地面实况掩码,以从知识库下载太阳事件。 我关注了这个tutorial。 我的问题是我无法在旋转后获得多边形像素坐标。那就是:
ch_boundary = SkyCoord( [(float(v[0]), float(v[1])) * u.arcsec for v in p3],
obstime=ch_date,
frame=frames.Helioprojective)
rotated_ch_boundary = solar_rotate_coordinate(ch_boundary, aia_map.date)
p3 保存事件的原始坐标(它们必须旋转,因为您的图片不能与 hek 上的事件具有相同的时间)。 rotated_ch_boundary 是一个 Astropy SkyCoord,但无法弄清楚如何从中获取相对于图像的像素坐标。
然后在教程中它只是使用 Sunpy Map 和 matplotlib 绘制坐标:
aia_map.plot(axes=ax)
ax.plot_coord(rotated_ch_boundary, color='c')
我不能这样做,因为我想在一个 numpy 数组上打印多边形(填充)并保存它。 我还尝试构建自定义 Sunpy 地图并使用相同的函数进行绘图:
from sunpy.net.helioviewer import HelioviewerClient
hv = HelioviewerClient()
filepath = hv.download_jp2('2017/07/10 10:00:00', observatory='SDO',
instrument='HMI', detector='HMI', measurement='continuum')
hmi = sunpy.map.Map(filepath)
# QUERY AND ROTATION CODE HERE...
hmi.plot(axes=ax)
ax.plot_coord(rotated_ch_boundary, color='c')
但它甚至没有在绘图上显示多边形,我不知道它是用于不同的分辨率还是什么。
您知道如何在自定义图像上绘制多边形并将其保存以便以后使用吗?
我的目的是创建一个黑色图像,突出显示一个白色多边形。多边形应该与相应图像中的太阳黑子处于完全相同的位置,假设是我从 helioviewer 下载的同一天的 SDO HMI 强度图。
【问题讨论】:
标签: python numpy matplotlib matplotlib-basemap astropy