대외활동/Brightics 서포터즈

[Brightics | 프로젝트] 서울시 지도 시각화하기 : 브라이틱스 Map vs 파이썬 Forlium 비교

케이와이엠 2021. 10. 5. 23:09

이번 시간은 지난 포스팅에서 예고한 대로

브라이틱스를 활용한 지도 시각화 방법을 공유해드릴까 합니다 !!

아무래도 도시 연구나 지역 간 비교를 할 때

직접 지도 위에서 수치를 나타내면 더 한 눈에 이해하기 쉽죠.

여러분들은 주로 어떤 방식으로 구현하고 계신가요 ??

아마 많은 분들께서 파이썬 내장 라이브러리인 Forlium을 사용하실 것 같아요 .

저도 마찬가지구요 !!

그래서 이번 시간엔 동일한 분석과정에 대해서

파이썬의 Forlium 기능브라이틱스의 Map 기능을 동시에 보여드릴테니

선택은 여러분의 몫입니다 ㅎㅎ ~!


파이썬 Forlium

 

[ 사용 데이터 ] : 먼저 저는 지난 시간에 완성한 건강고위험군 군집을 사용할 예정이에요.

건강 고위험군으로 군집화한 지역을 지도 상에 나타내보겠습니다.

★클러스터는 아래를 확인해주세요 ! ★

아 참고로,

이번 시간에는 위치를 마커로 점찍어보는 등 장소들의 분포를 알아본다기 보다

'공통 군집으로 묶인 지역들이 지도 위치상으로 근접해있는지를 알아보기 위함'임을

잠시 짚고 넘어갈게요 !!

#필요한 package import
import folium
import pandas as pd

먼저 필요한 package를 import해줍니다.

다른 작업은 제외하고 오직 시각화만을 위한 최소한의 패키지입니다.

raw_data = [
            ['강동구',4], ['송파구',1], ['강남구',1], ['서초구',1], ['관악구',4],
            ['동작구',4], ['영등포구',4], ['금천구',3], ['구로구',4], ['강서구',4],
            ['양천구',4], ['마포구',4], ['서대문구',2], ['은평구',4], ['노원구',2],
            ['도봉구',4], ['강북구',3], ['성북구',3], ['중랑구',3], ['동대문구',4],
            ['광진구',1], ['성동구',4], ['용산구',2], ['중구', 4], ['종로구',4]           
]
data = pd.DataFrame(raw_data, columns=['name', 'value'])
data

클러스터별로 나누어진 서울시 구를 직접 클러스터 번호에 맞춰 리스트를 만들어줍니다.

그리고 데이터프레임 형식으로 바꿔줍시다.

geo_json = 'https://raw.githubusercontent.com/southkorea/seoul-maps/master/kostat/2013/json/seoul_municipalities_geo_simple.json'


m = folium.Map(
    location = [37.566345, 126.977893], zoom_start = 10.5
)

folium.Choropleth(
    geo_data = geo_json,
    name = 'choropleth',
    data = data,
    columns = ['name','value'],
    key_on = 'feature.properties.name',
    fill_color = 'BuPu',
    fill_opacity=0.7,
    line_opacity = 0.2,
).add_to(m)

m

그 후 folium 패키지를 이용하여 Map을 생성합니다.

위치에는 서울 시청의 경도, 위도를 작성해주었어요

지도를 그리기 위해 사용할 json 파일을 불러옵니다.

저는 서울시 전체를 지도상에 표현할 것이기 때문에 서울을 나타내고 있는 json이 필요한데요,

위 json파일은 https://github.com/southkorea/southkorea-maps 이 곳 깃허브에 있는

https://raw.githubusercontent.com/southkorea/southkorea-maps/master/kostat/2013/json/skorea_submunicipalities_geo_simple.json 의 json파일을 사용하였습니다.

위의 json 파일은 서울 전국의 모든 구의 위치 정보를 담고 있어요.

featurecollection 안에서 feature별로 보면 properties안에 정보들이 들어있어요.

그래서 우리가 name, value로 정한 이름과 동일하면 된답니다.

최종적으로 지도 상에서 군집별로 색을 입힌 화면을 보실 수 있습니다 

 

브라이틱스 Maps

그렇다면 브라이틱스로 구현해보면 어떨까요 ?-?

 

지난 시간 브라이틱스의 <Hierarchical Clustering> 함수로 4개의 클러스터로 군집화해서 위의 결과가 나왔는데요,

그 다음, 구 별로 경도와 위도값 찾아줍니다 .

저는 단순히 좀 큼직한 단위여서 쉽게 일일이 넣어줄 수 있었네요 ㅎㅎㅎ

Join함수를 사용해 두 데이터셋을 동일한 index를 기준으로 합쳐주시면 됩니다.

경도와 위도값이 넣어진 데이터셋에서 chart 종류 중 map을 클릭해주세요

이때 map type을 서울 지도로 선택해주시면 되겠어요 !!!

지도 모습 ​

 

 

그치만 Brightics 상에서는 기본 값으로 world.json만 제공을 하고 있다는 사실 ... !!!

아래 튜토리얼 속에서 직접 224_seoul_municipalities_geo.json 을 다운받아주세요 ㅎㅎ

 

https://www.brightics.ai/kr/docs/ai/s1.0/tutorials/224_py_mean_shift?type=insight 

 

Brightics Studio

 

www.brightics.ai

 

서울 맵을 다운로드하여 <brightics studio 설치경로>\visual-analytics\lib\map 위치에 복사해 넣은 후

Brighitcs를 끄고 다시 가동시켜주면 안에 들어와있을 거에요 ~

이제 경도와 위도를 넣어주기만 하면

두둥 .. 바로 등장해버립니다 ^^

 

확실히 군집1 이 강남구쪽에 밀집되어 있고, 군집3은 강북외곽지역에 밀집되어 있네요 !


너무 간단하죠 ??!!

빨리 시각자료, 그래프를 보고 싶다는 생각이 든다면

바아로 그냥 Brightics 를 켜주시면 된답니다 ^^

물론 코딩으로 옵션들을 더 상세히 조정해가는 과정이

필요하긴 하겠지만요 ~ !


이렇게 파이썬 기능과 브라이틱스 내 기능도 간단히 비교해보았습니다.

다음 시간에는 본격적으로 이 Map으로 위치들을 나타내기 위한 작업을 가져와보겠습니다.

 


*해당 게시글은 Brightics 서포터즈 활동의 일환으로 작성된 포스팅 입니다.

게시글 관련 문의 및 소통을 원하신다면 아래 댓글로 남겨주세요

브라이틱스 사용 중 문의사항은

brightics@samsung.com으로 연락주세요 :)