www.data.go.kr/index.do

     

    공공데이터 포털

    국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Datase

    www.data.go.kr

    데이터 요청

     

    XML문서를 데이터프레임으로 변환

    # 공공데이터 포털 (www.data.go.kr)
    # 오픈 API : 날씨, 교통정보 등 실시간 데이터를 제공받기 위해서 호출하는 API.
    
    # 활용기관                                                제공기관
     # : 개인(개발자), API키 신청              API키 신청 
     # 민간기관,   =============>data.go.kr ==============> 오픈API등록
     # 공공기관,   <============ (파일데이터,<============  인증키 관리
     #  행정기관        API키     API 관리)       API키
     
    # 패키지 : 
    # ggplot2(그래프출력을 위한 고급 시각화 패키지)
    # ggmap (지도 출력)
    # XML (웹에 연결된 XML,HTML문서 읽음)
    
    # 미세먼지 농도의 시간대별 변화 (막대 그래프)
    # 1)대기오염정보 조회 API 설정
    # 2)URL 작성
    # 3)실시간 시도별 평균 정보 조회 API 호출 : xmlparse()
    # 4)미세먼지 데이터 프레임 변환 : xmlToDataFrame()
    # 5)바차트 출력 : ggplot() + geom_bar()
    
    install.packages("XML")
    library(XML)
    library(ggplot2)
    
    # API 설정 (한줄로 작성)
    api <- "http://openapi.airkorea.or.kr/openapi/services/rest/ArpltnInforInqireSvc/getCtprvnMesureLIst"
    
    # API키 (공공 데이터 포털에서 승인 받은 키)
    api_key <- "1M%2FFCceOAqpOGJVl8RzWL37KGoMN2F37W5MqLDPy82V0Z269WVtOnntv0dGbOVXObPy%2BeL4l75%2BV94X1PN%2BDEg%3D%3D"
    
    # 한페이지에 표현할 데이터 행의 수
    numofRows <- 10
    
    # 출력할 페이지 번호 
    pageNo <- 1
    
    # 아이템 코드 : 미세먼지 
    itemCode <- "PM10"
    
    # 미세먼지의 시간 단위 평균
    dataGubun <- "HOUR"
    
    # 요청 데이터 기간
    searchCondition <- "MONTH"
    
    # URL 작성
    # API 매개변수 = 매개변수값을 전달.
    # 첫번째 매개변수 앞에서는 '?', 두번째부터는 '&'로 구분
    url <- paste(api,
                 "?serviceKey=", api_key,
                 "&numofRows=",numofRows,
                 "&pageNo=", pageNo,
                 "&itemCode=", itemCode,
                 "&dataGubun=", dataGubun,
                 "&searchCondition=", searchCondition,
                 sep = "")
    url
    
    # API호출 (XML 문서로 다운로드 받음)
    # xmlParse() : XML 또는 HTML 파일에 대해 R에서 인식하는 구조로 변환해주는 함수
    xmlFile <- xmlParse(url)
    
    # 다운로드 받은 XML문서 확인 
    # xmlRoot() : XML 문서 객체의 루트 노드에 접근하는 기능 제공.
    #             매개변수 - XML 문서 객체
    xmlRoot(xmlFile)
    
    # ------------------------------------------------------------
    
    # R : XML문서를 데이터프레임으로 변환
    
    # items 노드 내에 여러 item 노드들을 데이터 프레임으로 변환
    # xmlToDataFrame() : XML 문서로부터 데이터 추출
    df <- xmlToDataFrame(getNodeSet(xmlFile, "//items/item"))
    
    # 시간대별 실시간 각지역의 미세먼지 농도를 확인
    df
    
    # -----------------------------------------------------------
    # R: 미세먼지 농도의 그래프
    ggplot(data = df, aes(x = dataTime, y = gyeongbuk)) +
            geom_bar(stat = "identity", fill = "green") 
    # geom_var() : 막대 그래프로 출력
    # 매개변수 - stat = identity : 데이터의 숫자크기로 출력 / bin : 데이터 그룹별 분류
    #            fill = 막대그래프 색상 
    
    # 라벨 수정
    ggplot(data = df, aes(x = dataTime, y = gyeongbuk)) +
            geom_bar(stat = "identity", fill = "green") +
            theme(axis.text.x = element_text(angle = 90)) +
            # x축 눈금 라벨 회전 각도
            labs(title = "시간대별 경북지역의 미세먼지 농도 변화", x="측정일시", y="농도")
    
    # R: 막대색
    ggplot(data = df, aes(x = dataTime, y = gyeongbuk, fill=dataTime)) +
            geom_bar(stat = "identity") +
            theme(axis.text.x = element_text(angle = 90)) +
            # x축 눈금 라벨 회전 각도
            labs(title = "시간대별 경북지역의 미세먼지 농도 변화", x="측정일시", y="농도") + 
            scale_fill_manual(values = rainbow(10))
    
    # 범례 삭제
    ggplot(data = df, aes(x = dataTime, y = gyeongbuk, fill=dataTime)) +
            geom_bar(stat = "identity") +
            theme(axis.text.x = element_text(angle = 90), legend.position = "none") +
            # x축 눈금 라벨 회전 각도
            labs(title = "시간대별 경북지역의 미세먼지 농도 변화", x="측정일시", y="농도") + 
            scale_fill_manual(values = rainbow(10))
    
    # 가로 막대 출력
    ggplot(data = df, aes(x = dataTime, y = seoul, fill=dataTime)) +
            geom_bar(stat = "identity") +
            theme(legend.position = "none") +
            # x축 눈금 라벨 회전 각도
            labs(title = "시간대별 경북지역의 미세먼지 농도 변화", x="측정일시", y="농도") + 
            scale_fill_manual(values = rainbow(10)) +
            coord_flip() #가로출력 : 그래프의 수평과 수직 축을 서로 바꿈

     

    Web storm 사용

     

     

    https://github.com/whatwg/html 

     

    whatwg/html

    HTML Standard. Contribute to whatwg/html development by creating an account on GitHub.

    github.com

     

     

     

    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기
    loading