日出日落时间计算计算

import ephem
import datetime
'''局地经纬度时间计算日出日落的时间,以UTC的形式输出'''
def calculate_sunrise_sunset(latitude, longitude, date):
    # 创建观测者对象
    observer = ephem.Observer()
    observer.lat = str(latitude)  # 纬度 40.7128
    observer.lon = str(longitude)  # 经度 -74.0060
    observer.elevation = 0  # 海拔,设为0即为海平面

    # 计算日出和日落时间
    sun = ephem.Sun()
    sunrise = observer.next_rising(sun, start=date)
    sunset = observer.next_setting(sun, start=date) #'2024/04/26'
    
    sunrise=datetime.datetime(1899,12,31)+datetime.timedelta(days=float(sunrise))
    sunset=datetime.datetime(1899,12,31)+datetime.timedelta(days=float(sunset))
    
    return sunrise, sunset
    
'''Nature论文算法'''
def time(lon,lat,yDay):
    gamma=lat/180*pi
    psi=yDay/365.0*2*pi
    solarDec= (0.39637\
            - 22.9133 * cos(psi)\
            + 4.02543 * sin(psi)\
            - 0.38720 * cos(2*psi)\
            + 0.05200 * sin(2*psi)) *pi / 180.0
    r=-tan(gamma)*tan(solarDec)
    if(r <= -1):
        day_length=24.0;
    else:
        if(abs(r) < 1) :
            day_length=24.0 * acos(r) / pi;
        else:
            day_length=0
            
    sunrise=12-day_length/2 #sunrise local time
    sunset=time_start+day_length #sunset local time
    return sunrise, sunset
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值