我在进行一个以美国和加拿大为重点的项目,需要查找历史气象原始数据。主要需要温度数据,其他细节也可以。但是我很难找到这些数据,真的不想去爬取气象网站上的数据。请问有没有其它途径可以获得这些数据?
我在进行一个以美国和加拿大为重点的项目,需要查找历史气象原始数据。主要需要温度数据,其他细节也可以。但是我很难找到这些数据,真的不想去爬取气象网站上的数据。请问有没有其它途径可以获得这些数据?
我曾经也问过这个问题,并且会分享我的经验给未来的谷歌搜索者。
我需要原始数据,而且需要很多... 一个API是不够的。我需要直接去找数据源。所有数据的最佳来源似乎是NCEP或NCDC NOMADS服务器:
http://nomads.ncdc.noaa.gov/dods/ <- 历史数据
http://nomads.ncep.noaa.gov/dods/ <- 最近的数据
(注意:一位评论者指出,现在必须使用https而不是http。我还没有测试过,但如果你遇到问题,请尝试一下!)
为了让大家了解数据量,他们的数据可以追溯到1979年!如果你正在寻找加拿大和美国的数据,北美地区再分析数据集可能是你最好的答案。
我是一个Python的忠实用户,pydap或NetCDF是我觉得不错的工具。毫无理由,我开始试着玩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)
接着,在美国的地图上绘制数据:
该图的数据直接来自SQL,可以轻松修改查询以获取所需的任何类型的数据。
如果以上示例不足够,请查看文档,您可以在其中找到更多示例。
wunderground.com有一个很好的API。每天免费500次调用。