정보
-
업무명 : 육지 및 해양에 대한 마스킹 (Masking) 처리 및 가시화
-
작성자 : 이상호
-
작성일 : 2020-03-08
-
설 명 :
-
수정이력 :
내용
[개요]
-
안녕하세요? 기상 연구 및 웹 개발을 담당하고 있는 해솔입니다.
-
일반적으로 기상 자료 (수치 예측 모델, 위성 자료)를 이용할 경우 전체 영역 (기온)에 대해서 필요하나 일부 산출물은 육지 (예. 지표면 온도) 또는 해양 (예. 해수면 온도) 영역에 필요합니다.
-
따라서 오늘 포스팅은 육지 및 해양에 대한 마스킹 처리 및 가시화를 소개해 드리고합니다.
[특징]
-
육지 또는 해양 영역에 대한 자료 처리하기 위해서 마스킹 기술이 요구되며 이 프로그램은 이러한 목적을 달성하기 위한 소프트웨어
[기능]
-
Rwalc 패키지에서 gshhsMask 함수를 통해 육/해양 마스킹
-
metR 패키지에서 MaskLand 함수를 통해 육/해양 마스킹
-
spData 패키지에서 geom_sf 함수를 통해 육지 마스킹
[활용 자료]
-
없음
[자료 처리 방안 및 활용 분석 기법]
-
없음
[사용법]
-
소스 코드 참조
[사용 OS]
-
Windows 10
[사용 언어]
-
R v3.6.3
-
R Studio v1.2.5033
소스 코드
[명세]
-
전역 설정
-
최대 10 자리 설정
-
메모리 해제
-
영어 인코딩 설정
-
폰트 설정
-
# Set Option
memory.limit(size = 9999999999999)
options(digits = 10)
Sys.setlocale("LC_TIME", "english")
font = "Palatino Linotype"
-
라이브러리 읽기
# Library Load
library(extrafont)
library(tidyverse)
library(lubridate)
library(spData)
library(RWalc)
library(noncompliance)
library(metR)
-
데이터 프레임 설정
-
변수 설정
-
기준 위도 : -90에서 90까지 0.5 간격
-
기준 경도 : 0에서 360까지 0.5 간격
-
-
데이터 프레임 설정
-
즉 기준 위도 (-90)를 기준으로 기준 경도 (0-360, 0.5 간격) 설정
-
-
# Set Variable
nRefLat = seq(-90, 90, 0.5)
nRefLon = seq(0, 360, 0.5)
# Set Data Frame
dfData = noncompliance::expand.grid.DT(
nRefLat
, nRefLon
, col.names = c("nLat", "nLon")
)
dplyr::tbl_df(dfData)
Land Sea Mask (1) : gshhsMask
-
gshhsMask
-
Rwalc 패키지에서 gshhsMask 함수를 이용하여 마스킹 분류
-
그 결과 육지의 경우 TRUE이고 해양에서는 FALSE로 반환
-
mask = RWalc::gshhsMask(res = c("0.1", "0.05"), land = TRUE, latmin = -90, latmax = 90)
dfGshhsMaskData = dfData %>%
dplyr::mutate(
isLand = mask(0, nLon, nLat)
)
dplyr::tbl_df(dfGshhsMaskData)
ggplot(data = dfGshhsMaskData, aes(x = nLon, y = nLat, fill = isLand)) +
theme_bw() +
geom_tile() +
labs(
title = "Gshhs Mask : Land (TRUE) and Sea (FALSE)"
, x = ""
, y = ""
) +
metR:::theme_field() +
theme(text = element_text(family = font)) +
ggsave(filename = paste0("FIG2/Gshhs_Mask.png"), width = 10, height = 6, dpi = 600)
Land Sea Mask (2) : MaskLand
-
MaskLand
-
metR 패키지에서 MaskLand 함수를 이용하여 마스킹 분류
-
그 결과 육지의 경우 TRUE이고 해양에서는 FALSE로 반환
-
dfMaskLandData = dfData %>%
dplyr::mutate(
isLand = metR::MaskLand(nLon, nLat, mask = "world")
)
dplyr::tbl_df(dfMaskLandData)
ggplot(data = dfGshhsMaskData, aes(x = nLon, y = nLat, fill = isLand)) +
theme_bw() +
geom_tile() +
labs(
title = "Gshhs Mask : Land (TRUE) and Sea (FALSE)"
, x = ""
, y = ""
) +
metR:::theme_field() +
theme(text = element_text(family = font)) +
ggsave(filename = paste0("FIG2/Gshhs_Mask.png"), width = 10, height = 6, dpi = 600)
Land Sea Mask (3) : geom_sf
-
geom_sf
-
spData 패키지에서 geom_sf 함수를 이용하여 육지 마스킹
-
그 결과 육지의 경우 grey80 색으로 덮어쓰기
-
# Set Map Data
mapData = spData::world
ggplot() +
theme_bw() +
geom_sf(data = mapData, fill = "grey80", color = "black") +
labs(
title = "Land Mask"
, x = ""
, y = ""
) +
metR:::theme_field() +
theme(text = element_text(family = font)) +
ggsave(filename = paste0("FIG2/Sf_Land_Mask.png"), width = 10, height = 6, dpi = 600)
[전체]
참고 문헌
[논문]
- 없음
[보고서]
- 없음
[URL]
- 없음
문의사항
[기상학/프로그래밍 언어]
- sangho.lee.1990@gmail.com
[해양학/천문학/빅데이터]
- saimang0804@gmail.com
최근댓글