Me encontré haciendo la misma pregunta y compartiré mi experiencia con los futuros empleados de Google.
Fuentes de datos
Quería datos sin procesar, y muchos de ellos ... una API no serviría. Necesitaba dirigirme directamente a la fuente. La mejor fuente para todos esos datos parecía ser los servidores NCEP o NCDC NOMADS:
http://nomads.ncdc.noaa.gov/dods/ <- bueno para datos históricos
http://nomads.ncep.noaa.gov/dods/ <- bueno para datos recientes
(Nota: un comentarista indicó que ahora debe usar https en lugar de http. Aún no lo he probado, pero si tiene problemas, ¡inténtelo!)
Para dar una idea de la cantidad de datos, ¡sus datos se remontan a 1979! Si está buscando Canadá y los EE. UU., El conjunto de datos de reanálisis regional de América del Norte es probablemente su mejor respuesta.
Usando los datos
Soy un gran usuario de Python, y Pydap o NetCDF parecían buenas herramientas para usar. Sin ninguna razón en particular, comencé a jugar con pydap.
Para dar un ejemplo de cómo obtener todos los datos de temperatura para una ubicación particular del sitio web de nómadas, intente lo siguiente en 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]
El fragmento anterior le proporcionará una serie temporal (cada tres horas) de datos para todo el mes de enero de 1979. Si necesita varias ubicaciones o todos los meses, el código anterior se modificaría fácilmente para adaptarse.
A los superdatos ... ¡y más allá!
No estaba feliz de detenerme allí. Quería estos datos en una base de datos SQL para poder cortarlos fácilmente. Una gran opción para hacer todo esto es el módulo de pronóstico de Python.
Divulgación: armé el código detrás del módulo. Todo el código es de código abierto: puede modificarlo para satisfacer mejor sus necesidades (¿tal vez esté pronosticando para Marte?) O extraer pequeños fragmentos para su proyecto.
Mi objetivo era poder obtener el pronóstico más reciente del modelo Rapid Refresh (su mejor opción si desea información precisa sobre el clima actual):
from forecasting import Model
rap = Model('rap')
rap.connect(database='weather', user='chef')
fields = ['tmp2m']
rap.transfer(fields)
y luego trazar los datos en un mapa de los buenos Estados Unidos:
Los datos para el gráfico provienen directamente de SQL y pueden modificar fácilmente la consulta para obtener cualquier tipo de datos deseados.
Si el ejemplo anterior no es suficiente, consulte la documentación, donde puede encontrar más ejemplos.