Shp 파일을 불러와 시각화하자.

아래의 자료는 2010년 행정구역 인구자료이다.

census <- read.csv("F:/work/2019/발표/vis-master/day3/101_DT_1IN1002_F_2010.csv", skip=2)
head(census)
##   C행정구역별.읍면동. 행정구역별.읍면동. 시점 총인구..명. 남자..명.
## 1                 '00               전국 2010    48580293  24167098
## 2                 '03               동부 2010    39822647  19798739
## 3                 '04               읍부 2010     4200082   2117515
## 4                 '05               면부 2010     4557564   2250844
## 5                 '11         서울특별시 2010     9794304   4803373
## 6              '11010             종로구 2010      155575     76408
##   여자..명. 내국인.계..명. 내국인.남자..명. 내국인.여자..명.
## 1  24413195       47990761         23840896         24149865
## 2  20023908       39363373         19558869         19804504
## 3   2082567        4149215          2086063          2063152
## 4   2306720        4478173          2195964          2282209
## 5   4990931        9631482          4726028          4905454
## 6     79167         151069            74331            76738
##   외국인.계..명. 외국인.남자..명. 외국인.여자..명. 가구.계..가구.
## 1         589532           326202           263330       17574067
## 2         459274           239870           219404       14224508
## 3          50867            31452            19415        1504690
## 4          79391            54880            24511        1844869
## 5         162822            77345            85477        3577497
## 6           4506             2077             2429          60008
##   일반가구..가구. 집단가구..가구. 외국인가구..가구. 주택.계..호.
## 1        17339422           20727            213918     14677419
## 2        14031069           12420            181019     11262799
## 3         1487490            2631             14569      1460243
## 4         1820863            5676             18330      1954377
## 5         3504297            2836             70364      2525210
## 6           57807             152              2049        41350
##   단독주택..호. 아파트..호. 연립주택..호. 다세대주택..호.
## 1       4089491     8576013        536070         1314452
## 2       2006683     7487900        425615         1226377
## 3        544997      765456         73145           57696
## 4       1537811      322657         37310           30379
## 5        405575     1485869        145914          463417
## 6         14429       11067          5504            9621
##   비거주용.건물내.주택..호. 주택이외의.거처..호.
## 1                    161393               303097
## 2                    116224               270518
## 3                     18949                 9816
## 4                     26220                22763
## 5                     24435                97389
## 6                       729                 2998

제일 앞의 행정구역별(읍면동)은 숫자코드로 구성되어 있고 이 코드는 shp의 코드와 같다.

따라서 merge를 통해 인구자료와 지도파일을 결합할 수 있고, 이를 시각화 할 수 있다.

kosis.kr에서 확인가능한 시도/시군구/읍면동 자료는 모두 시각화가 가능하다.

library(rgdal)
## Loading required package: sp
## rgdal: version: 1.4-6, (SVN revision 841)
##  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: C:/Users/SANGHOOJEFFREY/Documents/R/win-library/3.6/rgdal/gdal
##  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: C:/Users/SANGHOOJEFFREY/Documents/R/win-library/3.6/rgdal/proj
##  Linking to sp version: 1.3-1
# 1. 시도단위
hrr.shp<-readOGR("F:/work/2019/발표/vis-master/day3/CTPRVN_201703/TL_SCCO_CTPRVN.shp", verbose=TRUE)
## OGR data source with driver: ESRI Shapefile 
## Source: "F:\work\2019\발표\vis-master\day3\CTPRVN_201703\TL_SCCO_CTPRVN.shp", layer: "TL_SCCO_CTPRVN"
## with 17 features
## It has 3 fields
plot(hrr.shp) # plot shape file in R  

