Korea Meteorological Administration
์๊ฐ
๊ตฌ๊ธ GeoLocation API์ KMA์ ๋ ์จ ์ ๋ณด(RSS)๋ฅผ ์ด์ฉํ์ฌ ๋ ์จ ์ ๋ณด๋ฅผ ๋ฐ์์ค๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ๋๋ค.
KMA์์ ๋ ์จ์ ๋ณด๋ฅผ ์ป์ด์ค๊ธฐ ์ํด์๋ bcode (์ง์ญ์ฝ๋)๊ฐ ํ์ํ์ง๋ง ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํ๋ฉด ์ขํ๋ฅผ ์ด์ฉํด์ ํด๋น ์ง์ญ์ ๋ ์จ ์ ๋ณด๋ฅผ ๋ฐ์ ์ฌ ์ ์์ต๋๋ค.
ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์๋ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ ์ ๊ฐ ์ขํ๋ฅผ ์ด์ฉํด์ ๋ ์จ ์ ๋ณด๋ฅผ ์์ฒญ.
- Google Maps GeoLocation API ๋ฅผ ์ด์ฉํ์ฌ ์ขํ๋ฅผ ์ฃผ์๋ก ๋ณํ.
- KMA์ ์๋ bcode <-> ์ขํ ๋งค์น ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํ์ฌ bcode ๋ฅผ ์ป์ด์ด.
- 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 ๋ฅผ ๊ฐ์ ธ์ต๋๋ค