Navigatie overslaan

NOAA Global Forecast System (GFS)

Weather GFS NOAA

Historische weergegevens per 15 dagen voor Verenigde Staten (voorbeeld: temperatuur, neerslag, wind), geproduceerd door het Global Forecast System (GFS) en afkomstig van de National Oceanic and Atmospheric Administration (NOAA).

Het Global Forecast System (GFS) is een weersvoorspellingsmodel dat door de National Centers for Environmental Prediction (NCEP) wordt geproduceerd. Via deze gegevensset zijn tientallen atmosferische en grond-/bodemvariabelen beschikbaar, van temperatuur, windsnelheden en neerslag tot bodemvochtigheid en atmosferische ozongehalte. Het GFS dekt de hele aardbol bij een horizontale basisresolutie van 18 mijl (28 km) tussen rasterpunten. Deze wordt gebruikt door de operationele prognosemakers die het weer tot aan 16 dagen in de toekomst voorspellen. De horizontale resolutie zakt terug naar 44 mijl (70 km) tussen rasterpunten voor voorspellingen tussen één week en twee weken. Deze gegevensset is specifiek afkomstig uit GFS4.

Volume en retentie

Deze gegevensset wordt opgeslagen in de Parquet-indeling. De set wordt dagelijks bijgewerkt met toekomstige prognosegegevens voor 15 dagen. Tot aan 2019 zijn er in totaal ongeveer 9 miljard rijen (200 GB).

Deze gegevensset bevat historische records die van december 2018 tot heden zijn verzameld. U kunt in onze SDK gebruikmaken van parameterinstellingen om gegevens op te halen binnen een specifiek tijdsbereik.

Opslaglocatie

Deze gegevensset wordt opgeslagen in de Azure-regio US - oost. Het wordt aanbevolen om rekenresources in US - oost toe te wijzen voor affiniteit.

Aanvullende informatie

Deze gegevensset is afkomstig van het Global Forecast System van de NOAA. Kijk hier en hier voor aanvullende informatie over deze gegevensset. Stuur een e-mail naar als u vragen hebt over de gegevensbron.

Mededelingen

AZURE OPEN GEGEVENSSETS WORDEN DOOR MICROSOFT ONGEWIJZIGD GELEVERD. MICROSOFT GEEFT GEEN GARANTIES, EXPLICIET OF IMPLICIET, ZEKERHEDEN OF VOORWAARDEN MET BETREKKING TOT HET GEBRUIK VAN DE GEGEVENSSETS. VOOR ZOVER IS TOEGESTAAN ONDER HET TOEPASSELIJKE RECHT, WIJST MICROSOFT ALLE AANSPRAKELIJKHEID AF VOOR SCHADE OF VERLIEZEN, WAARONDER GEVOLGSCHADE OF DIRECTE, SPECIALE, INDIRECTE, INCIDENTELE OF PUNITIEVE SCHADE DIE VOORTVLOEIT UIT HET GEBRUIK VAN DE GEGEVENSSETS.

Deze gegevensset wordt geleverd onder de oorspronkelijke voorwaarden dat Microsoft de brongegevens heeft ontvangen. De gegevensset kan gegevens bevatten die afkomstig zijn van Microsoft.

Access

Available inWhen to use
Azure Notebooks

Quickly explore the dataset with Jupyter notebooks hosted on Azure or your local machine.

Azure Databricks

Use this when you need the scale of an Azure managed Spark cluster to process the dataset.

Azure Synapse

Use this when you need the scale of an Azure managed Spark cluster to process the dataset.

Preview

currentDatetime forecastHour latitude longitude precipitableWaterEntireAtmosphere seaLvlPressure snowDepthSurface temperature windSpeedGustSurface year month day
2/17/2021 6:00:00 PM 0 -90 0 0.519596 68412.7 1 231.1 3.92391 2021 2 17
2/17/2021 6:00:00 PM 0 -90 4.5 0.519596 68412.7 1 231.1 3.92391 2021 2 17
2/17/2021 6:00:00 PM 0 -90 0.5 0.519596 68412.7 1 231.1 3.92391 2021 2 17
2/17/2021 6:00:00 PM 0 -90 1 0.519596 68412.7 1 231.1 3.92391 2021 2 17
2/17/2021 6:00:00 PM 0 -90 1.5 0.519596 68412.7 1 231.1 3.92391 2021 2 17
2/17/2021 6:00:00 PM 0 -90 2 0.519596 68412.7 1 231.1 3.92391 2021 2 17
2/17/2021 6:00:00 PM 0 -90 2.5 0.519596 68412.7 1 231.1 3.92391 2021 2 17
2/17/2021 6:00:00 PM 0 -90 3 0.519596 68412.7 1 231.1 3.92391 2021 2 17
2/17/2021 6:00:00 PM 0 -90 3.5 0.519596 68412.7 1 231.1 3.92391 2021 2 17
2/17/2021 6:00:00 PM 0 -90 4 0.519596 68412.7 1 231.1 3.92391 2021 2 17
Name Data type Unique Values (sample) Description
currentDatetime timestamp 2,863 2018-12-06 06:00:00
2018-12-09 12:00:00

