본문 바로가기

데이터와 함께 탱고를/데이터 시각화

[지도 데이터 시각화] Part 3. Mapbox로 지도 데이터 시각화하기

사실, 파이썬으로 지도 데이터를 시각화하는 여러 방법에 대해서 소개하고자, 이 시리즈를 쓰게 되었지만 그 전에 앞서, 굳이 꼭 파이썬을 써야할까라는 생각이 들 수 있습니다. 파이썬 아니여도 시각화할 방법은 많으니까요. 특히 코드에 익숙치 않고, 보다 직관적인 UI 를 원하시는 분들을 위해 파이썬에 앞서 이 포스팅을 먼저 남깁니다.

이미 Mapbox Studio 와 Carto 라는 훌륭한 웹 기반 플랫폼이 있습니다.
여기서는 Mapbox Studio 에 대해서 잠깐 소개하겠습니다.

지도 데이터 시각화를 하다보면, Mapbox 라는 이름 참 많이 봅니다.
그만큼 강력하고 훌륭한 소프트웨어를 잘 만들어놓은 회사입니다. 최근 엄청난 상승세이기도 합니다.

각설하고, Mapbox 에서 Mapbox Studio 를 통해 어떻게 지도 데이터를 시각화 할 수 있는지 살펴보겠습니다.

먼저, 아래 링크에 접속해서 계정을 만들고 Sign in 합니다.

 

Mapbox

An open source mapping platform for custom designed maps. Our APIs and SDKs are the building blocks to integrate location into any mobile or web app.

www.mapbox.com

그러면 다음과 같은 페이지가 뜹니다.

오른쪽에, Free 로 사용할 수 있는 뷰 수와 데이터 용량이 나타나고, 아래에는 API key 가 보입니다. (위 사진에서 API key 는 표시하지않았습니다.)
50000번의 뷰, 50GB 의 용량을 한 무료로 제공해줍니다. 이 정도면 왠만한 데이터는 커버가능한 매우 괜찮은 여건입니다.

이제 우측 상단에 '계정' 아이콘을 클릭해, Studio 로 들어갑니다.

상단 메뉴로 Styles, Tilesets, Datasets 가 있고, 현재 Styles 페이지가 먼저 보여집니다.
Style 이란, 데이터가 렌더링되는 디자인을 말합니다.
예를 들어, 베이스맵에서 땅이나 강의 색상은 어떻게 할지 정하는 겁니다.
이후 구체적으로 살펴보면 느낌이 오실겁니다.

아래를 보면, 이미 정의된 몇 가지 스타일이 있습니다. New styles 버튼을 누르면, 새롭게 스타일을 정의할 수도 있습니다.
저는 기존에 정의된 걸 사용해보겠습니다. Light Style 을 클릭합니다.

위와 같은 페이지가 뜹니다.

먼저 기본적으로 basemap 이 깔립니다. 현실세계를 데이터화해서 만들어놓은, 우리가 시각화할 데이터의 기반이 되는 맵입니다.
이 지도는 Open street map 이라는 오픈된 데이터를 기반으로 만들어집니다.
그리고 오른쪽에 보면, 이 basemap 을 이루고 있는 데이터들이 각 레이어 단위로 있는 것을 확인할 수 있습니다.
해당 레이어를 클릭하면 색상이나 투명도, 레이아웃 형태 등 커스터마이징하여 스타일링 할 수 있습니다.

저는 일단 서울시 Polyogon 데이터를 추가해보겠습니다. 위에서 + 버튼을 누르면 레이어를 추가할 수 있습니다.

파일은 geojson, csv 등이 지원됩니다. 아쉽게도 .shp 파일은 지원해주지 않습니다.

한편, 이렇게 올리게 되면 이를 tileset 으로 변환시킵니다.
이전에 지도 데이터 포맷 종류에 Shape file 과 geojson 이 있다고 설명드렸는데, 사실 tile 포맷이라는 것도 존재합니다.
아래 박스에 tile 을 간략히 설명해보겠습니다. 더 알고싶으신 분은 보시면 좋습니다.

