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
日出日落时间计算计算
于 2024-04-26 17:46:39 首次发布