공간분석을 위해서는 데이터가 필요하다.
공간융합 빅데이터 플랫폼에 들어가면, 필요한 공간 데이터를 다운로드 받을 수 있다. (유료/무료)
'아파트단지 주변 사회통계 분석 정보'를 다운받았고,
이를 활용하여 생산 인구와 인구밀도 지표 분석을 해보겠다.
먼저, R Studio에서 필요한 라이브러리와 데이터(csv 파일)를 불러온다.
각 데이터별로 인코딩형식이 다른데, 잘 확인한 후 fileEncoding에 알맞게 설정해주어야 한다.
# 패키지 불러오기
library(ggplot2)
library(leaflet)
library(leaflet.extras)
# CSV 파일 불러오기
data <- read.csv("C:/폴더경로/파일명.csv", fileEncoding = "euc-kr")
생산인구와 인구밀도가 평균보다 높은 데이터만 분석해보겠다.
이를 위해서는 데이터 필터링과 데이터 전처리 과정이 필요하다.
평균 계산시, na.rm = TRUE로 지정해주어야, NA값을 갖는 데이터를 제외하여 평균이 NA가 나오지 않는다
(※ 생산인구 컬럼 : cross_smgu_prdctn_cnt, 인구밀도 컬럼 : ppltn_dens)
# 생산 인구 평균 계산 (NA 값 제외)
avg_production_population <- mean(data$cross_smgu_prdctn_cnt, na.rm = TRUE)
# 인구밀도 평균 계산
avg_population_density <- mean(data$ppltn_dens, na.rm = TRUE)
# 생산 인구와 인구밀도가 각각 평균 이상인 데이터 필터링
above_avg_data <- data[
data$cross_smgu_prdctn_cnt > avg_production_population &
data$ppltn_dens > avg_population_density,
]
이제, Leaflet 라이브러리를 활용하여 지도위에 시각화 해보겠다.
먼저, 생산인구와 인구밀도를 한번에 지도위에 나타내주겠다.
생산인구 / 인구밀도값을 팝업창에, 생산인구와 인구밀도 각각의 값을 라벨에 표현해주었다.
생산인구 / 인구밀도값을 이용해, 인구밀도에 비하여 생산인구가 부족한 지역을 확인해볼 수 있을 것 이다.
# Leaflet 맵 생성
map <- leaflet(above_avg_data) %>%
addTiles() %>% # 기본 배경 지도 타일 추가
# 생산 인구가 적고 인구밀도가 높은 지역 표시
addCircleMarkers(
lng = ~lo,
lat = ~la,
popup = ~paste("Production Population / Population Density:", cross_smgu_prdctn_cnt / ppltn_dens),
label = ~paste("Production Population:", cross_smgu_prdctn_cnt, "<br>",
"Population Density:", ppltn_dens),
color = "red", # 원의 색상 지정
radius = 5 # 원의 반지름 크기 조절
)
# 맵 출력
map

이번에는 히트맵으로 시각화하여 생산인구 / 인구밀도값, 즉 생산인구의 비율이 높은 지역을 확인해 볼 수 있다.
이때에도, 누락된 값이나 잘못된 값이 있는 행을 제거해주는 데이터 전처리 과정을 거친다.
그리고 히트맵의 intensity를 생산인구 / 인구밀도값으로 설정해준다.
# 누락된 값이나 잘못된 값이 있는 행 제거
> clean_data <- na.omit(above_avg_data)
# Leaflet 맵 생성
heatmap_map <- leaflet(clean_data) %>%
addTiles() %>% # 기본 배경 지도 타일 추가
# 히트맵 추가
addHeatmap(
data = clean_data,
lat = ~la,
lng = ~lo,
intensity = ~cross_smgu_prdctn_cnt/ppltn_dens,
blur = 20,
radius = 15
)
# 히트맵 출력
heatmap_map

서울이나 부산 등 주요도시에 평균보다 높은 인구(+생산인구)가 몰려있고, 인구밀도도 높지만 생산인구 역시 높음을 확인할 수 있다.
ggplot 라이브러리를 활용하여 그래프로도 시각화 해볼 수 있다.
# 생산 인구와 인구밀도 시각화
ggplot(data, aes(x = cross_smgu_prdctn_cnt, y = ppltn_dens)) +
geom_point() +
labs(x = "Production Population", y = "Population Density")

여기서 데이터 이상치를 확인해볼 수 있다.
예를들어, 인구밀도는 높지만 생산인구는 이상하리만큼 낮은 지역이 보이는데,
간단하게 생산인구순으로 정렬을 하여 확인해보겠다.

서울특별시 송파구 헬리오시티임이 확인되었다. 구체적인 분석이 더 필요하겠지만, 아무래도 1만세대 가까운 인구가 살고있는 아파트 단지이고, 임대료가 높은 상권과 학원가가 많다보니 '주거인구는 많지만 일하는 사람은 적다'라고 해석된다.
'GIS Data Analysis' 카테고리의 다른 글
| 데이터 소스 활용도 지수 조회 및 시각화 (0) | 2024.03.27 |
|---|---|
| ArcGIS(ArcMap)를 활용한 지오프로세싱(Geoprocessing) (0) | 2023.11.24 |
| 자주 사용하는 공간 쿼리 (0) | 2023.11.22 |
| GIS 기초 및 공간분석 용어 정리 (0) | 2023.01.31 |