hrr.shp@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     대전광역시
## 6         31             Ulsan     울산광역시
## 7         36         Sejong-si 세종특별자치시
## 8         41       Gyeonggi-do         경기도
## 9         42        Gangwon-do         강원도
## 10        43 Chungcheongbuk-do       충청북도
## 11        44 Chungcheongnam-do       충청남도
## 12        45      Jeollabuk-do       전라북도
## 13        46       Jellanam-do       전라남도
## 14        47  Gyeongsangbuk-do       경상북도
## 15        48  Gyeongsangnam-do       경상남도
## 16        50           Jeju-do 제주특별자치도
head(census)
##   C행정구역별.읍면동. 행정구역별.읍면동. 시점 총인구..명. 남자..명.
## 1                 '00               전국 2010    48580293  24167098
## 2                 '03               동부 2010    39822647  19798739
## 3                 '04               읍부 2010     4200082   2117515
## 4                 '05               면부 2010     4557564   2250844
## 5                 '11         서울특별시 2010     9794304   4803373
## 6              '11010             종로구 2010      155575     76408
##   여자..명. 내국인.계..명. 내국인.남자..명. 내국인.여자..명.
## 1  24413195       47990761         23840896         24149865
## 2  20023908       39363373         19558869         19804504
## 3   2082567        4149215          2086063          2063152
## 4   2306720        4478173          2195964          2282209
## 5   4990931        9631482          4726028          4905454
## 6     79167         151069            74331            76738
##   외국인.계..명. 외국인.남자..명. 외국인.여자..명. 가구.계..가구.
## 1         589532           326202           263330       17574067
## 2         459274           239870           219404       14224508
## 3          50867            31452            19415        1504690
## 4          79391            54880            24511        1844869
## 5         162822            77345            85477        3577497
## 6           4506             2077             2429          60008
##   일반가구..가구. 집단가구..가구. 외국인가구..가구. 주택.계..호.
## 1        17339422           20727            213918     14677419
## 2        14031069           12420            181019     11262799
## 3         1487490            2631             14569      1460243
## 4         1820863            5676             18330      1954377
## 5         3504297            2836             70364      2525210
## 6           57807             152              2049        41350
##   단독주택..호. 아파트..호. 연립주택..호. 다세대주택..호.
## 1       4089491     8576013        536070         1314452
## 2       2006683     7487900        425615         1226377
## 3        544997      765456         73145           57696
## 4       1537811      322657         37310           30379
## 5        405575     1485869        145914          463417
## 6         14429       11067          5504            9621
##   비거주용.건물내.주택..호. 주택이외의.거처..호.
## 1                    161393               303097
## 2                    116224               270518
## 3                     18949                 9816
## 4                     26220                22763
## 5                     24435                97389
## 6                       729                 2998
census$C행정구역별.읍면동. <- sub("^\\'", "", census$C행정구역별.읍면동.)
head(census)
##   C행정구역별.읍면동. 행정구역별.읍면동. 시점 총인구..명. 남자..명.
## 1                  00               전국 2010    48580293  24167098
## 2                  03               동부 2010    39822647  19798739
## 3                  04               읍부 2010     4200082   2117515
## 4                  05               면부 2010     4557564   2250844
## 5                  11         서울특별시 2010     9794304   4803373
## 6               11010             종로구 2010      155575     76408
##   여자..명. 내국인.계..명. 내국인.남자..명. 내국인.여자..명.
## 1  24413195       47990761         23840896         24149865
## 2  20023908       39363373         19558869         19804504
## 3   2082567        4149215          2086063          2063152
## 4   2306720        4478173          2195964          2282209
## 5   4990931        9631482          4726028          4905454
## 6     79167         151069            74331            76738
##   외국인.계..명. 외국인.남자..명. 외국인.여자..명. 가구.계..가구.
## 1         589532           326202           263330       17574067
## 2         459274           239870           219404       14224508
## 3          50867            31452            19415        1504690
## 4          79391            54880            24511        1844869
## 5         162822            77345            85477        3577497
## 6           4506             2077             2429          60008
##   일반가구..가구. 집단가구..가구. 외국인가구..가구. 주택.계..호.
## 1        17339422           20727            213918     14677419
## 2        14031069           12420            181019     11262799
## 3         1487490            2631             14569      1460243
## 4         1820863            5676             18330      1954377
## 5         3504297            2836             70364      2525210
## 6           57807             152              2049        41350
##   단독주택..호. 아파트..호. 연립주택..호. 다세대주택..호.
## 1       4089491     8576013        536070         1314452
## 2       2006683     7487900        425615         1226377
## 3        544997      765456         73145           57696
## 4       1537811      322657         37310           30379
## 5        405575     1485869        145914          463417
## 6         14429       11067          5504            9621
##   비거주용.건물내.주택..호. 주택이외의.거처..호.
## 1                    161393               303097
## 2                    116224               270518
## 3                     18949                 9816
## 4                     26220                22763
## 5                     24435                97389
## 6                       729                 2998

년도별 행정구역의 파일을 다르다.

따라서 그리고자 하는 연도에 해당하는 지도 파일을 다운 받아야 한다.

http://www.gisdeveloper.co.kr/?p=2332

위의 자료에서 파일을 다운 받을 수 있다.

만약 내가 그리고자 하는 지역이 대구, 경상북도와 같은 특정한 지역이라면…

subset이나 []를 이용하여 원하는 지역의 지도만 추출할 수 있다.

setwd("F:/work/2018/7. 발표/R_vis-master/day3")

# 1. 시도단위
hrr.shp<-readOGR("CTPRVN_201703/TL_SCCO_CTPRVN.shp", verbose=TRUE)
## OGR data source with driver: ESRI Shapefile 
## Source: "F:\work\2018\7. 발표\R_vis-master\day3\CTPRVN_201703\TL_SCCO_CTPRVN.shp", layer: "TL_SCCO_CTPRVN"
## with 17 features
## It has 3 fields
plot(hrr.shp) # plot shape file in R