Tile 포맷이란?

Shapefile 과 geojson 을 시각화할 때의 일반적으로 모든 데이터를 지도 상에다가 그려냅니다.
만약 이 데이터가 매우 클 경우, 메모리를 엄청나게 잡아먹습니다.
(실제로 브라우저가 터져서 강제 종료되곤 합니다. 생각보다 흔한 일입니다.)

따라서, 렌더링할 데이터를 좀 추려야 하는데, 생각해보면 우리는 모든 데이터를 한 번에 렌더링할게 아니라, 지금 보고있는 부분만 렌더링하면 됩니다. 이러한 아이디어로 나온게 tile 포맷입니다. 즉 데이터를 미리 tile 단위로 쪼갠 뒤, 지금 보고있는 지도 데이터의 tile 만 불러오는 것이죠. 그래서 보통 대용량 지도 데이터를 렌더링할 때는 반드시 tile 화 작업을 거칩니다. (안 그러면 메모리가 터지거나, 매우 느려지니까요.)

여하튼 이렇게 데이터를 올리게되면 다음과 같이 basemap 위로 데이터 레이어가 생기고, 렌더링 됩니다.

저는 렌더링 된 후, 데이터 폴리곤들의 색상과 투명도를 조금 바꿔보았습니다.

다음과 같이 조건을 주어 특정 데이터만 다르게 스타일링 할 수도 있습니다.

양천구에 해당하는 데이터만 파란색으로 스타일링 했습니다.

어떤걸 스타일링 할 수 있는지는, 옆에 메뉴를 보시면 됩니다.
색상, 경계선, 투명도 등이 있네요. 물론 이건 Polygon 데이터이기 때문에 이렇게 나오는 것이고,
Point 나, Line 데이터면 또 다른 스타일링 메뉴가 등장합니다.

또한 Mapbox 의 강력한 기능 중 하나는 3D 로 볼 수 있다는 것입니다.
데이터 필드(속성) 에 수로 된 값이 있으면, 해당 Polygon 에 높이를 주어서 3D 로 렌더링할 수 있습니다.
이 데이터에는 수치로 된 속성이 없어서, 다른 사진으로 대체해서 올려놓겠습니다.

이렇게 3D 로 렌더링이 가능합니다.

지도 시각화 작업이 완료되면 위에 Publish 버튼을 통해 이 지도를 저장할 수 있습니다.

이후 아래와 같이 Public 으로 만들어 다른사람과 이 지도를 공유할 수 있습니다. (편집은 안되고 읽기만 가능합니다.)

 

지금까지 Mapbox studio 를 통해, 지도 데이터를 시각화하는 법을 배웠습니다.
생각보다 매우 간단하고 강력합니다.
다만, 용량 제한이 있다는 점과, Mapbox 서버를 거쳐야 한다는 점, 그리고 공간연산 작업이 없고, 그냥 '시각화' 에만 머무른 다는 단점이 있습니다.
그럼에도 불구하고, 지금 가지고 있는 데이터를 이쁘게 시각화 하는 것에 관심있으신 분이라면, 파이썬을 볼 필요도 없이 Mapbox studio 로 작업하시길 추천드립니다. 

Carto 에도 이와 비슷한 서비스가 있을 뿐만 아니라, 공간연산도 제공합니다. 
전반적으로 Mapbox 와 비슷하지만, 보다 분석에 더 전문적인 느낌이 강합니다.
다만 여기서는 다루지 않겠습니다.

다음 포스팅부터는 진짜로 파이썬의 각종 지도 데이터 시각화 라이브러리를 활용하여 시각화 하는 법을 살펴보겠습니다.

반응형
  • 익명2 2021.01.29 17:09

    위 지도처럼 서울시만 색칠 하고 싶은데 administrative boundaries 밖에 변경을 못 하네요... 서울시 색칠 방법이 궁금합니다.
    tiling? 이게 꼭 필요한건가요 필요하다면 구할 수 있는 위치나 경로 정보좀 알 수 있을까요 ?