OpenWeatherMap 返回不正确的当前天气
Posted
技术标签:
【中文标题】OpenWeatherMap 返回不正确的当前天气【英文标题】:OpenWeatherMap returns incorrect current weather 【发布时间】:2014-10-01 03:46:58 【问题描述】:我正在尝试实现一个 iphone 应用程序,并且我正在集成 OpenWeatherMap 以检索当前天气。但是,我注意到返回的数据不正确(偏离华氏 39 度左右)。
下面是我用来检索美国丹佛当前天气的 JSON URL,使用 Lan/Lon 坐标,其中 xxxxxxxxxxxxx 是我的 APPID 键。
http://api.openweathermap.org/data/2.5/weather?APPID=xxxxxxxxxxxxx&lat=39.738539&lon=-104.981114
返回的温度为 291.05988。从阅读的文档中,这个温度单位是开尔文。所以要转换为华氏度,我取 291.05988 - 254.928 = 36.13188 华氏度。然而,目前的真实天气是 75 华氏度。这偏离了大约 39 度。
请告知我做错了什么。
谢谢 位置
【问题讨论】:
您的方程式正在转换为摄氏度,而不是华氏度。即使它转换正确,291K = 64F 所以它仍然关闭。 我相信 1K = 274.15C。 其他方式。 1C = 274.15K。那仍然不是华氏度。 你说得对,我把它颠倒了。如果我看到的是真实的,那么所有使用 OpenWeatherMap 的应用程序都可能显示虚假数据。 我使用的公式是错误的。见下文。 【参考方案1】:对于那些稍后巡游的人,您不需要对华氏进行任何转换,您可以在您的请求中添加另一个查询参数:
华氏度:units=imperial
... 也可以选择 摄氏度:units=metric
例如:
http://api.openweathermap.org/data/2.5/weather?q=London&appid=XXXXXX&units=imperial
找到这个here。
【讨论】:
你救了我。谢谢。【参考方案2】:如果您在帖子 url 中使用,我发现了另一种方法:&units=metric
或者需要创建变量城市和密钥:
city = 'London'
key = 'some_key'
所以它看起来像这样:
url = 'http://api.openweathermap.org/data/2.5/weather?q=&appid=&units=metric'.format(city,key)
【讨论】:
【参考方案3】:我正在回答我自己的问题...
我天真地相信 OpenWeather 编写的 cmets,并且从开尔文到华氏度的计算全都错了。来自OpenWeather's link here,它声明:
开尔文温度。从这个数字中减去 273.15 来转换 到摄氏度。
那句话是错误的。要将开尔文转换为华氏,请使用以下等式:
° F = 9/5(° K - 273) + 32
希望其他人不会像我一样被这句话绊倒。
【讨论】:
声明是正确。这是关于将开尔文转换为摄氏度,而不是华氏度。除英国外,许多欧洲国家都使用摄氏温度。 哈哈,刚刚被您的评论 @SergeBallesta 打断,“许多欧洲国家都使用摄氏度”。您可能来自美国,因为据我所知,世界上所有其他国家现在都使用摄氏温度,甚至是英国 :)。瞧,只是想纠正这个说法。 虽然您是对的,但我不明白您所说的“甚至是英国”@RémiSantos 是什么意思? GB 是欧洲大陆的一部分(目前是欧盟的成员) 仔细阅读我回复@Max 的评论。我添加了“甚至 GB”,因为 SergeBallesta 提到了“GB 除外”。而且我根本没有提到欧洲,你想在这里做什么?以上是关于OpenWeatherMap 返回不正确的当前天气的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 openweathermap api 和 http 包获取每小时和 16 天的天气预报
如何计算 openweathermap.org JSON 中返回的摄氏温度?