大家似乎都很关注天气预报,当然啦,获取准确的天气预报对你的出行计划和其他一些活动来说非常的有用。天气预报信息可以在很多地方获取到,例如网页,大多数的智能手机或是平板电脑。现在你也可以在树莓派上通过”wether”工具来以命令行的方式获取天气预报信息了。
“Weather”可以从树莓派的官方源上安装:
sudo apt-get install weather-util
“Weather”工具从METARs(Meteorological Aerodrome Reports), NOAA (the USA National Oceanic and Atmospheric Administration)和NWS (the USA National Weather Service)检索获取天气状况和预报信息。这使得这个工具主要以美国为中心,然而你也能获取到全球有国际机场的地区的天气信息。
最简单的获取天气状况的方法是使用ICAO代码(International Civil Aviation Organization Airport Code,国际民间航空组织机场代码,译注)查询最近的机场。所以要获取位于纽约的肯尼迪国际机场的天气你可以输入如下命令:
weather jfk
肯尼迪国际机场的完整ICAO代码实际上是”KJFK”(和所有美国邻近的机场一样以K开头)但是三个字母对于美国的机场来说同样有效,例如”DFW”,”LAX”和”ATL”等。但是对于国际上的机场来说,必须使用完整的ICAO代码。所以伦敦希思罗机场是”EGLL”,巴黎夏尔·戴高乐机场是”LFPG”,阿姆斯特丹史基浦机场是”EHAM”等等。
要查看伦敦希思罗机场的天气,使用:
weather egll
另一种方式是使用邮政编码。”Weather”自带了一个用于获取距离最近的气象站的邮政编码列表。不幸的是这只适用于美国而不是全世界,但是邮政编码涵盖了整个美国。举个例子,Linux基金会总部位于加利福尼亚州的旧金山,它的邮政编码是94110.你可以通过下面的命令来获取天气信息:
weather 94110
你也可以使用地名来获得天气信息,但是地名需要严格匹配。试试下面的命令:
weather ‘new york’
“Weather”将会告诉你search is too ambiguous(搜索词太过模糊)然后返回至少10条结果,包括”New York township – MO”,”New York City – NY”和”New York Mills city – MN”加拉瓜迪亚 国际机场。
如果你加入更准确的信息,你将得到想要的结果。试试这个:
weather ‘new york city central park’
你可以通过”-f”选项获取7天的天气预报。获取洛杉矶国际机场附近的天气信息使用:
weather -f lax
.weatherrc
你或许注意到了获取天气信息将会花费几分钟的时间,特别是当你通过名字进行搜索的时候。这不是因为在网络上获取信息造成的延迟,而是因为”weather”工具需要通过一个机场名字,地名和邮政编码的列表来进行查找。因为这些信息不是存在数据库里的,而是以文本形式列出的,所以搜索会很慢。
为了加快搜索速度,你可以在”weather”的配置文件里为已经包含所有该工具用来直接访问网络的所需信息的数据起一个别名。
首先你需要找到最近的气象站名字。使用”–info”选项来做到这一点,它提供了天气预报来源的详细信息。下面是一个使用邮编为20560的搜索,它是位于华盛顿的史密森尼学会的邮编。
weather –info 20560
结果显示数据来源的气象站实际上离华盛顿国家机场只有2.5英里远。机场的代码是”kdca”。
在你的home目录下创建一个weather的配置文件(名叫 .weatherrc):
nano ~/.weatherrc
加入下面几行:
[smithsonian] description = The Smithsonian Institution metar = http://weather.noaa.gov/pub/data/observations/metar/decoded/KDCA.TXT
注意:“metar = http…”需要保持在同一行。
现在通过Ctrl+X退出并保存。
要获取史密森尼学会的天气情况,只需要输入:
weather smithsonian
返回会非常快因为工具已经拿到它用来获取数据的所有信息而不用去查整个列表了。
可以在”.weatherrc”里为一个数据添加多个别名;你只需要把”metar”部分的信息写正确就可以了。