De runtime van de cyclus van het prognosemodel.

day int 31 1
5

De dag bij currentDatetime.

forecastHour int 129 336
102

Uur na currentDatetime, prognose of observatietijd.

latitude double 361 4.5
-12.5

Latitude, degrees_north.

longitude double 1,079 99.0
36.5

Longitude, degrees_east.

month int 12 12
1

De maand bij currentDatetime.

precipitableWaterEntireAtmosphere double 5,520,555 0.5
1.0

Neerslag op het gehele atmosferische niveau. Eenheden: kg.m-2

seaLvlPressure double 8,568,607 101104.0
101112.0

De druk van het grond- of wateroppervlak. Eenheden: Pa

snowDepthSurface double 1,245 nan
1.0

De sneeuwdiepte van het grond- of wateroppervlak. Eenheden: m

temperature double 5,840,727 273.0
273.1

De temperatuur van het grond- of wateroppervlak. Eenheden: K

totalCloudCoverConvectiveCloud double 82 1.0
2.0

Totale bewolking bij convectief wolkendek. Eenheden: %

windSpeedGustSurface double 19,188,997 5.0
4.5

Windsnelheden (windstoten) op het grond- of wateroppervlak. Eenheden: m/s

year int 5 2019
2020

Het jaar bij currentDatetime.

Select your preferred service:

Azure Notebooks

Azure Databricks

Azure Synapse

Azure Notebooks

Package: Language: Python Python
In [1]:
# This is a package in preview.
from azureml.opendatasets import NoaaGfsWeather

from dateutil import parser


start_date = parser.parse('2018-12-20')
end_date = parser.parse('2018-12-21')
gfs = NoaaGfsWeather(start_date, end_date)
gfs_df = gfs.to_pandas_dataframe()
ActivityStarted, to_pandas_dataframe Due to size, we only allow getting 1-day data into pandas dataframe! We are taking the latest day: /year=2018/month=12/day=21/ Target paths: ['/year=2018/month=12/day=21/'] Looking for parquet files... Reading them into Pandas dataframe... Reading GFSWeather/GFSProcessed/year=2018/month=12/day=21/part-00000-tid-570650763889113128-ff3109d0-23cf-4024-a096-63964952b0c7-4397-c000.snappy.parquet under container gfsweatherdatacontainer Reading GFSWeather/GFSProcessed/year=2018/month=12/day=21/part-00001-tid-570650763889113128-ff3109d0-23cf-4024-a096-63964952b0c7-4398-c000.snappy.parquet under container gfsweatherdatacontainer ... Reading GFSWeather/GFSProcessed/year=2018/month=12/day=21/part-00199-tid-570650763889113128-ff3109d0-23cf-4024-a096-63964952b0c7-4596-c000.snappy.parquet under container gfsweatherdatacontainer Done. ActivityCompleted: Activity=to_pandas_dataframe, HowEnded=Success, Duration=91914.45 [ms]
In [2]:
gfs_df.info()
<class 'pandas.core.frame.DataFrame'> Int64Index: 24172560 entries, 0 to 120634 Data columns (total 10 columns): currentDatetime datetime64[ns] forecastHour int32 latitude float64 longitude float64 precipitableWaterEntireAtmosphere float64 seaLvlPressure float64 snowDepthSurface float64 temperature float64 windSpeedGustSurface float64 totalCloudCoverConvectiveCloud float64 dtypes: datetime64[ns](1), float64(8), int32(1) memory usage: 1.9 GB
In [1]:
# Pip install packages
import os, sys

!{sys.executable} -m pip install azure-storage-blob
!{sys.executable} -m pip install pyarrow
!{sys.executable} -m pip install pandas
In [2]:
# Azure storage access info
azure_storage_account_name = "azureopendatastorage"
azure_storage_sas_token = r""
container_name = "gfsweatherdatacontainer"
folder_name = "GFSWeather/GFSProcessed"
In [3]:
from azure.storage.blob import BlockBlobServicefrom azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient

if azure_storage_account_name is None or azure_storage_sas_token is None:
    raise Exception(
        "Provide your specific name and key for your Azure Storage account--see the Prerequisites section earlier.")

print('Looking for the first parquet under the folder ' +
      folder_name + ' in container "' + container_name + '"...')
container_url = f"https://{azure_storage_account_name}.blob.core.windows.net/"
blob_service_client = BlobServiceClient(
    container_url, azure_storage_sas_token if azure_storage_sas_token else None)

container_client = blob_service_client.get_container_client(container_name)
blobs = container_client.list_blobs(folder_name)
sorted_blobs = sorted(list(blobs), key=lambda e: e.name, reverse=True)
targetBlobName = ''
for blob in sorted_blobs:
    if blob.name.startswith(folder_name) and blob.name.endswith('.parquet'):
        targetBlobName = blob.name
        break

