정보
-
업무명 : 특정 지저의 위치 좌표가 주어졌을 때 해당 좌표의 고도 구하기
-
작성자 : 박진만
-
작성일 : 2020-12-05
-
설 명 :
-
수정이력 :
내용
[개요]
-
안녕하세요? 웹 개발 및 연구 개발을 담당하고 있는 해솔입니다.
-
다년간 축적된 경험 (기상학 학술 보고서 및 국/영문 학술 논문 게재, 블로그 운영, IT 회사 웹 개발 담당) 및 노하우를 바탕으로 개개인에게 맞춤형 솔루션을 수행할 수 있습니다.
-
특히 재능 플랫폼 (크몽, 오투잡, 해피캠퍼스, 레포트 월드)에서 누구보다도 경쟁력 있는 가격으로 양질의 서비스를 제공하고 있습니다.
-
아스키 형식의 텍스트 (text) 파일부터 과학자료 형식 (HDF, H5, NetCDF, Grib, Grb) 및 Data Base (DB) 자료까지 다양한 형태의 자료를 이용하여 수집, 전처리, 분석, 시각화해 드립니다.
-
또한 웹 사이트에 대한 정보를 이용한 웹 크롤링 및 그에 따른 엑셀 및 DB 구축도 가능합니다.
-
아울러 기초 통계 (빈도분포, Prired t-test, Wilcoxn 등)에서 지도/비지도 학습을 통한 회귀모형 구축에 이르기 까지 효율적인 통계 정보를 제공합니다.
-
최근 대한민국의 후속위성인 천리안위성 2A호 웹 서비스 서브시스템 및 환경위성 2B호 통합 자료처리 서브시스템에 대한 웹 개발을 수행하였습니다.
-
-
그리고 해솔 블로그에서는 다양한 기상학/천문학 정보와 더불어 사무 자동화/프로그래밍 언어를 소개하오니 방문 부탁드립니다.
-
좋은 하루 보내세요.
[재능플랫폼] 오투잡
[재능플랫폼] 크몽
요청
[세부 사항]
-
R 스크립트를 이용하여 위도/경도가 주어진 입력 자료를 읽은 후 해발고도를 구한 뒤 출력하기
완료
[사용 OS]
-
Windows 10
[사용 언어]
-
R v4.0.2
[명세]
-
입력자료를(첨부됨)의 위도/경도를 이용한 해발고도 (m) 출력
[소스 코드]
# 라이브러리 로드
library(raster)
library(dplyr)
library(ggplot2)
library(stringr)
library(data.table)
library(openxlsx)
## 고도 정보 csv 파일 로드 및 병합 ##
fn2 <- Sys.glob("./dem_out/*.hgt.csv")
fn_name2 <- str_split_fixed(fn2,pattern = "/",n = 3)[,3]
data_full <- data.frame()
for (f in fn2) {
data <- fread(f,sep = "\t")
data_full <- rbind(data_full,data)
}
head(data_full)
## 고도 정보 csv 파일 로드 및 병합 ##
## 입력자료 읽기 ##
indata = openxlsx::read.xlsx("./입력/INPUT.xlsx")
## 범위 확인 ##
filterislat = indata %>%
dplyr::filter(CurLatitude != 0) %>%
dplyr::select(CurLatitude)
filterislon = indata %>%
dplyr::filter(CurLongitude != 0) %>%
dplyr::select(CurLongitude)
plot(filterislon$CurLongitude,filterislat$CurLatitude)
plot(data_full_L1$lon,data_full_L1$lat)
## 범위 확인 ##
## lat lon 의 최대/최소값에 맞춘 사각형 지정
minlat = min(filterislat)
maxlat = max(filterislat)
minlon = min(filterislon)
maxlon = max(filterislon)
# 필터링
data_full_L1 = data_full %>%
dplyr::filter(lat >= minlat - 0.1, lat <= maxlat + 0.1) %>%
dplyr::filter(lon >= minlon - 0.1, lon <= maxlon + 0.1)
## lat lon 의 최대/최소값에 맞춘 사각형 지정
for (i in 1:nrow(indata)) {
# 위 경도가 결측인 경우 -999로 나타냄
if(indata$CurLatitude[i] == 0 | indata$CurLongitude[i] == 0) {
indata$hight[i] = -999
indata$dist[i] = -999
next
}
if(i %% 1000 == 0) {
print(i)
}
data_full_dis <- data_full_L1 %>%
dplyr::select(lon,lat,high) %>%
dplyr::mutate(dist = sqrt( (lon - indata$CurLongitude[i]) ** 2 + (lat - indata$CurLatitude[i]) ** 2 )) %>%
dplyr::filter(dist == min(dist))
indata$hight[i] = data_full_dis$high
indata$dist[i] = data_full_dis$dist
}
openxlsx::write.xlsx(indata,"./출력/out.xlsx")
[결과물]
-
출력자료 (첨부됨) 예시
참고 문헌
[논문]
- 없음
[보고서]
- 없음
[URL]
- 없음
문의사항
[기상학/프로그래밍 언어]
- sangho.lee.1990@gmail.com
[해양학/천문학/빅데이터]
- saimang0804@gmail.com
'자기계발 > 재능상품' 카테고리의 다른 글
[재능상품] R을 통한 The Locus for Focus 모형을 이용한 설문조사 결과 시각화 및 워드 클라우드 생성 (0) | 2020.12.06 |
---|---|
[재능상품] 파이썬으로 인스타그램 헤시태그 검색 기반 크롤링 프로그램 (0) | 2020.12.05 |
[재능상품] Python을 이용한 웹 크롤링 및 워드 클라우드 시각화 (0) | 2020.12.02 |
[재능상품] 리눅스 쉘 스크립트를 이용한 사용자 요구사항 (0) | 2020.12.01 |
[재능상품] R을 이용한 과거 네이버/zum/구글 실시간 검색어 수집 후 코로나 관련 키워드 추출 (0) | 2020.11.30 |
최근댓글