1

我目前正在尝试从 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)
4

0 回答 0