[재능상품] 특정 지점의 위치 좌표가 주어졌을 때 해당 좌표의 고도 구하기

 정보

  • 업무명     :  특정 지저의 위치 좌표가 주어졌을 때 해당 좌표의 고도 구하기

  •  작성자     : 박진만

  • 작성일     : 2020-12-05

  • 설   명      :

  • 수정이력 :

 

 내용

[개요]

  • 안녕하세요? 웹 개발 및 연구 개발을 담당하고 있는 해솔입니다.

  • 다년간 축적된 경험 (기상학 학술 보고서 및 국/영문 학술 논문 게재, 블로그 운영, IT 회사 웹 개발 담당) 및 노하우를 바탕으로 개개인에게 맞춤형 솔루션을 수행할 수 있습니다.

  • 특히 재능 플랫폼 (크몽, 오투잡, 해피캠퍼스, 레포트 월드)에서 누구보다도 경쟁력 있는 가격으로 양질의 서비스를 제공하고 있습니다.

    • 아스키 형식의 텍스트 (text) 파일부터 과학자료 형식 (HDF, H5, NetCDF, Grib, Grb) 및 Data Base (DB) 자료까지 다양한 형태의 자료를 이용하여 수집, 전처리, 분석, 시각화해 드립니다.

    • 또한 웹 사이트에 대한 정보를 이용한 웹 크롤링 및 그에 따른 엑셀 및 DB 구축도 가능합니다.

    • 아울러 기초 통계 (빈도분포, Prired t-test, Wilcoxn 등)에서 지도/비지도 학습을 통한 회귀모형 구축에 이르기 까지 효율적인 통계 정보를 제공합니다.

    • 최근 대한민국의 후속위성인 천리안위성 2A호 웹 서비스 서브시스템 및 환경위성 2B호 통합 자료처리 서브시스템에 대한 웹 개발을 수행하였습니다.

  • 그리고 해솔 블로그에서는 다양한 기상학/천문학 정보와 더불어 사무 자동화/프로그래밍 언어를 소개하오니 방문 부탁드립니다.

  • 좋은 하루 보내세요.

etc-image-0

 

 

[재능플랫폼] 오투잡

 

[IT개발 - 응용프로그래밍] 통계 분석, 데이터 분석, 시각화를 성실하게 해 드립니다. - 재능마켓 �

판매가격:10,000원, [소개] - 데이터산업진흥원 데이터 가공 공급기업 선정 - 정보통신산업 진흥원 데이터 가공 공급기업 선정 - 다년간 축적된 경험 노하우를 바탕으로 개개인에게 맞춤형 솔루션�

www.otwojob.com

 

[재능플랫폼] 크몽

 

데이터수집, 파싱, 크롤링 해 드립니다. | 50,000원부터 시작 가능한 총 평점 0점의 IT·프로그래밍,

0개 총 작업 개수 완료한 총 평점 0점인 shlee1990의 IT·프로그래밍, 데이터분석·리포트, 데이터 마이닝·크롤링 서비스를 0개의 리뷰와 함께 확인해 보세요. IT·프로그래밍, 데이터분석·리포트, 데

kmong.com

 

 요청

[세부 사항]

  • R 스크립트를 이용하여 위도/경도가 주어진 입력 자료를 읽은 후 해발고도를 구한 뒤 출력하기

 

 

 완료

[사용 OS]

  • Windows 10

 

[사용 언어]

  • R v4.0.2

 

[명세]

  • 입력자료를(첨부됨)의 위도/경도를 이용한 해발고도 (m) 출력

INPUT.xlsx
2.80MB
etc-image-1

[소스 코드]

# 라이브러리 로드
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")


 

[결과물]

  • 출력자료 (첨부됨) 예시

out.xlsx
3.52MB
etc-image-2

 

 참고 문헌

[논문]

  • 없음

[보고서]

  • 없음

[URL]

  • 없음

 

 문의사항

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

  • sangho.lee.1990@gmail.com

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

  • saimang0804@gmail.com