Zadałem to samo pytanie i podzielę się swoim doświadczeniem z przyszłymi pracownikami Google.
Źródła danych
Chciałem surowych danych, a wiele z nich ... API nie wystarczy. Musiałem udać się bezpośrednio do źródła. Wydawało się, że najlepszym źródłem wszystkich tych danych były serwery NCEP lub NCDC NOMADS:
http://nomads.ncdc.noaa.gov/dods/ <- dobre dla danych historycznych
http://nomads.ncep.noaa.gov/dods/ <- dobre dla najnowszych danych
(Uwaga: komentator wskazał, że musisz teraz używać https zamiast http. Jeszcze tego nie testowałem, ale jeśli masz problemy, spróbuj tego!)
Aby dać wyobrażenie o ilości danych, ich dane sięgają 1979 roku! Jeśli szukasz Kanady i Stanów Zjednoczonych, zbiór danych North American Regional Reanalysis jest prawdopodobnie najlepszą odpowiedzią.
Korzystanie z danych
Jestem dużym użytkownikiem Pythona i albo pydap, albo NetCDF wydawały się dobrymi narzędziami w użyciu. Bez konkretnego powodu zacząłem bawić się pydapem.
Aby dać przykład, jak uzyskać wszystkie dane o temperaturze dla określonej lokalizacji z witryny nomadów, spróbuj wykonać następujące czynności w Pythonie:
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]
Powyższy fragment zawiera szereg czasowy (co trzy godziny) danych z całego stycznia 1979 roku! Jeśli potrzebujesz wielu lokalizacji lub wszystkich miesięcy, powyższy kod można łatwo zmodyfikować w celu dostosowania.
Do super-danych ... i nie tylko!
Nie byłem szczęśliwy, że się tam zatrzymałem. Chciałem, aby te dane znajdowały się w bazie danych SQL, abym mógł je łatwo pokroić i pokroić w kostkę. Świetną opcją do tego wszystkiego jest moduł prognozowania języka Python.
Ujawnienie: ułożyłem kod za modułem. Cały kod jest open source - możesz go zmodyfikować, aby lepiej odpowiadał Twoim potrzebom (może prognozujesz dla Marsa?) Lub wyciągnąć małe fragmenty dla swojego projektu.
Moim celem było pobranie najnowszej prognozy z modelu Rapid Refresh (najlepszy zakład, jeśli chcesz uzyskać dokładne informacje o aktualnej pogodzie):
from forecasting import Model
rap = Model('rap')
rap.connect(database='weather', user='chef')
fields = ['tmp2m']
rap.transfer(fields)
a następnie wykreślić dane na mapie dobrych 'starych Stanów Zjednoczonych:
Dane do wykresu pochodzą bezpośrednio z SQL i można je łatwo zmodyfikować, aby uzyskać dowolny typ danych.
Jeśli powyższy przykład nie wystarczy, zajrzyj do dokumentacji, w której znajdziesz więcej przykładów.