Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python-在Simbad中进行坐标查询后,如何提取Aladin生成的图像(使用网站上的Simbad plot按钮打开)?_Python_Astronomy_Fits_Astroquery_Simbad - Fatal编程技术网

使用Python-在Simbad中进行坐标查询后,如何提取Aladin生成的图像(使用网站上的Simbad plot按钮打开)?

使用Python-在Simbad中进行坐标查询后,如何提取Aladin生成的图像(使用网站上的Simbad plot按钮打开)?,python,astronomy,fits,astroquery,simbad,Python,Astronomy,Fits,Astroquery,Simbad,基本目标:给定一组天空坐标(ra,dec),这个Python函数应该返回以这些坐标为中心的天空的FITS图像 详细目标:该函数将使用astroquery和simbad执行坐标查询。理想情况下,它将能够访问以(ra,dec)为中心的给定区域内的对象数据库。因此,还将输入一些尺寸参数(FoV或半径)。但主要是,当通过浏览器在simbad上执行查询时,有一个选项可以绘制以输入坐标为中心的星形区域,由AladinLite生成,函数应该返回此图像(希望是FITS图像) 我所做的:我在这里所做的一切都是为了

基本目标:给定一组天空坐标(ra,dec),这个Python函数应该返回以这些坐标为中心的天空的FITS图像

详细目标:该函数将使用astroquery和simbad执行坐标查询。理想情况下,它将能够访问以(ra,dec)为中心的给定区域内的对象数据库。因此,还将输入一些尺寸参数(FoV或半径)。但主要是,当通过浏览器在simbad上执行查询时,有一个选项可以绘制以输入坐标为中心的星形区域,由AladinLite生成,函数应该返回此图像(希望是FITS图像)

我所做的:我在这里所做的一切都是为了发现astroquery和simbad的用法。但我在文档中找不到任何关于如何通过astroquery获得阿拉丁卫星图像的信息。找到一种使用Python直接从Aladin获取图像的方法似乎也不太可能

问题:是否可以使用Python和astroquery在simbad坐标查询的浏览器版本上获得AladinLite生成的图像?如果是的话,我该怎么做呢

一些伪代码:

def generate_starfield(ra, dec, FoV):

    # define the sky coords
    coords = SkyCoord(ra=ra, dec=dec)

    # do an astroquery.simbad query using above coords
    query = perform_query(coords)

    # extract the image from the query generated by AladinLite
    image = get_aladinlite_image(query, FoV)

    return image

警告:我不是天文学研究人员,虽然我是Astropy开发人员,但我不是真正的用户,因此如果有对该问题有更多经验/理解的人愿意加入,可能会有一些更好的方法

但AladinLite并不是一个图像目录。它只是一个用于图像查看和打印的基于web的UI。然而,由U.Strasbourg托管的示例服务从他们的服务中获取数据。他们通过基于web的API提供这些数据。我不认为AladinLite提供了一个界面,可以将所有显示的磁贴收集到FITS图像中进行下载。这就是hips2fits服务的目的。顺便说一句,它在网站上写道:

我们将开发从astroquery.cds访问hips2fits的途径。同时,您应该开始从Python脚本查询HIPS2fit

因此,您的工作流程的第一部分是正确的:您可以使用
astroquery
查询Simbad。但是,您需要查询图像数据。目前还没有专门针对Python的API,但是web API有很好的文档记录,因此主要是构造正确的URL。下面是一个工作流示例,我使用了与您提供的屏幕截图相同的坐标:

>>来自astroquery.simbad导入simbad
>>>从astropy.coordinates导入SkyCoord
>>>coord=SkyCoord('161420.30000000-190648.1000000',单位=(u.hourangle,u.deg),帧='fk5')
>>>查询结果=Simbad.query\u区域(coord)
>>>查询结果
主ID RA DEC。。。等效波长双码
“h:m:s”“d:m:s”。。。
对象str13 str13。。。str1对象
----------------------- ------------- ------------- ... -------- -------------- -------------------
[T64]7141420.2881-190648.062。。。A O 2018yCat.1345…0G
IRAS 16114-18581422.1-190614。。。E M 1988IRASP.C……0J
2质量J16142091-1906051 16 14 20.9018-19 06 05.195。。。A O 2018A和A…616A…1G
现在假设我想要一个以结果中第一个对象为中心的图像(类似于web UI上显示的AladinLite预览):

>>从urllib.parse导入urlencode
>>>从astropy.io导入拟合
>>>object_main_id=查询结果[0]['main_id']。解码('ascii')
>>>object_coords=SkyCoord(ra=query_results['ra'],dec=query_results['dec'],
…单位=(u.hourangle,u.deg),帧='icrs')
>>>查询参数={
…hips:“DSS”,
…“对象”:对象\u主\u id,
…'ra':对象坐标[0].ra.value,
…'dec':对象坐标[0].dec.value,
…‘fov’:(2*u.arcmin.)至(u.deg.)值,
“宽度”:500,
…高度:500
... }                                                                                               
>>>url=f'http://alasky.u-strasbg.fr/hips-image-services/hips2fits?{urlencode(查询参数)}'
>>>hdul=fits.open(url)
正在下载http://alasky.u-strasbg.fr/hips-image-services/hips2fits?hips=DSS&object=%5BT64%5D++7&ra=243.58457533549102&dec=-19.113364937196987&fov=0.03333&width=500&height=500
|===================================================================================================504k/504k(100.00%)0s
>>>hdul.info()
>>>hdul.info()
文件名:/path/to/.astropy/cache/download/py3/ef660443b43c65e573ab96af03510e19
编号名称版本类型卡尺寸格式
0主1主HDU 22(500500)int16
>>>hdul[0]。标头
简单=T/符合FITS标准
BITPIX=16/阵列数据类型
NAXIS=2/数组维数
NAXIS1=500
NAXIS2=500
WCSAXES=2/坐标轴数
CRPIX1=250.0/参考点的像素坐标