我可以帮你翻译成中文:在哪里可以找到历史的原始天气数据?

83

我在进行一个以美国和加拿大为重点的项目,需要查找历史气象原始数据。主要需要温度数据,其他细节也可以。但是我很难找到这些数据,真的不想去爬取气象网站上的数据。请问有没有其它途径可以获得这些数据?


4
请查看 forecast.io,您可以使用非常易于使用的 API 获得历史数据和未来预报。 - iTech
这里有可用的数据:https://www.kaggle.com/noaa/gsod - Elle Najt
从这里 https://dev.meteostat.net/ 简单访问noaa数据。 - dl.meteo
3个回答

60

我曾经也问过这个问题,并且会分享我的经验给未来的谷歌搜索者。

数据源

我需要原始数据,而且需要很多... 一个API是不够的。我需要直接去找数据源。所有数据的最佳来源似乎是NCEP或NCDC NOMADS服务器:

http://nomads.ncdc.noaa.gov/dods/ <- 历史数据
http://nomads.ncep.noaa.gov/dods/ <- 最近的数据

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

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

使用数据

我是一个Python的忠实用户,pydapNetCDF是我觉得不错的工具。毫无理由,我开始试着玩pydap。

以下是在Python中获取nomads网站上特定位置的所有温度数据的示例:

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 model (如果您想获取当前天气的准确信息,这是您最佳的选择)中获取最新的预测:

from forecasting import Model

rap = Model('rap')
rap.connect(database='weather', user='chef')
fields = ['tmp2m']
rap.transfer(fields)

接着,在美国的地图上绘制数据:

heat map of usa temperatures with data from sql

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

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


1
我需要2015年的所有天气数据,但你提供的历史数据链接只有到201410年。你有什么建议吗? - rjurney
1
只是一个小提示:看起来他们现在只支持https;例如使用url = 'https://nomads.ncdc.noaa.gov/dods/NCEP_NARR_DAILY/197901/197901/narr-a_221_197901dd_hh00_000'。 - Junier
2
分享我的经验给未来的谷歌员工,这位未来的谷歌员工感谢您。 - inspectorG4dget
3
以上链接无法访问。 - Anagha
有一个API可以用来访问历史数据。非常酷,它可以为某个地点提供每月/年的平均温度和降水量。https://www.ncdc.noaa.gov/cdo-web/webservices/v2#gettingStarted - Andrew Schultz
显示剩余2条评论

29

3
气候数据在线 的网址已更改。 - Brian
Python API 可在此处找到相关数据:https://dev.meteostat.net/ - dl.meteo

1

47
不包括历史数据! - iTurki
1
@Rob 我与 wunderground.com 没有关联。如果答案没有帮助,请给它一个反对票。 - Lance Fisher
4
实际上,@iturki,我道歉了,另一个帖子是错的,Weather Underground确实有我能找到的唯一历史投影API!! - Rob
1
@wilsotc 27C 等于 80F。任何来自加拿大的白痴都知道 :). 我敢打赌单位只是设置错误了。此外,你也可能发现了一个包含风寒报告的站点。当然,不能确定,但25F完全在寒冷因素范围内。找出真相会很有趣。但是,我同意,WU应该修复/报告这些差异。 - user3002273
2
我们实际上一直在使用Wunderground...不过,非常遗憾的是,他们刚刚更改了使用条款,即只有自己拥有天气站的用户才能使用API...这就是为什么我正在寻找替代方案的原因。顺便说一下,Wunderground在很多年中都能完美地满足我们的需求,所以给它点个赞。 - Anthony Griggs
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接