hrr.shp@data  # Check the 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     대전광역시
## 6         31             Ulsan     울산광역시
## 7         36         Sejong-si 세종특별자치시
## 8         41       Gyeonggi-do         경기도
## 9         42        Gangwon-do         강원도
## 10        43 Chungcheongbuk-do       충청북도
## 11        44 Chungcheongnam-do       충청남도
## 12        45      Jeollabuk-do       전라북도
## 13        46       Jellanam-do       전라남도
## 14        47  Gyeongsangbuk-do       경상북도
## 15        48  Gyeongsangnam-do       경상남도
## 16        50           Jeju-do 제주특별자치도
# hrr.shp@data를 보면 hrr.shp@data$CTPRVN_CD 가 50인 경우 제주도입니다.
hrr.shp@data[hrr.shp@data$CTPRVN_CD==50,]
##    CTPRVN_CD CTP_ENG_NM     CTP_KOR_NM
## 16        50    Jeju-do 제주특별자치도
# 제주도에 해당하는 부분만 선택
jeju1.shp <- subset(hrr.shp, hrr.shp@data$CTPRVN_CD==50) 
plot(jeju1.shp)

writeOGR(jeju1.shp, "F:/", layer="jeju1.shp",driver="ESRI Shapefile")

# 2. 시군구단위
sig.shp<-readOGR("SIG_201703/TL_SCCO_SIG.shp", verbose=TRUE)
## OGR data source with driver: ESRI Shapefile 
## Source: "F:\work\2018\7. 발표\R_vis-master\day3\SIG_201703\TL_SCCO_SIG.shp", layer: "TL_SCCO_SIG"
## with 250 features
## It has 3 fields
plot(sig.shp)

tail(sig.shp@data,10)
##     SIG_CD      SIG_ENG_NM SIG_KOR_NM
## 240  48740 Changnyeong-gun     창녕군
## 241  48820     Goseong-gun     고성군
## 242  48840      Namhae-gun     남해군
## 243  48850      Hadong-gun     하동군
## 244  48860   Sancheong-gun     산청군
## 245  48870     Hamyang-gun     함양군
## 246  48880    Geochang-gun     거창군
## 247  48890    Hapcheon-gun     합천군
## 248  50110         Jeju-si     제주시
## 249  50130     Seogwipo-si   서귀포시
# sig.shp@data를 보면 50110과 50130이 제주도에 해당합니다.
# 해당지역을 선택하는 코드를 아래와 같이 짤 수 있습니다.

jeju2.shp <- subset(sig.shp, sig.shp@data$SIG_CD %in% c(50110,50130))
plot(jeju2.shp)

writeOGR(jeju2.shp, "F:/", layer="jeju2.shp",driver="ESRI Shapefile")

# # 3. 읍면동단위
# eup.shp<-readOGR("EMD_201703/TL_SCCO_EMD.shp", verbose=TRUE)
# plot(eup.shp)
# 
# head(eup.shp@data)
# tail(eup.shp@data,100)
# # 제주도에 해당하는 읍면동을 확인하면 제주시는 5011로 시작하고 서귀포시는 5013으로 시작합니다.
# # 이 숫잔느 위의 시군구단위와 동일합니다.
# # substr 함수는 원하는 위치의 값만 출력할 수 있습니다.
# substr(eup.shp@data$EMD_CD,1,4)
# 
# # eup.shp@data$EMC_CD가 5011 또는 5013으로 시작하는 자료만 선택하여 저장합니다.
# jeju3.shp <- subset(eup.shp, substr(eup.shp@data$EMD_CD,1,4) %in% c("5011","5013"))
# plot(jeju3.shp, axes=T, cex.axis=0.9, bg="#3366CC", col="white", border="#666666")
# 
# writeORG(jeju3.shp, "jeju3.shp")
# 
# rm(list=ls())  #모든 저장된 자료 제거

# 저장한 자료 가져오기
jeju1<- readOGR("jeju1.shp", verbose= TRUE)
## OGR data source with driver: ESRI Shapefile 
## Source: "F:\work\2018\7. 발표\R_vis-master\day3\jeju1.shp", layer: "jeju1"
## with 1 features
## It has 4 fields
jeju2<- readOGR("jeju2.shp", verbose= TRUE)
## OGR data source with driver: ESRI Shapefile 
## Source: "F:\work\2018\7. 발표\R_vis-master\day3\jeju2.shp", layer: "jeju2"
## with 2 features
## It has 4 fields
jeju3<- readOGR("jeju3.shp", verbose= TRUE)
## OGR data source with driver: ESRI Shapefile 
## Source: "F:\work\2018\7. 발표\R_vis-master\day3\jeju3.shp", layer: "jeju3"
## with 74 features
## It has 4 fields
# 불러온 자료 그리
plot(jeju1, axes=T, cex.axis=0.9, bg="#3366CC", col="white", border="#666666")

plot(jeju2, axes=T, cex.axis=0.9, bg="#3366CC", col="white", border="#666666")

plot(jeju3, axes=T, cex.axis=0.9, bg="#3366CC", col="white", border="#666666")