我在哪里可以找到我正在做的一个项目的历史原始天气数据,重点是美国和加拿大。我主要需要温度,但其他细节会很好。我很难找到这些数据。我真的不想刮一个天气网站。
3 回答
我发现自己也在问同样的问题,并将与未来的 Google 员工分享我的经验。
数据源
我想要原始数据,而且还有很多……API 做不到。我需要直接前往源头。所有这些数据的最佳来源似乎是 NCEP 或 NCDC NOMADS 服务器:
http://nomads.ncdc.noaa.gov/dods/ <- 适用于历史数据
http://nomads.ncep.noaa.gov/dods/ <- 适用于近期数据
(注意:一位评论者表示您现在必须使用 https 而不是 http。我还没有测试过,但是如果您遇到问题,请尝试一下!)
为了了解数据量,他们的数据可以追溯到 1979 年!如果您正在寻找加拿大和美国,北美区域再分析数据集可能是您的最佳答案。
使用数据
我是 python 的大用户,pydap或NetCDF似乎都是不错的工具。没有什么特别的原因,我开始玩 pydap。
举例说明如何从 nomads 网站获取特定位置的所有温度数据,请在 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 年 1 月整个月份的时间序列(每三个小时)数据!如果您需要多个位置或所有月份,则可以轻松修改上述代码以适应。
到超级数据……甚至更多!
我不高兴停在那里。我希望将这些数据保存在 SQL 数据库中,这样我就可以轻松地对其进行切片和切块。完成所有这些工作的一个很好的选择是 python 预测模块。
披露:我将模块背后的代码放在一起。代码都是开源的——您可以对其进行修改以更好地满足您的需求(也许您正在预测火星?)或为您的项目提取一些小片段。
我的目标是能够从Rapid Refresh 模型中获取最新的预报(如果你想要关于当前天气的准确信息,你最好的选择):
from forecasting import Model
rap = Model('rap')
rap.connect(database='weather', user='chef')
fields = ['tmp2m']
rap.transfer(fields)
然后在美国地图上绘制数据:
该图的数据直接来自 SQL,可以轻松修改查询以获取所需的任何类型的数据。
如果上面的示例还不够,请查看文档,您可以在其中找到更多示例。
wunderground.com 有一个很好的 API。每天 500 次通话是免费的。