정보
-
업무명 : 소프트웨어 개발
-
작성자 : 박진만
-
작성일 : 2019-12-08
-
설 명 : 특정 URL 의 이미지를 다운받아 gif 파일을 생성하는 프로그램
-
수정이력 :
내용
[특징]
-
일본 미세먼지 예보 사이트 ( http://venus.nies.go.jp)에서 제공하는 초미세먼지 예측 이미지 중 특정 날짜를 선택하여 자동으로 JPG 이미지를 다운로드 한 후 GIF 애니메이션 파일을 생성하는 프로그램.
[기능]
-
타겟이 되는 URL 의 이미지를 다운로드
-
다운로드한 이미지를 로컬에 저장
-
저장된 이미지를 종합하여 GIF 애니메이션 파일 생성
[프로그램 종류]
-
데이터 마이닝 프로그램
-
이미지 처리 프로그램
[사용법]
-
원하는 날짜 선택하는 방법
-
프로그램 상단의 주석 ( # SET DATE # ) 아래의 'StartDate' 및 EndDate 변수를 원하는 날짜로 수정.
-
-
gif 이미지 프레임 수 변경 및 루프 변경 방법
-
프로그램 하단 44째 라인의 image_animate 함수에서 fps(초당 프레임 수) 와 loop (반복횟수, 0=무한반복) 옵션 변경
-
-
프로그램 실행 방법
-
purrr 및 magick 라이브러리 설치 후 아래의 코드 실행
-
[명세]
-
라이브러리 로드
library(purrr)
library(magick)
-
다운로드 받을 날짜 (시작 - 끝) 입력
# SET DATE #
StartDate <- "2019-12-01 00:00" # set start time (character type)
EndDate <- "2019-12-01 23:00" # set end time (character type)
-
시작 - 끝 사이에 시간 간격으로 만든 후 각 설정한 형태에 따라 날짜 포멧 추출
-
vTime은 기존의 yyyy-mm-dd HH:MM:SS 날짜 포멧을 yyyymmddhh 로 만들어주기 위한 작업.
-
vTime 을 기반으로 원하는 부분 (ex : yyyy, mm, yyyymmdd 등) 추출.
# make target date and make format (yyyy-mm-dd hh:mm:ss -> yyyymmddhh)
date <- seq(as.POSIXct(StartDate),as.POSIXct(EndDate),by="hour")
vTime = strptime(date,"%Y-%m-%d %H:%M:%S")
TargetDate <- format(vTime,"%Y%m%d%H")
YYYY <- format(vTime,"%Y") # make YYYY in date Variable
MM <- format(vTime,"%m") # make MM in date Variable
YYYYMMDD <- format(vTime,"%Y%m%d")
# make target date and make format(yyyy-mm-dd hh:mm:ss -> yyyymmddhh)
-
타겟이 되는 URL 및 저장 디렉토리 생성.
# make Target URL
URLPath <- paste0("http://venus.nies.go.jp/datadepot/gmtmap/JPN/PM25/",YYYY,"/",MM,"/") #Path
TargetFile <- paste0("JPN_PM25_",TargetDate,".jpg") #File
TargetURL <- paste0(URLPath,TargetFile) # Path + File
# make Target URL
# make dir #
SavaDirPath <- paste0("./",unique(YYYYMMDD))
dir.create(SavaDirPath)
# make dir #
-
loop문을 이용하여 이미지 다운로드.
-
tryCatch 문을 통해 해당 위치에 파일이 없는 경우 예외처리.
# download jpg file in target URL #
for (i in 1:length(TargetURL)) {
#url = URL, destfile = savedirpath, mode = binary option
tryCatch(
download.file(url = TargetURL[i], destfile = paste0(SavaDirPath,"/",TargetFile[i]), mode="wb", quiet = FALSE)
, error = function(e) print(paste(TargetURL[i], 'did not work out'))
)
}
# download jpg file in target URL #
-
애니메이션 파일 생성
-
위 : 다운받아진 LOCAL 파일을 이용하여 GIF 생성 (이미지와 애니메이션 파일 모두 확보 가능)
-
아래 : 직접 해당 URL에 접근하여 GIF 생성 (애니메이션 파일만 확보 가능)
-
## make gif file (in downloaded local file)##
list.files(path = paste0(SavaDirPath,"/"), pattern = "*jpg", full.names = T) %>%
map(image_read) %>% # reads each path file
image_join() %>% # joins image
image_animate(fps=2,loop = 0) %>% # animates, can opt for number of loops (0 = infinite loop)
image_write(paste0(SavaDirPath,"/OUT.gif")) # write to target dir
## make gif file ##
## make gif file (direct url) ##
TargetURL %>%
map(image_read) %>% # reads each path file
image_join() %>% # joins image
image_animate(fps=2,loop = 0) %>% # animates, can opt for number of loops (0 = infinite loop)
image_write(paste0(SavaDirPath,"/OUT.gif")) # write to target dir
## make gif file ##
[사용 OS]
-
Windows10
[사용 언어]
-
R
소스 코드
결과
[가시화]
참고 문헌
[논문]
- 없음
[보고서]
- 없음
[URL]
- 없음
문의사항
[기상학/프로그래밍 언어]
- sangho.lee.1990@gmail.com
[해양학/천문학/빅데이터]
- saimang0804@gmail.com
'프로그래밍 언어 > R' 카테고리의 다른 글
[R] NetCDF 형식인 NPP/CERES SSF 기상위성 자료를 이용하여 아스키 (ASCII) 형식으로 처리 (0) | 2019.12.28 |
---|---|
[R] 다수의 날짜정보를 컬럼으로 가진 DataFrame 에서의 컬럼 제어 방법 (0) | 2019.12.21 |
[R] ggplot2를 이용한 Log 스케일로 산점도 가시화 (0) | 2019.12.06 |
[R] 한반도 연 평균기온 계산 및 Plotting (0) | 2019.11.03 |
[R] 요리 사이트 (만개의 레시피) 크롤링 및 정보수집 소스코드 (0) | 2019.09.07 |
최근댓글