Ich stellte die gleiche Frage und werde meine Erfahrungen für zukünftige Googler teilen.
Datenquellen
Ich wollte Rohdaten und viele davon ... eine API würde das nicht tun. Ich musste direkt zur Quelle gehen. Die beste Quelle für all diese Daten schienen entweder die NCEP- oder NCDC-NOMADS-Server zu sein:
http://nomads.ncdc.noaa.gov/dods/ <- gut für historische Daten
http://nomads.ncep.noaa.gov/dods/ <- gut für aktuelle Daten
(Hinweis: Ein Kommentator gab an, dass Sie jetzt https anstelle von http verwenden müssen. Ich habe es noch nicht getestet, aber wenn Sie Probleme haben, versuchen Sie es!)
Um eine Vorstellung von der Datenmenge zu geben, reichen ihre Daten bis ins Jahr 1979 zurück! Wenn Sie nach Kanada und den USA suchen, ist der Datensatz für die regionale Reanalyse in Nordamerika wahrscheinlich die beste Antwort.
Daten verwenden
Ich bin ein großer Python-Benutzer, und entweder pydap oder NetCDF schienen gute Werkzeuge zu sein. Ohne besonderen Grund fing ich an, mit Pydap herumzuspielen.
Um ein Beispiel zu geben, wie Sie alle Temperaturdaten für einen bestimmten Ort von der Nomaden-Website abrufen können, versuchen Sie Folgendes in Python:
from pydap.client import open_url
# setup the connection
url = 'http://nomads.ncdc.noaa.gov/dods/NCEP_NARR_DAILY/197901/197901/narr-a_221_197901dd_hh00_000'
modelconn = open_url(url)
tmp2m = modelconn['tmp2m']
# grab the data
lat_index = 200 # you could tie this to tmp2m.lat[:]
lon_index = 200 # you could tie this to tmp2m.lon[:]
print tmp2m.array[:,lat_index,lon_index]
Mit dem obigen Ausschnitt erhalten Sie eine Zeitreihe (alle drei Stunden) mit Daten für den gesamten Monat Januar 1979! Wenn Sie mehrere Standorte oder alle Monate benötigen, kann der obige Code problemlos geändert werden.
Zu Superdaten ... und darüber hinaus!
Ich war nicht glücklich, dort anzuhalten. Ich wollte diese Daten in einer SQL-Datenbank, damit ich sie leicht in Scheiben schneiden und würfeln kann. Eine großartige Option, um all dies zu tun, ist das Python-Prognosemodul.
Offenlegung: Ich habe den Code hinter dem Modul zusammengestellt. Der Code ist allesamt Open Source - Sie können ihn ändern, um Ihren Anforderungen besser zu entsprechen (vielleicht prognostizieren Sie für den Mars?) Oder kleine Schnipsel für Ihr Projekt herausholen.
Mein Ziel war es, die neueste Vorhersage aus dem Rapid Refresh-Modell abrufen zu können (Ihre beste Wahl, wenn Sie genaue Informationen zum aktuellen Wetter wünschen):
from forecasting import Model
rap = Model('rap')
rap.connect(database='weather', user='chef')
fields = ['tmp2m']
rap.transfer(fields)
und dann die Daten auf einer Karte der guten alten USA zu zeichnen:
Die Daten für das Diagramm stammten direkt aus SQL und konnten die Abfrage leicht ändern, um alle gewünschten Datentypen zu erhalten.
Wenn das obige Beispiel nicht ausreicht, lesen Sie die Dokumentation, in der Sie weitere Beispiele finden.