데이터 분석가를 위한 손쉬운 지도 기능 활용: Python 패키지 CARTOframes

현대는 누구든 손쉽게 여러 정보를 얻을 수 있는 시대입니다.  위치 정보도 마찬가지입니다. 하지만 정보를 얻는다고 해도 그 정보를 원하는 대로 가공, 사용하지 못하면 무용지물입니다.

보통 데이터를 분석에는 Python을 많이 사용합니다. 하지만 위치정보를 사용할 경우 Python에서는 내가 원하는 지도를 만드는데 한계가 있습니다. 그렇다고 지도 출력만을 위해서 지금 사용하고 있는 Python 을 버릴 수는 없습니다. 그럴 때 사용하면 좋은 것이 바로 CARTOframes(카토프레임)입니다.

 

CARTOframes란?

CARTOframes란 지리정보를 분석하고 시각화하기 위한 Python 패키지입니다. 쿼리를 사용해서 데이터를 가공해 새로운 데이터를 만들 수도 있고, 지도를 내 마음대로  만들 수도 있습니다.

CARTOframes는 Python을 사용하는 어느 곳에서든 패키지 설치를 통해 간단하게 사용할 수 있지만 이 글에서는 Cartoframes를 Jupyter Notebook에서 사용해보겠습니다.Jupyter Notebook은 Cell 단위로 코드를 작성하고 Cell 단위로 실행 가능해서 바로 바로 실행 결과를 볼 수 있는 툴입니다.

 

Cell이란 Jupyter Notebook에서 저 칸 하나를 의미합니다. 실행은 Celll 단위로 순서 상관 없이 할 수 있습니다. 코드 작성 후 Ctrl+Enter 키를 누르거나 위 메뉴 중 Run메뉴를 클릭하면 하나의 cell이 실행됩니다.

데이터 분석을 할 때 분석 결과를 바로 보고 싶을 때 딱 적합한 입니다.

Jupyter Notebook을 설치해서 사용하는 방법에는 여러가지가 있습니다.  이 글에서는 따로 python을 설치하지 않아도 CARTOframes를 바로 사용할 수 있는 Anaconda의 Jupyter Notebook을 사용해보겠습니다. Anaconda란 데이터 분석을 위해 필요한 기본 오픈 소스들을 따로 찾을 필요 없이 한 곳에 모아놓은 개발 플랫폼입니다.

우선, Anaconda는 Anaconda 다운로드 사이트에 들어가서 손 쉽게 다운로드 받으 실 수 있습니다. Anaconda를 설치하신 후 윈도우 메뉴에서 Jupyter Notebook를 검색해서 Jupyter Notebook을 실행 할 수 있습니다. CARTOframes는 크롬에서 실행해야 지도가 제대로 출력되므로 미리 .html의 기본 실행 프로그램을 크롬으로 변경해줍니다.

 

Jupyter Notebook 홈 경로 설정하기

처음 Anaconda를 깔아서 Jupyter Notebook을 실행시키면 홈 경로가 ‘C:/Users/username’으로 설정되어 있습니다. 이 경로 내에서만 폴더 생성, 작업 공간 이동을 할 수 있습니다. 자신이 원하는 폴더를 홈경로로 설정하기 위해서는 사전 작업이 필요합니다.

 

윈도우 메뉴에서 Jupyter Notebook을 검색 한 후 해당 프로그램의 속성으로 들어갑니다.

 

속성 창에서 대상의 맨 끝에 적혀 있는 “%USERPROFILE%/” 부분을 깔끔하게 지워주고 적용 시켜줍니다.

그 후 윈도우 메뉴에서 Anaconda Prompt를 검색해서 실행시켜줍니다.

 

jupyter notebook –generate-config

 

위 명령어를 입력해 주피터 노트북 설정 파일을 만들어줍니다. 설정파일은 ‘C:/Users/username/.jupyter’에 만들어집니다. 해당 위치로 가서 코드 수정을 위해서 파일을 메모장이나 Visual Studio Code등으로 실행시킵니다.

 

해당 파일을 열어서 ‘c.NotebookApp.notebook_dir = ‘ 부분을 주석을 풀어 준 후 원하는 홈 경로를 입력한 후 저장합니다.

다시 주피터 노트북을 실행하면 설정한 홈 경로에서 실행됩니다.

 

Cartoframes 설치

다시 Anaconda Prompt를 실행시킵니다.

 

pip install cartoframes==0.10.0

 

위 명령어를 치고 실행시키면 CARTOframes가 설치됩니다. ‘0.10.0’자리에 원하는 CARTOframes 버전을 넣으면 원하시는 버전을 설치할 수 있습니다.

