반응형

     정보

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

    •  작성자     : 박진만

    • 작성일     : 2020-12-05

    • 설   명      :

    • 수정이력 :

     

     내용

    [개요]

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

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

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

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

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

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

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

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

    • 좋은 하루 보내세요.

     

     

    [재능플랫폼] 오투잡

     

    [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

    [소스 코드]

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

     

     참고 문헌

    [논문]

    • 없음

    [보고서]

    • 없음

    [URL]

    • 없음

     

     문의사항

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

    • sangho.lee.1990@gmail.com

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

    • saimang0804@gmail.com
     
    반응형
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기