83

我在哪里可以找到我正在做的一个项目的历史原始天气数据,重点是美国和加拿大。我主要需要温度,但其他细节会很好。我很难找到这些数据。我真的不想刮一个天气网站。

4

3 回答 3

60

我发现自己也在问同样的问题,并将与未来的 Google 员工分享我的经验。

数据源

我想要原始数据,而且还有很多……API 做不到。我需要直接前往源头。所有这些数据的最佳来源似乎是 NCEP 或 NCDC NOMADS 服务器:

http://nomads.ncdc.noaa.gov/dods/ <- 适用于历史数据
http://nomads.ncep.noaa.gov/dods/ <- 适用于近期数据

(注意:一位评论者表示您现在必须使用 https 而不是 http。我还没有测试过,但是如果您遇到问题,请尝试一下!)

为了了解数据量,他们的数据可以追溯到 1979 年!如果您正在寻找加拿大和美国,北美区域再分析数据集可能是您的最佳答案。

使用数据

我是 python 的大用户,pydapNetCDF似乎都是不错的工具。没有什么特别的原因,我开始玩 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 的数据的美国温度热图

该图的数据直接来自 SQL,可以轻松修改查询以获取所需的任何类型的数据。

如果上面的示例还不够,请查看文档,您可以在其中找到更多示例。

于 2014-02-28T19:26:48.127 回答
29

在美国国家强风暴实验室历史天气数据档案中(注意:这已被淘汰)。

此外,美国国家气候数据中心地理数据门户

美国国家气候数据中心气候数据在线

美国国家气候数据中心最受欢迎产品

于 2010-07-08T17:28:34.873 回答
1

wunderground.com 有一个很好的 API。每天 500 次通话是免费的。

http://www.wunderground.com/weather/api/

于 2012-07-07T16:37:17.223 回答