[ 대한민국 지도 그리기 🌏 ]
[ 글로벌 행정 지역 데이터베이스 GADM 활용]
getData를 실행하면 "곧 제거된다"고 경고 메세지를 보여줌
아래 사이트에 방문하여 SHP 파일 (Shapefile)을 다운로드 받을 수 있음
https://gadm.org/download_country.html
[ level = 1 : 시도]
korea_1 <- getData('GADM', country='kor', level=1)
Warning message:
In getData("GADM", country = "kor", level = 1) :
getData will be removed in a future version of raster
. Please use the geodata package instead
ggplot()+geom_polygon(data=korea_1,
aes(x=long, y=lat, group=group),
fill='white',
color='black') +
theme(panel.background = element_rect(fill = '#d8e4ec', colour = 'lightgray'))
[ level = 2 : 시군구 ]
korea_2 <- getData('GADM', country='kor', level=2)
> korea_2 <- getData('GADM', country='kor', level=2)
trying URL 'https://biogeo.ucdavis.edu/data/gadm3.6/Rsp/gadm36_KOR_2_sp.rds'
Content type 'text/html; charset=iso-8859-1' length 1103004 bytes (1.1 MB)
downloaded 1.1 MB
Warning message:
In getData("GADM", country = "kor", level = 2) :
getData will be removed in a future version of raster
. Please use the geodata package instead
summary(korea_2)
> summary(korea_2)
Object of class SpatialPolygonsDataFrame
Coordinates:
min max
x 125.08180 130.94041
y 33.11208 38.61215
Is projected: FALSE
proj4string : [+proj=longlat +datum=WGS84 +no_defs]
Data attributes:
GID_0 NAME_0 GID_1 NAME_1
Length:229 Length:229 Length:229 Length:229
Class :character Class :character Class :character Class :character
Mode :character Mode :character Mode :character Mode :character
NL_NAME_1 GID_2 NAME_2 VARNAME_2
Length:229 Length:229 Length:229 Length:229
Class :character Class :character Class :character Class :character
Mode :character Mode :character Mode :character Mode :character
NL_NAME_2 TYPE_2 ENGTYPE_2 CC_2
Length:229 Length:229 Length:229 Length:229
Class :character Class :character Class :character Class :character
Mode :character Mode :character Mode :character Mode :character
HASC_2
Length:229
Class :character
Mode :character
head(korea_2)
> head(korea_2)
GID_0 NAME_0 GID_1 NAME_1 NL_NAME_1 GID_2 NAME_2
184167 KOR South Korea KOR.1_1 Busan 부산광역시 | 釜山廣域市 KOR.1.1_1 Buk
184231 KOR South Korea KOR.1_1 Busan 부산광역시 | 釜山廣域市 KOR.1.2_1 Busanjin
184264 KOR South Korea KOR.1_1 Busan 부산광역시 | 釜山廣域市 KOR.1.3_1 Dong
184196 KOR South Korea KOR.1_1 Busan 부산광역시 | 釜山廣域市 KOR.1.4_1 Dongnae
184310 KOR South Korea KOR.1_1 Busan 부산광역시 | 釜山廣域市 KOR.1.5_1 Gangseo
184128 KOR South Korea KOR.1_1 Busan 부산광역시 | 釜山廣域市 KOR.1.6_1 Geumjeong
VARNAME_2 NL_NAME_2 TYPE_2 ENGTYPE_2 CC_2 HASC_2
184167 <NA> 북구| 北區 Gu District <NA> <NA>
184231 <NA> 부산진구| 釜山鎭區 Gu District <NA> <NA>
184264 <NA> 동구| 東區 Gu District <NA> <NA>
184196 <NA> 동래구| 東萊區 Gu District <NA> <NA>
184310 <NA> 강서구| 江西區 Gu District <NA> <NA>
184128 <NA> 금정구| 金井區 Gu District <NA> <NA>
#data frame 변환
korea_2_df <- fortify(korea_2)
korea_2_df |>
head (10)
> korea_2_df |>
+ head (10)
long lat order hole piece id group
1 128.9957 35.17683 1 FALSE 1 184168 184168.1
2 128.9983 35.19250 2 FALSE 1 184168 184168.1
3 129.0003 35.20673 3 FALSE 1 184168 184168.1
4 129.0055 35.21033 4 FALSE 1 184168 184168.1
5 129.0095 35.21527 5 FALSE 1 184168 184168.1
6 129.0125 35.22131 6 FALSE 1 184168 184168.1
7 129.0181 35.23129 7 FALSE 1 184168 184168.1
8 129.0229 35.24030 8 FALSE 1 184168 184168.1
9 129.0237 35.24908 9 FALSE 1 184168 184168.1
10 129.0297 35.25427 10 FALSE 1 184168 184168.1
ggplot()+geom_polygon(data=korea_2_df,
aes(x=long, y=lat, fill = id, group=group),
color='black', show.legend =FALSE) +
theme(panel.background = element_rect(fill = '#d8e4ec', colour = 'lightgray'))
[ 대한민국 지도 그리기 : SHP 파일 사용 🌏 ]
[ 대한민국 행정구역(SHP 파일) 다운로드 ]
다운로드 링크 주소 (2023년 7월 업데이트 종료)
지도 작성 수준 (시도, 시군구, 읍면동)에 따라, 해당 SHP 파일을 다운로드 받아서 사용
http://www.gisdeveloper.co.kr/?p=2332
2023년 12월 이후의 최신 행정구역(SHP) 데이터는 지오서비스웹(GEOSERVICE-WEB)의 아카이브를 통해서 다운로드 받을 수 있도록 변경
지오코인 무료 충전 정책이 변경 (2024년 4월 5일)
지오코인이 50,000개 미만일 때 매일 0시에 지오코인이 50,000개로 충전됩니다.
[ 대한민국 지도 그리기 /w SHP 파일 사용 ]
[ rgdal 패키지 설치]
'rgdal' 패키지는 CRAN 저장소에서 제거되어, 패키지의 업데이트 및 관리는 없다.
'rgdal' 패키지를 사용하기 위해서는install.packages('rgdal')이 아닌 아래와 같이 설치해야 한다. install.packages('rgdal', repos = "http://packagemanager.posit.co/cran/2023-10-13")
https://cran.r-project.org/web/packages/rgdal/index.html
Package ‘rgdal’ was removed from the CRAN repository.
Formerly available versions can be obtained from the archive.
Archived on 2023-10-16 at the request of the maintainer. Consider using 'sf' or 'terra' instead.
A summary of the most recent check results can be obtained from the check results archive.
Please use the canonical form https://CRAN.R-project.org/package=rgdal to link to this page.
install.packages('rgdal', repos = "http://packagemanager.posit.co/cran/2023-10-13")
library(rgdal)
> library(rgdal) Please note that rgdal will be retired during October 2023, plan transition to sf/stars/terra functions using GDAL and PROJ at your earliest convenience. See https://r-spatial.org/r/2023/05/15/evolution4.html and https://github.com/r-spatial/evolution rgdal: version: 1.6-7, (SVN revision 1203) Geospatial Data Abstraction Library extensions to R successfully loaded Loaded GDAL runtime: GDAL 3.6.2, released 2023/01/02 Path to GDAL shared files: C:/Rstudio/R-4.3.1/library/rgdal/gdal GDAL does not use iconv for recoding strings. GDAL binary built with GEOS: TRUE Loaded PROJ runtime: Rel. 9.2.0, March 1st, 2023, [PJ_VERSION: 920] Path to PROJ shared files: C:/Rstudio/R-4.3.1/library/rgdal/proj PROJ CDN enabled: FALSE Linking to sp version:2.1-0 To mute warnings of possible GDAL/OSR exportToProj4() degradation, use options("rgdal_show_exportToProj4_warnings"="none") before loading sp or rgdal. |
[ SHP 파일 불러오기 : readOGR ]
library(rgdal)
library(tidyverse)
#SHP 파일 불러오기
map_rgdal <- readOGR('sig.shp')
#지도 그리기
plot(map_rgdal, main = "Map_rgdal")
# 데이터프레임으로 변환
map_df <- fortify(map_rgdal)
#지도 그리기 ggplot + geom_polygon
map_df |>
ggplot()+geom_polygon(aes(x=long, y=lat, fill = id, group=group),
color='black', show.legend =FALSE) +
theme(panel.background = element_rect(fill = '#d8e4ec', colour = 'lightgray'))
[ 좌표 변환 : spTransform ]
GBS 좌표계를 익숙한 WBS 좌표계로 변환
- GBS (Geocentric Cartesian Coordinate System):
GBS는 지구를 중심으로 하는 직교 좌표계, 지구의 중심을 원점으로 하고, 지구의 세 축 (X, Y, Z)에 따라 좌표를 정의. GBS는 지구의 내부 구조를 연구하거나 위성 궤도 및 우주 정찰에 사용됩니다. - WGS (World Geodetic System):
WGS는 지구의 형태를 근사화하기 위한 좌표계, WGS는 GPS와 같은 글로벌 위치 결정 시스템에서 사용되며, 지구의 전역적인 위치를 정확하게 측정하기 위해 사용, WGS 좌표계는 다양한 버전이 있으며, 주로 WGS 84가 사용
#대한민국 최신 행정구역(SHP) 다운로드: 2021년 1월 29일 버전
map_rgdal2 <- readOGR('TL_SCCO_SIG.shp')
#현 좌표계 보기
map_rgdal2@polygons[[1]]@Polygons[[1]]@coords %>% head(n=10L)
> map_rgdal2@polygons[[1]]@Polygons[[1]]@coords %>% head(n=10L)
[,1] [,2]
[1,] 1007462 2008949
[2,] 1007512 2008902
[3,] 1007698 2008919
[4,] 1007797 2008978
[5,] 1007921 2008946
[6,] 1007947 2008939
[7,] 1008014 2008933
[8,] 1008200 2008915
[9,] 1008271 2008905
[10,] 1008358 2008893
SP 패키지 활용
library(sp)
#좌표계 변환
map_rgdal2_wbs <- spTransform(map_rgdal2, CRSobj = CRS ("+proj=longlat +ellps=WGS84 +no_defs"))
#변경된 좌표계 보기
map_rgdal2_wbs@polygons[[1]]@Polygons[[1]]@coords %>% head(n=10L)
> map_rgdal2_wbs@polygons[[1]]@Polygons[[1]]@coords %>% head(n=10L)
[,1] [,2]
[1,] 127.5851 38.08062
[2,] 127.5857 38.08020
[3,] 127.5878 38.08035
[4,] 127.5889 38.08088
[5,] 127.5903 38.08060
[6,] 127.5906 38.08053
[7,] 127.5914 38.08048
[8,] 127.5935 38.08032
[9,] 127.5943 38.08023
[10,] 127.5953 38.08011
익숙한 위경도 값을 볼 수 있다.
SHP 파일에 따라, 아래와 같은 에러가 발생할 수 있다.
> spTransform(map_rgdal, CRSobj = CRS ("+proj=longlat +ellps=WGS84 +no_defs"))
Error in if (is.projected(obj)) { : missing value where TRUE/FALSE needed
In addition: Warning message:
In spTransform(xSP, CRSobj, ...) :
NULL source CRS comment, falling back to PROJ string
# 데이터프레임으로 변환
map_df2 <- fortify(map_rgdal2_wbs)
#지도 그리기
ggplot() +
geom_polygon(data = map_df2, aes(x = long, y = lat, fill=id, group = group), color='white', show.legend=FALSE) +
ggtitle("Map_rgdal_2")
rgdal 패키지가 더 이상 업데이트가 되지도 않음에 따라, 최근에는 sf 패키지를 더 많이 사용하며, Simple Features를 사용하여 공간 데이터를 다룬다.
sf 패키지는 데이터 처리와 시각화를 더 간단하고 효율적으로 할 수 있다.
sf패키지 사용 방법은 다음 글에...
'데이터 분석 (with Rstudio)' 카테고리의 다른 글
[데이터분석 관련 책] 데이터 과학자의 가설 사고 (0) | 2024.05.09 |
---|---|
[Rstudio] 대한민국 지도 그리기 (전국 지도, 지역별 지도) (0) | 2024.04.18 |
[Rstudio] 세계지도 그리기와 색칠하기 (전체, 국가별 지도) (0) | 2024.04.15 |
[Rstudio] 의회 다이어그램 with 국회의원 선거 의석 수 결과 (0) | 2024.04.12 |
[Rstudio] 루프(Loop) 반복문 - for 루프 문과 while 루프 문 (1) | 2024.03.26 |