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
”을 불러온다.
<- readOGR('shp/TL_SCCO_CTPRVN.shp') shp_CTPRVN_grs
## 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. 인자를 다음과 같이 설정한다.
<- CRS("+proj=tmerc +lat_0=38 +lon_0=127.5 +k=0.9996 +x_0=1000000 +y_0=2000000 +ellps=GRS80 +units=m")
from_crs <- CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs") to_crs
1.2.2 좌표계 변환
sp
패키지의 spTransform( )
함수를 이용하여 좌표계 변경 인자 to_crs
를 활용하여 경도/위도 좌표계로 변환하고 shp_CTPRVN에 대입한다.
<- spTransform(shp_CTPRVN_grs, to_crs) shp_CTPRVN
1.2.3 좌표계의 요약정보 확인
shp_CTRPVN
은 S4 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"