print('Target blob to download: ' + targetBlobName)
_, filename = os.path.split(targetBlobName)
blob_client = container_client.get_blob_client(targetBlobName)
with open(filename, 'wb') as local_file:
    blob_client.download_blob().download_to_stream(local_file)
In [4]:
# Read the parquet file into Pandas data frame
import pandas as pd

print('Reading the parquet file into Pandas data frame')
df = pd.read_parquet(filename)
In [5]:
# you can add your filter at below
print('Loaded as a Pandas data frame: ')
df
In [6]:
 

Azure Databricks

Package: Language: Python Python
In [1]:
# This is a package in preview.
# You need to pip install azureml-opendatasets in Databricks cluster. https://docs.microsoft.com/en-us/azure/data-explorer/connect-from-databricks#install-the-python-library-on-your-azure-databricks-cluster
from azureml.opendatasets import NoaaGfsWeather

from dateutil import parser


start_date = parser.parse('2018-12-20')
end_date = parser.parse('2018-12-21')
gfs = NoaaGfsWeather(start_date, end_date)
gfs_df = gfs.to_spark_dataframe()
ActivityStarted, to_spark_dataframe ActivityCompleted: Activity=to_spark_dataframe, HowEnded=Success, Duration=92636.3 [ms]
In [2]:
display(gfs_df.limit(5))
currentDatetimeforecastHourlatitudelongitudeprecipitableWaterEntireAtmosphereseaLvlPressuresnowDepthSurfacetemperaturewindSpeedGustSurfacetotalCloudCoverConvectiveCloudyearmonthday
2018-12-20T00:00:00.000+00000-90.079.03.54831433296203671160.97656251.0099999904632568260.606781005859412.820813179016113null20181220
2018-12-20T00:00:00.000+00000-90.0268.03.54831433296203671160.97656251.0099999904632568260.606781005859412.820813179016113null20181220
2018-12-20T00:00:00.000+00000-89.536.53.448314189910888770757.77343751.0099999904632568258.606781005859412.620813369750977null20181220
2018-12-20T00:00:00.000+00000-89.543.03.348314285278320370597.77343751.0099999904632568258.306793212890612.720812797546387null20181220
2018-12-20T00:00:00.000+00000-89.5144.03.24831438064575269701.77343751.0099999904632568259.5067749023437512.620813369750977null20181220
In [1]:
# Azure storage access info
blob_account_name = "azureopendatastorage"
blob_container_name = "gfsweatherdatacontainer"
blob_relative_path = "GFSWeather/GFSProcessed"
blob_sas_token = r""
In [2]:
# Allow SPARK to read from Blob remotely
wasbs_path = 'wasbs://%s@%s.blob.core.windows.net/%s' % (blob_container_name, blob_account_name, blob_relative_path)
spark.conf.set(
  'fs.azure.sas.%s.%s.blob.core.windows.net' % (blob_container_name, blob_account_name),
  blob_sas_token)
print('Remote blob path: ' + wasbs_path)
In [3]:
# SPARK read parquet, note that it won't load any data yet by now
df = spark.read.parquet(wasbs_path)
print('Register the DataFrame as a SQL temporary view: source')
df.createOrReplaceTempView('source')
In [4]:
# Display top 10 rows
print('Displaying top 10 rows: ')
display(spark.sql('SELECT * FROM source LIMIT 10'))

Azure Synapse

Package: Language: Python Python
In [23]:
# This is a package in preview.
from azureml.opendatasets import NoaaGfsWeather

from dateutil import parser


start_date = parser.parse('2018-12-20')
end_date = parser.parse('2018-12-21')
gfs = NoaaGfsWeather(start_date, end_date)
gfs_df = gfs.to_spark_dataframe()
In [24]:
# Display top 5 rows
display(gfs_df.limit(5))
Out[24]:
In [1]:
# Azure storage access info
blob_account_name = "azureopendatastorage"
blob_container_name = "gfsweatherdatacontainer"
blob_relative_path = "GFSWeather/GFSProcessed"
blob_sas_token = r""
In [2]:
# Allow SPARK to read from Blob remotely
wasbs_path = 'wasbs://%s@%s.blob.core.windows.net/%s' % (blob_container_name, blob_account_name, blob_relative_path)
spark.conf.set(
  'fs.azure.sas.%s.%s.blob.core.windows.net' % (blob_container_name, blob_account_name),
  blob_sas_token)
print('Remote blob path: ' + wasbs_path)
In [3]:
# SPARK read parquet, note that it won't load any data yet by now
df = spark.read.parquet(wasbs_path)
print('Register the DataFrame as a SQL temporary view: source')
df.createOrReplaceTempView('source')
In [4]:
# Display top 10 rows
print('Displaying top 10 rows: ')
display(spark.sql('SELECT * FROM source LIMIT 10'))