3 min read

[R] WSL에서 rgdal 패키지 설치 및 좌표 변환 사용해보기

WSL에서 rgdal 패키지를 설치 해보자. rgdal 패키지는 좌표계를 변환하는 패키지로 좌표계에 대한 정보가 무수히 많으니 자세한건 다음을 참고 하자. 단순히 ’rgdal’패키지를 설치 하고 좌표를 변환 하는데 초점을 맞춰보도록 하자.

rgdal패키지 설치

설치 오류

wsl에 설치되어있는 R에 library(rgdal)를 실행 했을때 다음의 오류가 생긴다.

library(rgdal)
Error in library(rgdal) : there is no package called ‘rgdal’

rgdal 패키지 설치

구글링을 해서 찾아본 결과 다음의 코드를 실행하면 설치가 완료 된다.

install.packages('https://cran.r-project.org/src/contrib/Archive/rgdal/rgdal_1.3-9.tar.gz',repos=NULL,type="source")
Installing package into ‘/home/owen/R/x86_64-pc-linux-gnu-library/3.4’
(as ‘lib’ is unspecified)
trying URL 'https://cran.r-project.org/src/contrib/Archive/rgdal/rgdal_1.3-9.tar.gz'
Content type 'application/x-gzip' length 1668195 bytes (1.6 MB)
==================================================
downloaded 1.6 MB


.........(중략).........


** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** installing vignettes
** testing if installed package can be loaded
* DONE (rgdal)

설치 성공

위의 패키지를 설치 하면서 실행을 해보면 다음과 같이 성공 메시지가 함께 출력된다.

library(rgdal)
rgdal: version: 1.3-9, (SVN revision 794)
 Geospatial Data Abstraction Library extensions to R successfully loaded
 Loaded GDAL runtime: GDAL 2.2.3, released 2017/11/20
 Path to GDAL shared files: /usr/share/gdal/2.2
 GDAL binary built with GEOS: TRUE 
 Loaded PROJ.4 runtime: Rel. 4.9.3, 15 August 2016, [PJ_VERSION: 493]
 Path to PROJ.4 shared files: (autodetected)
 Linking to sp version: 1.4-2 

rgdal을 사용한 좌표 변환

이번엔 rgdal을 사용한 좌표를 변환 시켜 보자. 이 예시는 다음의 jahyun.koo님의 Rpubs: R의 좌표계 변환하기 그대로 참고 했음음 알리고 출처에도 남겨 두도록 하겠다.

rgdal 패키지 로드

library(rgdal)
## Loading required package: sp
## rgdal: version: 1.3-9, (SVN revision 794)
##  Geospatial Data Abstraction Library extensions to R successfully loaded
##  Loaded GDAL runtime: GDAL 2.2.3, released 2017/11/20
##  Path to GDAL shared files: /usr/share/gdal/2.2
##  GDAL binary built with GEOS: TRUE 
##  Loaded PROJ.4 runtime: Rel. 4.9.3, 15 August 2016, [PJ_VERSION: 493]
##  Path to PROJ.4 shared files: (autodetected)
##  Linking to sp version: 1.4-2

좌표변환 함수

좌표변환 함수를 만들어놓자. convertCoordSystem()라는 함수로 만들어 둘것이며, 다음의 코드를 사용한다.

  • parameter ** long : 경도 ** lat : 위도 ** from.crs : 갖고 있는 데이터 좌표계의 proj.4 인자 ** to.crs : 변환할 좌표계의 proj.4 인자
  • return ** from.crs 좌표계 좌표를 to.crs 좌표계 좌표로 반환하여 data.frame 형식으로 반환한다.
convertCoordSystem <- function(long, lat, from.crs, to.crs){
  xy <- data.frame(long=long, lat=lat)
  coordinates(xy) <- ~long+lat
  
  from.crs <- CRS(from.crs)
  from.coordinates <- SpatialPoints(xy, proj4string=from.crs)
  
  to.crs <- CRS(to.crs)
  changed <- as.data.frame(SpatialPoints(spTransform(from.coordinates, to.crs)))
  names(changed) <- c("long", "lat")
  
  return(changed)
}

테스트

coord <- data.frame(utmk.long=c(954677.6, 958869.4), utmk.lat=c(1951583, 1945669))
from.crs = "+proj=tmerc +lat_0=38 +lon_0=127.5 +k=0.9996 +x_0=1000000 +y_0=2000000 +ellps=GRS80 +units=m +no_defs"

to.crs = "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"
coord <- cbind(coord, convertCoordSystem(coord$utmk.long, coord$utmk.lat, from.crs, to.crs))

결과

coord
##   utmk.long utmk.lat     long      lat
## 1  954677.6  1951583 126.9868 37.56249
## 2  958869.4  1945669 127.0346 37.50938

질문과 문의

rgdal은 생각보다 간단한 패키지가 아닙니다. 따라하시는데 어려움이 있을수도 있고, 다른 환경에서는 다른 방법으로 설치 해야할 수도 있습니다. 한번씩 따라 하시거나 그런 기회가 있을때 궁금하거나 안되는 부분이 다음 페이스북 그룹에다가 질문 남겨 주세요. 저도 찾아가면서 공부 해보고 답변 드리도록 하겠습니다.

출처