정보
-
업무명 : 기상 관측소 정보를 이용하여 태양 위치 시간 (일출/일몰/아침 골든/남중/저녁 골든/일몰/항해 박명/천문 박명/밤/아침 박명) 계산
-
작성자 : 이상호
-
작성일 : 2020-01-09
-
설 명 :
-
수정이력 :
내용
[개요]
-
안녕하세요? 기상 연구 및 웹 개발을 담당하고 있는 해솔입니다.
-
인공위성 알고리즘 개발을 위해서 태양 위치 시간이 요구됩니다. 이러한 경우에 사용할 수 있는 태양과 달의 위치에 대한 계산을 도와주는 R 라이브러리 "suncale"를 소개하고자 합니다.
[특징]
-
인공위성 알고리즘 개발하기 위해서 태양 위치 시간이 요구되며 이 프로그램은 이러한 목적을 달성하기 위한 소프트웨어
[기능]
-
직달 일사량을 이용하여 일조량 산출 및 비교 분석
[활용 자료]
-
자료명 : 기상 관측소
-
자료 종류 : 관측소 번호, 위도, 경도, 관측소명
-
확장자 : dat
-
기간 : 없음
-
자료 해상도 : 없음
-
제공처 : 기상개방포털
[자료 처리 방안 및 활용 분석 기법]
-
없음
[사용법]
-
입력 자료를 동일 디렉터리 위치
-
소스 코드를 실행 (Rscript Calculate_Sun_Position_Time_Using_Weather_Station_Information.R)
-
계산 결과를 확인
[사용 OS]
-
Windows 10
[사용 언어]
-
R v3.6.2
-
R Studio v1.2.5033
소스 코드
[명세]
-
전역 설정
-
최대 10 자리 설정
-
메모리 해제
-
# Set Option
options(digits = 10)
memory.limit(size = 9999999999999)
-
라이브러리 읽기
# Library Load
library(data.table)
library(tidyverse)
library(lubridate)
library(suncalc)
library(DT)
-
파일 읽기
# File Read
dfStation = fread("INPUT/Station_Information.dat", sep = "\t", header = FALSE, skip = 1)
colnames(dfStation) = c("station", "lon", "lat", "stationName")
dplyr::tbl_df(dfStation)
-
Data Frame 설정
-
날짜 선정
-
# Set Data Frame
dfData = dfStation %>%
dplyr::mutate(date = lubridate::ymd("2020-01-09"))
dplyr::tbl_df(dfData)
-
Data Frame를 통해 L1 전처리
-
getSunlightTimes 속성을 통해 태양 위치 시간 계산 (아래 속성 참조)
-
기상 관측소의 위도 및 경도를 기준으로 좌측 조인
-
속성 |
설명 |
sunrise |
일출 시간 (태양의 머리가 수평선에서 나타나는 시간) |
sunriseEnd |
일출 시간 (태양의 모든 수평선에서 나타나는 시간) |
goldenHourEnd |
아침 골든 종료 시간 |
solarNoon |
남중 시각 (태양의 고도가 가장 높은 위치에 있는 시간) |
goldenHour |
저녁 골든 시작 시간 |
sunsetStart |
일몰 시간 (태양이 수평선에 나타나는 시간) |
sunset |
일몰 시간 (태양의 모든 수평선에 가라 앉는 시간) / 시민 박명 시작 시간 (태양이 숨어서 밖에서 활동할 수있는 시간) |
dusk |
항해 박명 시작 시간 |
nauticalDusk |
천문 박명 시작 시간 |
night |
밤의 시작 시간 |
nadir |
밤의 가장 어두운 시간의 시작 시간 |
nightEnd |
밤의 종료 시간 |
nauticalDawn |
아침의 항해 박명 시작 시간 |
dawn |
아침의 항해 박명 종료 시간 |
# L1 Processing Using Data Frame
dfDataL1 = getSunlightTimes(
data = dfData
, keep = c("night", "nadir", "nightEnd", "nauticalDawn", "dawn", "sunrise", "sunriseEnd", "goldenHourEnd", "solarNoon", "goldenHour", "sunsetStart", "sunset", "dusk", "nauticalDusk")
, tz = "Asia/Seoul"
) %>%
dplyr::left_join(dfStation, by=c("lat" = "lat", "lon" = "lon"))
datatable(dfDataL1)
dfDataL1
-
L1 자료를 통해 출력
# Write Using L1 Data Frame
data.table::fwrite(
dfDataL1
, sep = ","
, file = "OUTPUT/dfTimeDataL1.csv"
, append = FALSE
, row.names = FALSE
, col.names = TRUE
, dateTimeAs = "write.csv"
, na = NA
)
[전체]
참고 문헌
[논문]
- 없음
[보고서]
- 없음
[URL]
- 없음
문의사항
[기상학/프로그래밍 언어]
- sangho.lee.1990@gmail.com
[해양학/천문학/빅데이터]
- saimang0804@gmail.com
'프로그래밍 언어 > R' 카테고리의 다른 글
[R] 문자열 조작 "stringr" 패키지 소개 (1) | 2020.02.09 |
---|---|
[R] 데이터 정제를 위한 "dplyr, tidyr" 패키지 소개 (0) | 2020.02.08 |
[R] 정지궤도/극궤도 기상위성으로부터 시공간 일치 자료 (Himawari-8/AHI vs Terra/CERES)를 이용한 2차원 빈도분포 산점도 (0) | 2020.01.07 |
[R] 직달 일사량 자료를 이용한 일조량 산출 및 비교 분석 (0) | 2020.01.06 |
[R] KLAPS 수치예측 모델 자료를 이용하여 내삽 방법 (Inverse Distance Weighting, Linear Interpolation)에 따른 전처리 및 가시화 (0) | 2020.01.03 |
최근댓글