我目前正在尝试从 NOAA 下载 GFS 文件以获取辐照度预测。我对 NOAA 的 HRRR 文件执行了相同的过程,但由于某种原因,解析 GFS 文件并没有给我正确的结果。
对于美国西海岸的给定点,我在一年中的这个时候(当地时间下午 5 点左右)在日落之后的辐照度得到正值,这是我没有预料到的。
我知道来自 NOAA 的 GFS 预测尤其对经纬度坐标有不同的约定,所以我想知道这是否是这里的问题。最小的可重现代码如下。
import math
import numpy as np
import xarray as xr
import pandas as pd
from datetime import datetime, timedelta, date
import time
import pytz
latitude = 46.9 # latitude of point
longitude = -118.6 % 360 # longitude of point when converting to 0-360 scale used by NOAA GFS. This gives a value of 241.4
# Function for finding the NOAA coordinates nearest to the site's coordinates
def find_nearest(array,value):
idx = np.searchsorted(array, value, side="left")
if idx > 0 and (idx == len(array) or math.fabs(value - array[idx-1]) < math.fabs(value - array[idx])):
return float(array[idx-1])
else:
return float(array[idx])
variables = ['dswrfsfc'] # irradiance
GFS_URL = f'http://nomads.ncep.noaa.gov/dods/gfs_0p25/gfs20220131/gfs_0p25_00z' # GFS run for 1/31/22
dataset = xr.open_dataset(GFS_URL)[variables]
# Finding the nearest lat long coordinates for this point
GFS_latitude = find_nearest(dataset.lat,latitude)
GFS_longitude = find_nearest(dataset.lon,longitude)
# Parsing dataset for specific lat long coordinates and converting to pandas dataframe
parsed_dataset = dataset.sel(lon=GFS_longitude,lat=GFS_latitude).to_dataframe()
# localizing timezone since timestamps from NOAA are in UTC
local_tz = pytz.timezone('US/Pacific')
parsed_dataset.index = parsed_dataset.index.tz_localize('UTC')
parsed_dataset.index = parsed_dataset.index.tz_convert(local_tz)
parsed_dataset.head(12)