深空天体反差指数计算

反差指数计算

运行计算反差指数.py输出结果

数据源:NI反差指数源.csv

NI反差指数源.csv数据格式:

目标,bmag,vmag,lx(长轴/arcmin),ly(短轴/arcmin)
import math

# 修正issue与公式来源
# https://github.com/Stellarium/stellarium/issues/1145

# 根据你的环境设置NELM:
# ! Class 1 = NELM 7.6-8.0; average NELM is 7.8
# ! Class 2 = NELM 7.1-7.5; average NELM is 7.3
# ! Class 3 = NELM 6.6-7.0; average NELM is 6.8
# ! Class 4 = NELM 6.1-6.5; average NELM is 6.3
# ! Class 5 = NELM 5.6-6.0; average NELM is 5.8
# ! Class 6 = NELM 5.1-5.5; average NELM is 5.3
# ! Class 7 = NELM 4.6-5.0; average NELM is 4.8
# ! Class 8 = NELM 4.1-4.5; average NELM is 4.3
# ! Class 9 = NELM 4.0
# ! @arg idx Bortle Scale Index (valid: 1..9, will be forced to valid range)
NELM = 7.3

# 输入:深空天体的星等、长轴与短轴(arcsec)
# 输出:深空天体的反差指数
def calContrastIndex(mag, majorAxisSize, minorAxisSize):
    # // Compute an extended object's contrast index: http://www.unihedron.com/projects/darksky/NELM2BCalc.html
    # 	// Sky brightness
    # 	// Source: Schaefer, B.E. Feb. 1990. Telescopic Limiting Magnitude. PASP 102:212-229
    # 	// URL: http://adsbit.harvard.edu/cgi-bin/nph-iarticle_query?bibcode=1990PASP..102..212S [1990PASP..102..212S]
    def getSurfaceBrightnessWithExtinction(mag, majorAxisSize, minorAxisSize):
        sq = 3600 * 3600
        # arcsec^2 or arcmin^2
        if minorAxisSize == 0:
            SurfaceArea = math.pi * (majorAxisSize / 2) * (majorAxisSize / 2)  # S = pi*R^2 = pi*(D/2)^2
        else:
            SurfaceArea = math.pi * (majorAxisSize / 2) * (minorAxisSize / 2)  # S = pi*a*b
        if mag < 99 and majorAxisSize > 0:
            return mag + 2.5 * math.log10(SurfaceArea * sq)
        else:
            return 99
    B_mpsas = 21.58 - 5 * math.log10(math.pow(10, 1.586 - NELM * 0.2) - 1)
    # // Compute an extended object's contrast index
    #	// Source: Clark, R.N., 1990. Appendix E in Visual Astronomy of the Deep Sky, Cambridge University Press and Sky Publishing.
    #	// URL: http://www.clarkvision.com/visastro/appendix-e.html
    return -0.4 * (getSurfaceBrightnessWithExtinction(mag,majorAxisSize,minorAxisSize) - B_mpsas)


import csv
def csvload(src,srccoding='utf-8',dem=','):
    dic = {}
    f = open(src, "r", encoding=srccoding)
    reader = csv.reader(f,delimiter=dem)
    return list(reader)

lines = csvload("NI反差指数源.csv")
for it in lines:
    if float(it[1]) != 99 or float(it[2]) != 99:
        if float(it[3]) != 0 or float(it[4]) != 0:
            mag = float(it[2])
            if float(it[2]) == 99:
                mag = float(it[1])
            lmax = float(it[3])
            lmin = float(it[3])
            if float(it[4]) != 0:
                lmin = float(it[4])
            print(it[0],'反差指数',calContrastIndex(mag,lmax/60,lmin/60))

ref:Stellarium@github

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值