🖥️ IT, 컴퓨터/📏 R

[R] 공간데이터 가공하기 (1) : 속성테이블 정제

김 홍시 2022. 8. 2.
반응형

오늘은 R을 활용하여 공간데이터를 가공해보았습니다.

 

문제상황

건물 데이터를 사용하려 하는데 너무 데이터가 무거웠어요. 그래서 열들을 좀 정리하고 싶었는데요, ArcMAP에서 열 하나하나를 지우면 시간이 너무 오래 걸릴 거 같았어요.

그래서 R에서 가공한 후 다시 ArcMAP으로 열어보았습니다.

 

해결방법

0. 전체 코드

#불러오기
library(sf)
setwd("C:\\Users\\user\\OneDrive - SNU\\바탕 화면\\폴더명")
building <- st_read("서울_건물_AL_11_D010_20220702\\건물연도.shp")

#가공
building<-subset(building, select = c(A1,A2,A3,A13))

#열 새롭게 만들기
library(dplyr)
building<-mutate(building, year=substr(building$A13, 1, 4))

#내보내기
st_write(building, "building.shp")

 

 

1. sf 패키지 이용하여 SHP 파일 불러오기

library(sf)
setwd("C:\\Users\\user\\OneDrive - SNU\\바탕 화면\\폴더명")
building <- st_read("서울_건물_AL_11_D010_20220702\\건물연도.shp")

먼저 공간 자료를 다룰 수 있는 sf 패키지를 불러옵니다.

working directory 설정도 해주었어요.

sf 패키지에서 shp 파일을 불러올 수 있는 st_read 함수를 사용해 building이라는 이름으로 shp를 불러와줍니다.

 

잘 불러와졌네요.

 

2. subset 함수 사용하여 특정 열만 남기기

building<-subset(building, select = c(A1,A2,A3,A13))

이 building은 열이 총 23개나 되는데요,

저는 A1, A2, A3, A13이라는  4개의 열만을 사용하고 싶어요.

subset이라는 기본함수를 사용하여 위와 같이 특정 열만 남겨주었습니다.

 

A1에서 A3까지는 연속되므로 A1:A3, A13으로 표현해도 같습니다.

 

원하는 열만 남았네요.

 

3. mutate 사용해 간단한 연산하여 열 새롭게 만들기, substr로 특정 문자 추출

library(dplyr)
building<-mutate(building, year=substr(building$A13, 1, 4))

추가로 A13에 있는 왼쪽 4자리만 추출하여 연도만 남긴 열을 새로 만들고 싶었어요.

그래서 mutate로 building 데이터에 year이라는 열을 새롭게 만들었고,

year이라는 열에는 building의 A13의 왼쪽 4자리만 추출하여 넣어주었어요.

이 때 추출은 substr 함수로 하였는데요, 코드의 1,4는  1번째자리부터 4번째자리를 추출한다는 뜻입니다.

 

4. 내보내기

st_write(building, "building.shp")

마지막으로 sf 패키지의 st_write 함수로 building이라는 데이터를 building.shp파일로 내보내기해 주었어요.

파일은 워킹 디렉토리에 저장이 됩니다.

 

 

 

문제 해결

이제 꼭 필요한 정보만 ArcMAP에서 사용할 수 있게 되었습니다.

 

 

 

 
반응형

댓글