我的目的是根据目录中的信息检查要为每个适合图像创建的区域椭圆是否超过了图像的边界,就像我上载的示例一样。Example of fits image that some regions exceed the image boarders >
我的方法是使用regions.SkyRegion.contains
来检查是否在拟合图像补丁之外的某些天空点包含在根据地面真相目录创建的天空区域椭圆中。如果这些区域中包含异常值,则将其删除。
我创建了2个可能的异常值数组,例如left_side
([ra,dec])...
我的代码是:
for source_ in idxcatalog:
if full_cat[source_][12]==1:
ellipse_center = SkyCoord(full_cat[source_][3], full_cat[source_][4], unit='deg')
bmaj=full_cat[source_][7]
bmin=full_cat[source_][8]
pa=full_cat[source_][9]
skyreg = EllipseSkyRegion(center=ellipse_center, width=bmaj * u.arcsec, height=bmin * u.arcsec,
angle=pa * u.degree)
for point in left_side:
skycoord=SkyCoord(point[0]*u.degree, point[1]*u.degree)
x=skyreg.contains(skycoord, w)
if x is True:
print("true found")
#do something
我还用过:
if x==True:
do something`
和
if x==False:
do something
else:
do something_else
似乎分别在第二次和第三次尝试中,当值为True或else
时出现问题。
而不是得到错误或真实:我得到了
python3.5/site-packages/astropy/units/quantity.py:463: RuntimeWarning: divide by zero encountered in true_divide result = super().__array_ufunc__(function, method, *arrays, **kwargs)
然后执行似乎停止了,或者有时就像跳过了警告而没有返回任何内容。
问题出在哪儿,任何人都知道该怎么做或如何解决吗?