혹시 설치 중에 오류가 생기면 Anaconda에 shapely 설치가 제대로 안 된 것일 수도 있으니

 

conda install -c conda-forge shapely

 

위 명령어를 쳐서 shapely 설치를 한 후에 CARTOframes를 다시 설치하면 됩니다. 정상적으로 설치되었다면 CARTOframes를 사용할 준비 완료!!

 

간단한 맵 출력해보기

CARTOframes를 설치했다면 간단하게 자신이 가지고 있는 정보를 지도를 뿌려보겠습니다.

Jupyter Notebook을 실행시키고 Python3 파일을 하나 만들어줍니다. 

자신의 CARTO 계정에 있는 데이터를 이용하기 위해서는 Jupyter Notebook에서 CARTOframes를 이용해서 CARTO 계정과 연결하는 작업이 필요합니다.

 

from cartoframes import Credentials, CartoContext

 

cc = CartoContext(

base_url=’https://{Your username}.carto.com’,

api_key='{Your API Key}’)

 

위 명령어는 자신의 CARTO계정과 연결하는 작업입니다.

CARTO 계정은 CARTO 사이트에서 무료 계정을 만들 수 있습니다. 무료 계정의 경우는 14일동안 이용 가능합니다.

 

자신의 carto 계정과 연결을 했다면 이제 자신의 carto에 있는 데이터들을 이용할 수 있습니다.

 

from cartoframes import Layer

cc.map(layers=Layer(‘{DataSet name}’))

 

‘DataSet name 자리에 자신이 가지고 있는 데이터셋의 이름을 넣고 실행하면 바로 기본 베이스맵에 데이터가 가시화된 지도가 나옵니다.

 

아래는 서울 도서관 위치 정보를 CARTOframes로 가시화한 결과입니다.

 

쿼리로 지도 분석해서 표현

그냥 지도를 가시화하기만 해서는 CARTOframes가 Python의 기본 지도와 비교했을 때 뭐가 좋은 것인지 느껴지지 않을 것입니다.

 

그래서 이번에는 서울 지하철 역 데이터를 가져와서 반경 100m 버퍼를 만들어 가시화 해보도록 하겠습니다.

서울 지하철 역 데이터의 경우는 딱 지하철 역 중심의 포인트 데이터라서 지하철역이 어디까지 접근가능한지 딱 와닿지 않습니다. 이럴 때 지하철역의 반경 거리를 설정해서 버퍼로 만들 경우 지하철역이 어디까지인지 확 와닿습니다. 버퍼란 해당 위치 정보를 중심으로 설정된 반경 거리로 범위를 그리는 것을 말합니다.

df = cc.query(

”’

SELECT cartodb_id, t_name, line_num, ST_Buffer(the_geom::geography, 500, ‘quad_segs=8′)::geometry as the_geom

FROM seoul_subway_station

WHERE the_geom is not null

”’,

table_name = ‘seoul_subway_100m_test’

)

 

위 코드는 CARTOframes를 이용해서 ST_Buffer를 사용한 쿼리를 날려 새로 ‘seoul_subway_100m_test’ 데이터 셋을 만드는 코드입니다. ST_Buffer란 위치 정보를 넣어서 자신의 원하는 반경까지를 표시하는데 쓰는 함수입니다. CARTOframes에 쿼리 사용시  postgis 함수들을 사용할 수 있습니다.

 

cc.map(layers = [

Layer(‘seoul_subway_station’, color=’red’, size=5),

Layer(‘seoul_subway_100m_test’, color=’#aaa’)

])

 

쿼리를 사용해서 새로 만든 데이터셋을 기존에 있던 서울 지하철 데이터셋과 겹쳐서 출력했습니다.

 

CARTOframes는 이 밖에도 지도 스타일 변경, 쿼리 사용 등 기존 CARTO에서 사용할 수 있는 여러 가지를 제공합니다. 더 자세한 것을 알고 싶으시다면 CARTOframes 가이드 문서를 참고해보세요.

 

 

SPH는 CARTO, Google Maps, SuperMap 등 다양한 케이스에 적용될 수 있는 다채로운 제품군을 보유하고 있으며 고객의 사례에 꼭 맞는 무료 세미나 및 개별 컨설팅을 제공하고 있습니다. 각 케이스에 맞춰 더욱 자세한 이야기를 나누고 싶으시다면 여기에서 문의 주시길 바라며, SPH에서 발행하는 GIS/로케이션 인텔리전스 관련 최신 소식을 받아보고 싶으신 분들은 페이스북 페이지 또는 뉴스레터를 구독해 주시길 바랍니다. 감사합니다.