공공데이터 사이트 -> 참고문서 -> 미세먼지값 PM10

     

    RLab02 

    # 지역별 미세먼지 농도 비교 : 지도
    # 지도에서 원의 크기는 각 지역별 농도 크기 표시한것임.
    # 1) 대기오염정보 조회 API 설정
    # 2) URL 작성
    # 3) 실시간 시도별 평균 정보 조회 API 호출 : xmlparse()
    # 4) 미세먼지 데이터 프레임 변환 : xmlToDataFrame()
    # 5) 구글 지도 API키 설정 : register_google()
    # 6) 지역별 좌표 검색 : geocoding()
    # 7) 지도 중심좌표 설정 : geocoding()
    # 8) 구글 지도정보 생성 : get_googlemap()
    # 9) 지도 출력 : ggplot() + geom_plot()
    
    # 미세먼지 XML 문서 출력
    library(XML)
    library(ggplot2)
    library(ggmap)
    
    api <- "http://openapi.airkorea.or.kr/openapi/services/rest/ArpltnInforInqireSvc/getCtprvnMesureLIst"
    
    api_key <- "1M%2FFCceOAqpOGJVl8RzWL37KGoMN2F37W5MqLDPy82V0Z269WVtOnntv0dGbOVXObPy%2BeL4l75%2BV94X1PN%2BDEg%3D%3D"
    
    numofRows <- 10
    pageNo <- 1
    itemCode <- "PM10"
    dataGubun <- "HOUR"
    searchCondition <- "MONTH"
    
    url <- paste(api,
                 "?serviceKey=", api_key,
                 "&numofRows=", numofRows,
                 "&pageNo=", pageNo,
                 "&itemCode=", itemCode,
                 "&dataGubun=", dataGubun,
                 "&searchCondition", searchCondition,
                 sep = "")
    xmlfile <- xmlParse(url)
    xmlfile
    
    # -------------------------------------------------------------
    # 특정 시간대의 지역별 미세먼지 농도 추출
    df <- xmlToDataFrame(getNodeSet(xmlfile, "//items/item"))
    df
    
    pm <- df[1,4:20]
    pm
    
    # 지역별 미세먼지 농도의 지도 출력
    register_google(key = "AIzaSyAASFrtLw7D71icC9VukYenUDm2tbChAfs")
    cities <- c("서울시","부산시","대구시","인천시","광주시","대전시" ,"울산시","경기도","강원도","충청북도","충청남도","전라북도","전라남도","경상북도","경상남도","제주시","세종시")
    
    # 지역별 좌표검색 (위도, 경도)
    gc <- geocode(enc2utf8(cities))
    gc
    
    # 지역별 미세먼지 정보의 데이터프레임
    df2 <- data.frame(지역명=cities,
                         미세먼지=t(pm),
                         경도=gc$lon,
                         위도=gc$lat,
                         stringsAsFactors=F)
    df2
    
    # 두번째 열이름을 미세먼지로 변경
    names(df2)[2] <- "미세먼지"
    
    df2
    
    str(df2)
    
    # 지도에 원의 크기에 반영하기 위해
    # 미세먼지의 데이터 유형을 숫자형으로 변환
    df2[,2] <- as.numeric(df2[,2])
    
    # 지도 중심 좌표설정
    cen <- as.numeric(geocode(enc2utf8("전라북도")))
    
    # 구글 지도정보 생성
    map <- get_googlemap(center = cen, zoom = 7)
    
    # 지도 출력
    ggmap(map) +
                 geom_point(data = df2,
                 aes(x=경도, y=위도),
                 color=rainbow(length(df2$미세먼지)),
                 size=df2$미세먼지*0.3,
                 alpha=0.5)

     

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