반응형

     정보

    • 업무명     : [R] 격자정보 및 U,V,풍속 정보를 이용하여 동아시아 지도에 매핑하기
    • 작성자     : 박진만
    • 작성일     : 2021-01-30
    • 설   명      :
    • 수정이력 :

     

     내용

    [개요]

    • 안녕하세요? 기상 연구 및 웹 개발을 담당하고 있는 해솔입니다.
    • 이전 포스팅에서는 U,V 그리고 풍속 정보를 입력받아 지도위에 매핑하는 프로그램입니다.
    • 즉 벡터와 스칼라를 동시에 표현하는 방법을 소개하고자 합니다.

     

    [특징]

    • 지도를 불러온 후 벡터와 스칼라 동시에 표현하기

     

    [기능]

    • shp 파일 없이 미리 정의된 지도 불러오기
    • 위의 지도 위에 벡터(U,V) 와 스칼라(WS) 값 동시 매핑

     

    [활용 자료]

    • 자료명 : 동아시아 풍속자료

     

    [자료 처리 방안 및 활용 분석 기법]

    • 없음

     

    [사용법]

    • 소스 코드 참조

     

    [사용 OS]

    • Windows 10

     

    [사용 언어]

     

    [사용 언어]

    • R v4.0.3

     

     소스 코드

    [명세]

    • 라이브러리 읽기
    library(jsonlite)
    library(dplyr)
    library(ggplot2)
    library(sf)
    library(rnaturalearth)
    library(grid)

     

    • 데이터 읽기
      • 격자정보 및 값이 들어있음.
    data <- read.csv("./20201005_12_024h.csv")
    data
    

     

    • 지도 불러오기
      • rnaturalearth 패키지로부터 미리 정의된 세계지도를 불러오기
    world <- ne_countries(scale = "medium", returnclass = "sf")
    class(world)
    world

     

    • ggplot2 를 이용하여 매핑 수행
      • 특정 국가를 그리는 것은 아니므로 x,y 축의 범위를 지정하여 그림을 그릴 영역 지정
      • 본 글에서는 육지 지역을 그리기를 원하지 않기 때문에 육지 지역에 색을 입혀 마스킹 처리를 하였음
    ggplot() +
      theme_bw() +
       geom_tile(data=data, aes(x=lon,y=lat,color = WS),size = 8) +
      scale_color_gradientn(colours =c("blueviolet","blue","green","yellow","orange","red","darkred"),
                            breaks = seq(0,30,5), limits = c(0,30)) +
      geom_segment(data=data, mapping=aes(x=lon, y=lat, xend=lon+U/5, yend=lat+V/5),size=0.5,arrow = arrow(length = unit(0.1,"cm")), color="black") +
      geom_sf(data = world) +
      xlim(100,150) +
      ylim(0,60) +
      ggsave("./rev.png")

     

    [코드 수행 결과]

     

     

     

     참고 문헌

    [논문]

    • 없음

    [보고서]

    • 없음

    [URL]

    • 없음

     

     문의사항

    [기상학/프로그래밍 언어]

    • sangho.lee.1990@gmail.com

    [해양학/천문학/빅데이터]

    • saimang0804@gmail.com

     

     

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