leeseohyun(lee)

Apply weather data analysis graph in website

...@@ -299,11 +299,164 @@ ...@@ -299,11 +299,164 @@
299 }) 299 })
300 }) 300 })
301 } 301 }
302 - } 302 +
303 - 303 +
304 + //그래프 그리기
305 + //온도, 습도, 풍속 데이터를 array에 저장하여 그래프에 넘겨줌
306 + var tempdata = new Array(10);
307 + var humidata = new Array(10);
308 + var winddata = new Array(10);
309 +
310 + name = document.getElementById('name').value
311 +
312 + for(let j=0; j<7; j++){
313 + //present_time-3-j가 음수인 경우 방지
314 + if(present_time-3-j <0){
315 + time2 = present_time-3-j+24;
316 + date2 = yesterday_YYYYMMDD
317 +
318 + }
319 + else{
320 + time2 = present_time-3-j
321 + date2 = YYYYMMDD
322 + }
323 +
324 + name = document.getElementById('name').value
325 + fetch('http://data.ex.co.kr/openapi/restinfo/restWeatherList?key=6806352377&type=json&sdate='+ date2 +'&stdHour=' + ('0'+String(time2)).slice(-2)).then(function(response){
326 + //testing
327 + // fetch('http://data.ex.co.kr/openapi/restinfo/restWeatherList?key=test&type=json&sdate='+ "20220524" +'&stdHour='+ ('0'+ String(22-j)).slice(-2)).then(function(response){
328 + method: 'GET';
329 + body: JSON.stringify(this.obj)
330 + response.text().then(function(text){
331 +
332 + //위와 같은 방식으로 데이터 정리
333 + index1=text.indexOf('[')
334 + index2=text.indexOf(']')
335 + ndata=text.substr(index1+1, index2-index1+1)
336 + nndata=ndata.split('},');
337 +
338 + //ReststopName (휴게소 이름)
339 + for(let i=0; i<nndata.length; i++){
340 + index3=nndata[i].indexOf('"unitName":"')
341 + index4=nndata[i].indexOf('"unitCode":"')
342 + ReststopName=nndata[i].substr(index3+12, index4-index3-14)
343 +
344 +
345 + if(ReststopName == name){
346 + //Weather
347 + index5=nndata[i].indexOf('"weatherContents":"')
348 + index6=nndata[i].indexOf('"statusNo":"')
349 + Weather=nndata[i].substr(index5+19, index6-index5-21)
350 +
351 + //temperature
352 + index7=nndata[i].indexOf('"tempValue":"')
353 + index8=nndata[i].indexOf('"dewValue":"')
354 + Temperature=nndata[i].substr(index7+13, index8-index7-20)
355 +
356 + //humidity
357 + index9=nndata[i].indexOf('"humidityValue":"')
358 + index10=nndata[i].indexOf('"windContents":"')
359 + Humidity=nndata[i].substr(index9+17, index10-index9-26)
360 +
361 +
362 + //wind
363 + index11=nndata[i].indexOf('"windValue":"')
364 + Wind=nndata[i].substr(index11+13,3)
365 +
366 + //어레이 tempdata, humidata, winddata에 각각 Temperature, Humidity, Wind 데이터 할당
367 + tempdata[j]=Temperature;
368 + humidata[j]=Humidity;
369 + winddata[j]=Wind;}
370 + }
371 +
372 +
373 + //temperature-graph
374 + new Chart(document.getElementById("temperature-graph"), {
375 + type: 'line',
376 + data: {
377 + labels: [ '9시간 전','8시간 전','7시간 전','6시간 전','5시간 전','4시간 전','3시간 전'],
378 +
379 + datasets: [
380 + {label: "temperature 기온 (단위: °C)",
381 + borderColor : "#7DEEBC",
382 + data: [tempdata[6], tempdata[5] ,tempdata[4] ,tempdata[3] ,tempdata[2] ,tempdata[1] ,tempdata[0] ],
383 + backgroundColor: "#D2FFD2"}
384 + ]
385 + },
386 +
387 + options: {
388 + scales: {
389 + yAxes: [{
390 + ticks: {
391 + min: -30,
392 + max: 40,
393 + }
394 + }]
395 + }
396 + }
397 + });
398 +
399 + //humidity-graph
400 + new Chart(document.getElementById("humidity-graph"), {
401 + type: 'line',
402 + data: {
403 + labels: [ '9시간 전','8시간 전','7시간 전','6시간 전','5시간 전','4시간 전','3시간 전'],
404 +
405 + datasets: [
406 + {label: "Humidity 습도 (단위: %)",
407 + borderColor : "#28B4B4",
408 + data: [humidata[6],humidata[5],humidata[4],humidata[3],humidata[2],humidata[1],humidata[0]],
409 + backgroundColor: "#98EBDC"}
410 + ]
411 + },
412 +
413 + options: {
414 + scales: {
415 + yAxes: [{
416 + ticks: {
417 + min: 0,
418 + max: 100,
419 + }
420 + }]
421 + }
422 + }
423 + });
424 +
425 + //wind-graph
426 + new Chart(document.getElementById("wind-graph"), {
427 + type: 'line',
428 + data: {
429 + labels: [ '9시간 전','8시간 전','7시간 전','6시간 전','5시간 전','4시간 전','3시간 전'],
430 +
431 + datasets: [
432 + {label: "wind velocity 풍속 (단위: m/s)",
433 + borderColor : "#82B3ED",
434 + data: [winddata[6],winddata[5],winddata[4],winddata[3],winddata[2],winddata[1],winddata[0]],
435 + backgroundColor: "#E0EBFF"}
436 + ]
437 + },
438 +
439 + options: {
440 + scales: {
441 + yAxes: [{
442 + ticks: {
443 + min: 0,
444 + max: 20,
445 + }
446 + }]
447 + }
448 + }
449 + }); })
450 +
451 + })
452 + }
453 + }
304 </script> 454 </script>
305 455
306 456
457 + <!--그래프를 그리기 위해서 chart.js를 불러옴-->
458 + <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.min.js"></script>
459 +
307 460
308 </main> 461 </main>
309 <!-- Footer--> 462 <!-- Footer-->
......