在自定义 numpy 数组而不是 Sunpy Map 上绘制 SunPy HEK 多边形掩码
Overplot SunPy HEK polygon mask on custom numpy array instead of Sunpy Map
我正在研究太阳黑子检测,我正在尝试使用 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 强度图。
解决方案:
aia_map.world_to_pixel(rotated_ch_boundary)
或
rotated_ch_boundary.to_pixel(aia_map.wcs)
感谢 fraserwatson this post
我正在研究太阳黑子检测,我正在尝试使用 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 强度图。
解决方案:
aia_map.world_to_pixel(rotated_ch_boundary)
或
rotated_ch_boundary.to_pixel(aia_map.wcs)
感谢 fraserwatson this post