안녕하세요. 오늘은 행정동 지리정보를 불러와서 시각화하는 방법에 소개하려 합니다.
행정동은 한 지역의 행정 구획을 의미하며, 이를 시각화하여 지리적 특성을 파악하거나 데이터 분석에 활용할 수 있습니다.
다음과 같은 순서로 소개합니다.
- 지리정보 가져오기
- 정보를 읽고 시각화하기
1. 지리정보 가져오기
기본적으로 지리정보는 매년 행정안정부로부터 공개됩니다. 일반적으로 shapefile 형태로 공개됩니다. (shapefile 파일 형식은 지리 정보 시스템(GIS) 소프트웨어를 위한 지리 공간 벡터 데이터 형식)
저는 포스팅에서 2024.02.13에 발표된 시군구 구역도를 받았습니다. 감사합니다. :)
다운로드하여서 파일을 열어보면 아래와 같은 파일 구조를 갖습니다.
시군구
├── sig.dbf
├── sig.prj
├── sig.shp
└── sig.shx
여기서 핵심은 .shp 파일이고 앞서 이야기한 shapefile인데 여기에 실제 지리 정보를 담고 있습니다. 이외의 파일들도 shapefile을 제대로 이해하기 위한 좌표정보, 속성정보 등을 담고 있습니다.
2. 지리정보를 읽고 시각화하기
파이썬 패키지인 geopandas를 이용해서 shapefile을 읽고 keplergl을 사용해서 시각화를 해보겠습니다.
설치하기 (파이썬 3.11 기준으로 환경구성해서 설치했습니다)
pip install geopandas keplergl pyogrio
읽기
import geopandas as gpd
gdf = gpd.read_file("시군구/sig.shp", encoding="cp949")
gdf.head()
shapefile을 read_file 메소드를 통해 읽습니다. 이때 앞선 .dbf, .prj, .shx 파일이 하나라도 같은 폴더에 없다면 제대로 파일을 읽을 수 없음에 주의해야 합니다.
좌표계 변환
gdf = gdf.to_crs(epsg=4326)
gdf.head()
읽은 뒤 비교적 쉽게 이해할 수 있는 위경도 기반의 좌표계인 WGS84로 변환했습니다.
시각화
kepler.gl 우버에서 개발한 지리정보 시각화를 위한 툴입니다.
저는 JupyterLab 내에서 시각화를 하기 위해 jupyerlab과 필요한 extension을 설치했습니다.
pip install jupyterlab
jupyter labextension install @jupyter-widgets/jupyterlab-manager keplergl-jupyter
from keplergl import KeplerGl
map_1 = KeplerGl()
map_1.add_data(data=gdf, name="행정안전부 시군구")
map_1