-
Notifications
You must be signed in to change notification settings - Fork 0
날씨 api Research
seonuk edited this page Dec 27, 2020
·
5 revisions
항목명(국문) | 항목명(영문) | 항목크기 | 항목구분 | 샘플데이터 항목설명 |
---|---|---|---|---|
서비스키 | ServiceKey | 4 | 필수 | - |
페이지 번호 | pageNo | 4 | 필수 | 1 |
한 페이지 결과 수 | numOfRows | 4 | 필수 | 10 |
응답자료형식 | dataType | 4 | 옵션 | XML |
발표일자 base_date | 8 | 필수 | 20151201 | 15년 12월 1일발표 |
발표시각 | base_time | 4 | 필수 | 0500 |
예보지점 X 좌표 | nx | 2 | 필수 | 1 |
예보지점 Y 좌표 | ny | 2 | 옵션 | 1 |
- nx, ny 키 excel 파일에 정의되어있음
코드 | 요소 | 값 |
---|---|---|
POP | 강수확률 | % |
PTY | 강수형태 | 없음(0), 비(1), 비/눈(2), 눈(3), 소나기(4), 빗방울(5), 빗방울/눈날림(6), 눈날림(7) |
R06 | 6시간 강수량 | 범주 (1 mm) |
REH | 습도 | % |
S06 | 6시간 신적설 | 범주(1 cm) |
SKY | 하늘상태 | 코드값 |
T3H | 3시간 기온 | ℃ |
TMN | 아침 최저기온 | ℃ |
TMX | 낮 최고기온 | ℃ |
UUU | 풍속(동서성분) | m/s |
VVV | 풍속(남북성분) | m/s |
WAV | 파고 | M |
VEC | 풍향 | m/s |
WSD | 풍속 | m/s |
공공데이터포털 : https://data.go.kr/index.do , 동네예보 서비스 활용신청
/* NodeJs 샘플 코드 */
var request = require('request');
var url = 'http://apis.data.go.kr/1360000/VilageFcstInfoService/getUltraSrtNcst';
var queryParams = '?' + encodeURIComponent('ServiceKey') + '=서비스키'; /* Service Key*/
queryParams += '&' + encodeURIComponent('pageNo') + '=' + encodeURIComponent('1'); /* */
queryParams += '&' + encodeURIComponent('numOfRows') + '=' + encodeURIComponent('10'); /* */
queryParams += '&' + encodeURIComponent('dataType') + '=' + encodeURIComponent('JSON'); /* */
queryParams += '&' + encodeURIComponent('base_date') + '=' + encodeURIComponent('20151201'); /* */
queryParams += '&' + encodeURIComponent('base_time') + '=' + encodeURIComponent('0600'); /* */
queryParams += '&' + encodeURIComponent('nx') + '=' + encodeURIComponent('18'); /* */
queryParams += '&' + encodeURIComponent('ny') + '=' + encodeURIComponent('1'); /* */
request({
url: url + queryParams,
method: 'GET'
}, function (error, response, body) {
//console.log('Status', response.statusCode);
//console.log('Headers', JSON.stringify(response.headers));
//console.log('Reponse received', body);
});
유의사항
-
사용 시 클라이언트에서 보내준 좌표값 또는 도시명의로 nx, ny 검색 후 사용하는 로직 필요
-
바로 전날 기준으로 데이터 개수만큼 보여줌 과거 날짜 사용 불가
-
최대 1일전 관측 시간대: 0200, 0500, 0800, 1100, 1400, 1700, 2000, 2300 (1일 8회)
-
3시간단위로 위 response 15개씩 나타남
ex)
https://openweathermap.org/forecast16#geo16
Daily Forecast 16 Days api 사용 시 한달의 40USD
https://openweathermap.org/api/one-call-api#current
One calls api 사용 시 무료 대신 7일 뒤까지만 예측 가능 (하루의 천번만 무료 한달의 100만번 호출가능)
위 두가지가 유사하므로 아래는 Daily Forecast 16 Days api에 대한 예시만 존재,
one calls api랑 데이터 개수만 다르고 다른 부분 유사
api.openweathermap.org/data/2.5/forecast/daily?lat={lat}&lon={lon}&cnt={cnt}&appid={API key}
유저의 좌표값으로 요청 시 아래와 같이 해당 날짜로부터 16개의 데이터가 나타남
{
"cod":"200",
"message":0,
"city":{
"geoname_id":1907296,
"name":"Tawarano",
"lat":35.0164,
"lon":139.0077,
"country":"JP",
"iso2":"JP",
"type":"",
"population":0
},
"cnt":10,
"list":[
{
"dt":1485741600,
"temp":{
"day":285.51,
"min":285.51,
"max":285.51,
"night":285.51,
"eve":285.51,
"morn":285.51
},
"pressure":1013.75,
"humidity":100,
"weather":[
{
"id":800,
"main":"Clear",
"description":"sky is clear",
"icon":"01n"
}
],
"speed":5.52,
"deg":311,
"clouds":0
},
{
"dt":1485828000,
"temp":{
"day":282.27,
"min":282.27,
"max":284.66,
"night":284.66,
"eve":282.78,
"morn":282.56
},
"pressure":1023.68,
"humidity":100,
"weather":[
{
"id":800,
"main":"Clear",
"description":"sky is clear",
"icon":"01d"
}
],
"speed":5.46,
"deg":66,
"clouds":0
},
{
"dt":1485914400,
"temp":{
"day":284.83,
"min":283.21,
"max":285.7,
"night":284.16,
"eve":285.49,
"morn":283.21
},
"pressure":1017.39,
"humidity":100,
"weather":[
{
"id":800,
"main":"Clear",
"description":"sky is clear",
"icon":"02d"
}
],
"speed":13.76,
"deg":260,
"clouds":8
},
{
"dt":1486000800,
"temp":{
"day":283.71,
"min":281.86,
"max":285.13,
"night":283.81,
"eve":284.76,
"morn":281.86
},
"pressure":1017.36,
"humidity":100,
"weather":[
{
"id":800,
"main":"Clear",
"description":"sky is clear",
"icon":"01d"
}
],
"speed":8.95,
"deg":288,
"clouds":0
},
{
"dt":1486087200,
"temp":{
"day":280,
"min":275.68,
"max":283.75,
"night":278.79,
"eve":283.75,
"morn":275.68
},
"pressure":996.2,
"humidity":0,
"weather":[
{
"id":500,
"main":"Rain",
"description":"light rain",
"icon":"10d"
}
],
"speed":5.92,
"deg":295,
"clouds":0
},
{
"dt":1486173600,
"temp":{
"day":279.4,
"min":276.69,
"max":283.22,
"night":277.58,
"eve":283.22,
"morn":276.69
},
"pressure":998.07,
"humidity":0,
"weather":[
{
"id":800,
"main":"Clear",
"description":"sky is clear",
"icon":"01d"
}
],
"speed":3.71,
"deg":314,
"clouds":0
},
{
"dt":1486260000,
"temp":{
"day":280.88,
"min":276.28,
"max":284.66,
"night":281.2,
"eve":284.66,
"morn":276.28
},
"pressure":997.4,
"humidity":0,
"weather":[
{
"id":500,
"main":"Rain",
"description":"light rain",
"icon":"10d"
}
],
"speed":2.1,
"deg":337,
"clouds":66,
"rain":0.28
},
{
"dt":1486346400,
"temp":{
"day":281.58,
"min":278.74,
"max":283.76,
"night":278.74,
"eve":283.76,
"morn":279.15
},
"pressure":991.11,
"humidity":0,
"weather":[
{
"id":501,
"main":"Rain",
"description":"moderate rain",
"icon":"10d"
}
],
"speed":2.69,
"deg":2,
"clouds":4,
"rain":3.72
},
{
"dt":1486432800,
"temp":{
"day":277.62,
"min":275.86,
"max":281.14,
"night":276.45,
"eve":281.14,
"morn":275.86
},
"pressure":993.37,
"humidity":0,
"weather":[
{
"id":800,
"main":"Clear",
"description":"sky is clear",
"icon":"01d"
}
],
"speed":2.05,
"deg":353,
"clouds":47,
"rain":0.52,
"snow":0.03
},
{
"dt":1486519200,
"temp":{
"day":279.26,
"min":275.51,
"max":281.61,
"night":276.55,
"eve":281.61,
"morn":275.51
},
"pressure":991.72,
"humidity":0,
"weather":[
{
"id":500,
"main":"Rain",
"description":"light rain",
"icon":"10d"
}
],
"speed":3.47,
"deg":326,
"clouds":2,
"rain":0.35
}
]
}
https://openweathermap.org/forecast16#JSON
링크로 대체.
유의사항
- 한달의 100만건의 데이터 무료사용가능
- 계정 등록 후 프리티어 버전으로 사용 one calls api로(7일 뒤까지 예측, 하루 1000번 호출가능 총 100만번)
- 한달의 USD 40달러 내면 천만건까지 사용 가능 16일 예측