我发现自己也在问同样的问题,并将与未来的 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]
上面的 sn-p 将为您提供 1979 年 1 月整个月份的时间序列(每三个小时)数据!如果您需要多个位置或所有月份,则可以轻松修改上述代码以适应。
到超级数据……甚至更多!
我不高兴停在那里。我希望将这些数据保存在 SQL 数据库中,这样我就可以轻松地对其进行切片和切块。执行所有这些操作的一个很好的选择是 python 预测模块。
披露:我将模块背后的代码放在一起。代码都是开源的——您可以修改它以更好地满足您的需求(也许您正在预测火星?)或为您的项目提取一些小sn-ps。
我的目标是能够从Rapid Refresh model 获取最新预报(如果您想了解当前天气的准确信息,最好的选择):
from forecasting import Model
rap = Model('rap')
rap.connect(database='weather', user='chef')
fields = ['tmp2m']
rap.transfer(fields)
然后在美国地图上绘制数据:
绘图数据直接来自 SQL,可以轻松修改查询以获取所需的任何类型的数据。
如果以上示例还不够,请查看文档,您可以在其中找到更多示例。