web-dev-qa-db-fra.com

Comment calculer la température en degrés Celsius retournée dans openweathermap.org JSON?

Je reçois la météo d'une ville en utilisant openweathermap.org.

L'appel jsonp fonctionne et tout va bien mais l'objet résultant contient la température dans une unité inconnue:

{
    //...
    "main": {
        "temp": 290.38, // What unit of measurement is this?
        "pressure": 1005,
        "humidity": 72,
        "temp_min": 289.25,
        "temp_max": 291.85
    },
    //...
}

Voici une démo qui console.log est l'objet complet.

Je ne pense pas que la température résultante soit en Fahrenheit car la conversion 290.38 Fahrenheit en degrés Celsius est 143.544.

Est-ce que quelqu'un sait quelle unité de température openweathermap revient?

38
hitautodestruct

Il ressemble à kelvin . La conversion de Kelvin en degrés Celsius est facile: il suffit de soustraire 273.15.

Et le coup d'œil le plus bref sur la documentation de l'API nous dit que si vous ajoutez &units=metric à votre demande, vous reviendrez en degrés Celsius.

106
T.J. Crowder

Cela semble être kelvin, mais vous pouvez spécifier le format que vous souhaitez renvoyer pour le temp, par exemple:

http://api.openweathermap.org/data/2.5/weather?q=London&mode=json&units=metric

ou

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

9
spacebean

Kelvin à Fahrenheit, c'est:

(( kelvinValue - 273.15) * 9/5) + 32

J'ai remarqué que tous les appels OpenWeatherApp ne lisent pas le paramètre units s'il est transmis. (Un exemple de cette erreur: http://api.openweathermap.org/data/2.5/group?units=Imperial&id= 5375480,4737316,4164138,5099133,4666102,5391811,5809844,5016108,4400860,4957280 & appid = XXXXXX ) Kelvin est toujours retourné.

2
Sara

Vous pouvez changer l'unité en métrique.

Ceci est mon code.

<head>
    <script src="http://code.jquery.com/jquery-1.6.1.min.js"></script>
        <script src="http://code.jquery.com/ui/1.10.2/jquery-ui.min.js"></script>
        <style type="text/css">]
        body{
            font-size: 100px;

        }

        #weatherLocation{

            font-size: 40px;
        }
        </style>
        </head>
        <body>
<div id="weatherLocation">Click for weather</div>

<div id="location"><input type="text" name="location"></div>

<div class="showHumidity"></div>

<div class="showTemp"></div>

<script type="text/javascript">
$(document).ready(function() {
  $('#weatherLocation').click(function() {
    var city = $('input:text').val();
    let request = new XMLHttpRequest();
    let url = `http://api.openweathermap.org/data/2.5/weather?q=${city}&units=metric&appid=[YOUR API KEY HERE]`;


    request.onreadystatechange = function() {
      if (this.readyState === 4 && this.status === 200) {
        let response = JSON.parse(this.responseText);
        getElements(response);
      }
    }

    request.open("GET", url, true);
    request.send();

    getElements = function(response) {
      $('.showHumidity').text(`The humidity in ${city} is ${response.main.humidity}%`);
      $('.showTemp').text(`The temperature in Celcius is ${response.main.temp} degrees.`);
    }
  });
});
</script>

</body>
1
Darragh Blake