kma-js

Korea Meteorological Administration


Keywords
kma, weather
License
ISC
Install
npm install kma-js@1.0.4

Documentation

Korea Meteorological Administration

์†Œ๊ฐœ

๊ตฌ๊ธ€ GeoLocation API์™€ KMA์˜ ๋‚ ์”จ ์ •๋ณด(RSS)๋ฅผ ์ด์šฉํ•˜์—ฌ ๋‚ ์”จ ์ •๋ณด๋ฅผ ๋ฐ›์•„์˜ค๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž…๋‹ˆ๋‹ค.

KMA์—์„œ ๋‚ ์”จ์ •๋ณด๋ฅผ ์–ป์–ด์˜ค๊ธฐ ์œ„ํ•ด์„œ๋Š” bcode (์ง€์—ญ์ฝ”๋“œ)๊ฐ€ ํ•„์š”ํ•˜์ง€๋งŒ ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด์šฉํ•˜๋ฉด ์ขŒํ‘œ๋ฅผ ์ด์šฉํ•ด์„œ ํ•ด๋‹น ์ง€์—ญ์˜ ๋‚ ์”จ ์ •๋ณด๋ฅผ ๋ฐ›์•„ ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ž‘๋™ ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ์œ ์ €๊ฐ€ ์ขŒํ‘œ๋ฅผ ์ด์šฉํ•ด์„œ ๋‚ ์”จ ์ •๋ณด๋ฅผ ์š”์ฒญ.
  2. Google Maps GeoLocation API ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ขŒํ‘œ๋ฅผ ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜.
  3. KMA์— ์žˆ๋Š” bcode <-> ์ขŒํ‘œ ๋งค์น˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•˜์—ฌ bcode ๋ฅผ ์–ป์–ด์˜ด.
  4. bcode๋ฅผ ์ด์šฉํ•˜์—ฌ KMA์— ํ˜„์žฌ ๋‚ ์”จ ์ •๋ณด๋ฅผ ๋ฐ›์•„์˜ด.

ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ ์˜ˆ์‹œ ํŽ˜์ด์ง€

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ ์กฐ๊ฑด

  • ES6
  • Promise
  • Node.js

๋น ๋ฅธ ์‹œ์ž‘

์„ค์น˜ ๋ฐฉ๋ฒ•

npm install kma-js

์ขŒํ‘œ๋กœ ๋‚ ์”จ ์ •๋ณด ๊ฐ€์ ธ์˜ค๊ธฐ

let kmaWeather = require('kma-js').Weather;
kmaWeather.townWeather('37.49543016888596', '127.03781811461468')
    .then(data => console.log(data));

์ขŒํ‘œ๋กœ ๋‚ ์”จ ์ •๋ณด ์š”์ฒญ์‹œ ๋ฐ์ดํ„ฐ ์˜ˆ์‹œ

{
  "data": {
    "title": "๋™๋„ค์˜ˆ๋ณด(๋„ํ‘œ) : ์„œ์šธํŠน๋ณ„์‹œ ์„œ์ดˆ๊ตฌ ์„œ์ดˆ4๋™ [X=61,Y=125]",
    "category": "์„œ์šธํŠน๋ณ„์‹œ ์„œ์ดˆ๊ตฌ ์„œ์ดˆ4๋™",
    "author": "๊ธฐ์ƒ์ฒญ",
    "lastUpdated": "2016-08-03T11:00:00+09:00",
    "info": [
      {
        "time": "2016-08-03T15:00:00+09:00",
        "temperature": {
          "current": 33.5,
          "high": "33.6",
          "min": null
        },
        "sky": {
          "code": 3,
          "value": "๊ตฌ๋ฆ„๋งŽ์Œ"
        },
        "rain": {
          "code": 0,
          "value": "์—†์Œ",
          "probability": 20,
          "expect": {
            "6": {
              "rainfall": 0,
              "snowfall": 0
            },
            "12": {
              "rainfall": 0,
              "snowfall": 0
            }
          }
        },
        "weather": {
          "value": {
            "ko": "๊ตฌ๋ฆ„ ๋งŽ์Œ",
            "en": "Mostly Cloudy"
          }
        },
        "wind": {
          "speed": 1.7,
          "direction": {
            "code": 7,
            "value": {
              "ko": "๋ถ์„œ",
              "en": "NW"
            }
          }
        },
        "humidity": 59
      },
      ....
    ]
  }  
}

townWeather(์œ„๋„, ๊ฒฝ๋„) 3์ผ๊ฐ„์˜ ๋‚ ์”จ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค (์˜ค๋Š˜, ๋‚ด์ผ, ๋‚ด์ผ๋ชจ๋ ˆ)

์ขŒํ‘œ๋กœ bcode ๊ฐ€์ ธ์˜ค๊ธฐ

let kmaUtils = require('kma-js').Kma;
kmaUtils.convertBcode('37.49543016888596', '127.03781811461468')
    .then(data => console.log(data));

convertBcode(์œ„๋„, ๊ฒฝ๋„) ํ˜„์žฌ ์ขŒํ‘œ๋ฅผ ๊ฐ€์ง€๊ณ  kma์—์„œ ์‚ฌ์šฉํ•˜๋Š” bcode ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค

์ฐธ๊ณ  ์ž๋ฃŒ