Я запитав це саме те питання і поділюсь своїм досвідом для майбутніх співробітників Google.
Джерела даних
Я хотів необроблені дані, і багато їх ... API не зробив би. Мені потрібно було прямувати безпосередньо до джерела. Найкращим джерелом для всіх цих даних були сервери NCEP або NCDC NOMADS:
http://nomads.ncdc.noaa.gov/dods/ <- добре для історичних даних
http://nomads.ncep.noaa.gov/dods/ <- добре для останніх даних
(Примітка. Коментатор зазначив, що тепер ви повинні використовувати https, а не http. Я ще не тестував його, але якщо у вас виникли проблеми, спробуйте це!)
Щоб дати уявлення про кількість даних, їх дані сягають аж до 1979 року! Якщо ви шукаєте Канаду та США, набір даних Північноамериканського регіонального аналізу - це, мабуть, ваша найкраща відповідь.
Використання даних
Я великий користувач python, і pydap, або NetCDF здавалися хорошими інструментами для використання. Без особливих причин я почав гратись із pydap.
Щоб навести приклад того, як отримати всі дані про температуру для певного місця з веб-сайту кочівників, спробуйте наступне в 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]
Наведений фрагмент дасть вам часовий ряд (кожні три години) даних за весь січень 1979 року! Якщо вам потрібні декілька місць або всі місяці, наведений вище код легко змінити для розміщення.
До супер-даних ... і не тільки!
Я не був радий зупинитися на цьому. Мені потрібні ці дані у базі даних SQL, щоб я міг їх легко нарізати та нарізати. Чудовим варіантом для всього цього є модуль прогнозування python.
Розкриття інформації: Я зібрав код за модулем. Весь код з відкритим кодом - ви можете змінити його, щоб краще відповідати вашим потребам (можливо, ви прогнозуєте для Марса?) Або витягнути маленькі фрагменти для вашого проекту.
Моєю метою було отримати найсвіжіший прогноз із моделі Rapid Refresh (найкраще, якщо ви хочете отримати точну інформацію про поточну погоду):
from forecasting import Model
rap = Model('rap')
rap.connect(database='weather', user='chef')
fields = ['tmp2m']
rap.transfer(fields)
а потім побудувати дані на карті доброї Америки:
Дані для сюжету надходили безпосередньо з SQL і могли легко модифікувати запит, щоб отримати будь-який тип бажаних даних.
Якщо наведеного вище прикладу недостатньо, перегляньте документацію, де можна знайти більше прикладів.