OpenWeatherMap возвращает неправильную текущую погоду

Я пытаюсь реализовать приложение для iphone, и я интегрирую OpenWeatherMap для получения текущей погоды. Однако я заметил, что возвращаемые данные неверны (отклонены примерно на 39 градусов по Фаренгейту).

Ниже приведен URL-адрес JSON, который я использую для получения текущей погоды для Денвера, США, используя координаты 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 градусов.

Пожалуйста, посоветуйте, что я делаю неправильно.

Спасибо Лок


person Loc Pham    schedule 07.08.2014    source источник
comment
Ваше уравнение конвертируется в градусы Цельсия, а не в Фаренгейты. Даже если бы он конвертировался правильно, 291K = 64F, поэтому это все еще выключено.   -  person Colonel Thirty Two    schedule 07.08.2014
comment
Я считаю, что 1K = 274,15C.   -  person Loc Pham    schedule 07.08.2014
comment
Наоборот. 1С = 274,15К. Это еще не Фаренгейт.   -  person Colonel Thirty Two    schedule 07.08.2014
comment
Вы правы, у меня наоборот. Если то, что я вижу, реально, то все приложения, использующие OpenWeatherMap, потенциально могут показывать поддельные данные.   -  person Loc Pham    schedule 07.08.2014
comment
Уравнение, которое я использовал, было неправильным. Увидеть ниже.   -  person Loc Pham    schedule 15.08.2014


Ответы (3)


Для тех, кто путешествует позже, вам не нужно делать никаких преобразований для градусов по Фаренгейту, вы можете добавить еще один параметр запроса в свой запрос для этого:

Фаренгейты: единицы=имперские

... также вариант для Цельсия: units=metric

Пример:

http://api.openweathermap.org/data/2.5/weather?q=London&appid=XXXXXX&units=imperial

Найдено здесь.

person mfink    schedule 16.12.2015
comment
Вы спасли меня. Спасибо. - person Dead Community; 24.04.2018

Я нашел еще один способ, если вы используете в посте url: &units=metric или нужно будет создать переменную city и key:

city = 'London'
key = 'some_key'

Так это будет выглядеть так:

url = 'http://api.openweathermap.org/data/2.5/weather?q={}&appid={}&units=metric'.format(city,key)
person Сергей Андриевский    schedule 17.11.2020

Я отвечаю на свой вопрос...

Я был наивен, поверив комментариям, написанным OpenWeather, и мои расчеты от Кельвина до Фаренгейта были неверными. Из ссылки OpenWeather здесь говорится:

Температура в Кельвинах. Вычли из этой цифры 273,15, чтобы перевести в градусы Цельсия.

Это утверждение НЕПРАВИЛЬНО. Чтобы преобразовать кельвины в градусы Фаренгейта, используйте это уравнение:

° F = 9/5(° K - 273) + 32

Надеюсь, другие не будут сбиты с толку этим заявлением, как я.

person Loc Pham    schedule 15.08.2014
comment
Утверждение правильно. Речь идет о преобразовании Кельвина в Цельсий, а не Фаренгейта. Цельсия используется во многих европейских странах, за исключением Великобритании. - person Serge Ballesta; 15.08.2014
comment
ха-ха, только что остановился на вашем комментарии @SergeBallesta, Цельсий используется во многих европейских странах. Вы, наверное, из США, потому что, насколько я знаю, все остальные страны мира сейчас используют Цельсий, даже Великобритания :). Вуаля, просто хотел исправить это утверждение. - person Rémi Santos; 18.06.2017
comment
Хотя вы правы, я не понимаю, что вы имеете в виду даже под Великобританией @RémiSantos? Великобритания является частью Европы как континент (и на данный момент как член ЕС) - person Max; 13.03.2018
comment
Прочтите внимательнее комментарий, на который я отвечаю @Max. Я добавил даже GB, потому что SergeBallesta упомянул исключение GB. И я вообще не говорю о Европе, что вы тут пытаетесь сделать? - person Rémi Santos; 15.03.2018