Chapter 1 지리정보의 좌표계 변환

사용할 패키지 불러오기

library(ggmap)
## Loading required package: ggplot2
## Google's Terms of Service: https://cloud.google.com/maps-platform/terms/.
## Please cite ggmap if you use it! See citation("ggmap") for details.
library(ggplot2)
library(raster)
## Loading required package: sp
library(rgeos)
## rgeos version: 0.5-5, (SVN revision 640)
##  GEOS runtime version: 3.8.0-CAPI-1.13.1 
##  Linking to sp version: 1.4-4 
##  Polygon checking: TRUE
library(maptools)
## Checking rgeos availability: TRUE
library(rgdal)
## rgdal: version: 1.5-18, (SVN revision 1082)
## Geospatial Data Abstraction Library extensions to R successfully loaded
## Loaded GDAL runtime: GDAL 3.0.4, released 2020/01/28
## Path to GDAL shared files: C:/Program Files/R/R-4.0.3/library/rgdal/gdal
## GDAL binary built with GEOS: TRUE 
## Loaded PROJ runtime: Rel. 6.3.1, February 10th, 2020, [PJ_VERSION: 631]
## Path to PROJ shared files: C:/Program Files/R/R-4.0.3/library/rgdal/proj
## Linking to sp version:1.4-4
## To mute warnings of possible GDAL/OSR exportToProj4() degradation,
## use options("rgdal_show_exportToProj4_warnings"="none") before loading rgdal.
library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.0 --
## √ tibble  3.0.4     √ dplyr   1.0.2
## √ tidyr   1.1.2     √ stringr 1.4.0
## √ readr   1.4.0     √ forcats 0.5.0
## √ purrr   0.3.4
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x tidyr::extract() masks raster::extract()
## x dplyr::filter()  masks stats::filter()
## x dplyr::lag()     masks stats::lag()
## x dplyr::select()  masks raster::select()

1.1 시도별 지리정보 파일

1.1.1 시도 지리정보 파일 다운받기

행정구역 SHP 파일에서 시도(CTPRVN) / 시군구(SIG) / 읍명동(EMD) / 리 구분하여 최신의 파일을 다운받을 수 있다.

2017년 5월에 대선이 있었으므로, 2017년 3월의 업데이터 파일을 다운받는다.

1.1.2 시도 지리정보 파일 불러오기

rgdal 패키지의 readOGR() 함수를 이용하여, 시도 지리정보 파일인 “TL_SCCO_CTPRVN.shp”을 불러온다.

shp_CTPRVN_grs <- readOGR('shp/TL_SCCO_CTPRVN.shp')
## OGR data source with driver: ESRI Shapefile 
## Source: "C:\Users\김대호\OneDrive - 목원대학교\Kim_DaeHo(insoo_notebook)\Lectures\BigDataAnalysis\BDA-2020\강의용 PDF\Ch07\지역지도\19-President-Vote\시도-득표수분석(최종)\shp\TL_SCCO_CTPRVN.shp", layer: "TL_SCCO_CTPRVN"
## with 17 features
## It has 3 fields

1.1.3 지리정보 파일의 속성 확인

summary(shp_CTPRVN_grs)
## Object of class SpatialPolygonsDataFrame
## Coordinates:
##         min     max
## x  746110.3 1387950
## y 1458754.0 2066200
## Is projected: TRUE 
## proj4string :
## [+proj=tmerc +lat_0=38 +lon_0=127.5 +k=0.9996 +x_0=1000000 +y_0=2000000
## +ellps=GRS80 +units=m +no_defs]
## Data attributes:
##   CTPRVN_CD          CTP_ENG_NM         CTP_KOR_NM       
##  Length:17          Length:17          Length:17         
##  Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character

1.2 지리정보의 좌표계 변환

기본적으로 제공하는 (시도) 지리정보 파일은 GRS80 좌표계를 담고 있다.

이 좌표계를 WGS84 경도/위도 좌표계로 변환한다.

1.2.1 좌표계 변환 인자 설정

좌표계 변환을 위한 Proj4. 인자를 다음과 같이 설정한다.

from_crs <- CRS("+proj=tmerc +lat_0=38 +lon_0=127.5 +k=0.9996 +x_0=1000000 +y_0=2000000 +ellps=GRS80 +units=m")
to_crs <- CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")

1.2.2 좌표계 변환

sp 패키지의 spTransform( ) 함수를 이용하여 좌표계 변경 인자 to_crs를 활용하여 경도/위도 좌표계로 변환하고 shp_CTPRVN에 대입한다.

shp_CTPRVN <- spTransform(shp_CTPRVN_grs, to_crs)

1.2.3 좌표계의 요약정보 확인

shp_CTRPVNS4 Class 이며, Slot으로 구성된다.

summary() 함수를 이용하여 변수의 요약정보를 확인한다.

summary(shp_CTPRVN)
## Object of class SpatialPolygonsDataFrame
## Coordinates:
##         min       max
## x 124.60971 131.87278
## y  33.11371  38.59339
## Is projected: FALSE 
## proj4string : [+proj=longlat +datum=WGS84 +no_defs]
## Data attributes:
##   CTPRVN_CD          CTP_ENG_NM         CTP_KOR_NM       
##  Length:17          Length:17          Length:17         
##  Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character

1.2.4 변환된 좌표계의 슬롯 확인

이제 shp_CTPRVN의 슬롯을 확인한다.

slotNames(shp_CTPRVN)
## [1] "data"        "polygons"    "plotOrder"   "bbox"        "proj4string"

1.2.5 슬롯의 속성 확인

data 슬롯의 속성을 확인한다.

head(shp_CTPRVN@data)
##   CTPRVN_CD CTP_ENG_NM CTP_KOR_NM
## 0        11      Seoul 서울특별시
## 1        26      Busan 부산광역시
## 2        27      Daegu 대구광역시
## 3        28    Incheon 인천광역시
## 4        29    Gwangju 광주광역시
## 5        30    Daejeon 대전광역시
slotNames(shp_CTPRVN@data)
## [1] ".Data"     "names"     "row.names" ".S3Class"