본문 바로가기
Python

파이썬 -folium 지도시각화

by 앵남(Andy) 2021. 9. 29.

글 개요 

파이썬으로 지도를 시각화 할 때 사용하는 라이브러리인 folium인 기초적인 문법을 활용하는 방법을 포스팅 해보겠습니다.

 

글 본문

일단, folium을 설치해봅시다. 아나콘다 가상환경이면, 터미널에서 아래 코드를 입력해주셔도 되고, 주피터 노트북에서도셀 실행시켜도 괜찮습니다.

!pip install folium

 

지도를 주피터 노트북에 실행시켜보겠습니다.

 

import folium 


m = folium.Map(
	location = [37.544129, 127.054357],
    zoom_start = 11
)
m
# tlies = OpenStreetMap 디폴트값 
m = folium.Map(
    location =[37.544129, 127.054357],
    zoom_start = 14,
    tiles = 'Stamen Terrain') 
m

결과

location 옵션에는 튜플 형식이나 리스트 형식으로 위도와 경도를 넣어주시면 됩니다. zoom_start 옵션은 확대를 얼마만큼 할것인지를 결정하는 옵션입니다 보통 최대 18 이후는 확대정도가 18이랑 비슷합니다. 

 

tiles 옵션

tiles 옵션은 지도의 모양을 설정하는 방법입니다. 예를들어 아래코드를 보시면 더욱 이해가 빨리 될거같습니다.

import folium

# tlies = OpenStreetMap 디폴트값 
m = folium.Map(
    location =[37.544129, 127.054357],
    zoom_start = 14,
    tiles = 'Stamen Terrain') # 0 ~ 18 허용되는 범위 조금씩 확대됨 
m

결과 1 

이렇게 지도 모양을 바꿀 수 있습니다. 지도를 더욱 다양하게 바꿀 수 있으니, 구글에서 옵션을 찾아서 원하는 지도로 바꿔보세요. 

 

 

folium Marker 지도에 마커 표시하기

이제 지도 시각화를 했으니 원하는 곳에 마커를 표시하고 싶을 때가 있습니다. folium은 그 기능을 Marker라는 함수를 통해 제공합니다. 

import folium 


# 기본지도
m = folium.Map(
	location = [37.544129, 127.054357],
    zoom_start = 14
)

원하는 장소의 위도 경도를 가져와 기본지도에 마커 표시하기
folium.Marker(
	location = [37.544129, 127.054357]
).add_to(m)

결과 2

이렇게 원하는 장소의 위도와 경도를 location 욥션에 리스트형태로 데이터를 넣러주면 지도에 마커로 표시됩니다. 그렇다면 이제 해당 마커가 어떤 마커인지 알 필요가 있지 않을까요? 그럴때 사용하는 옵션이 두개 정도 있있습니다. 

1. popup 

2. tooltip

두 개 옵션을 사용하면, 해당 마커를 어떤 마커인지 설명할 수 있습니다. 

eimport folium 


m = folium.Map(
    location =[37.544129, 127.054357],
    zoom_start = 14,
    tiles = 'OpenStreetMap')
    
folium.Marker(
	location = [37.54713854802594, 127.04742381383305],
    popup = 'Subway',
    tooltip='뚝섬역'
 ).add_to(m)

결과 

popup 이라는 옵션과 tooltip의 옵션의 차이는 popup옵션은 마커를 클릭했을 때 설명이 나오고 tooltip옵션은 마우스를 마커에 올려놓고 있으면 뚝섬역이라고 표시해줍니다.  또한, popup옵션과 tooltip옵션은 html문법이 적용할 수 있습니다. 

 

 

마커 클릭했을 때 사이트 접속하기 

마커를 클릭했을 때 특정사이트로 넘기는 방법이 있습니다.

import folium 


m = folium.Map(
    location =[37.544129, 127.054357],
    zoom_start = 14,
    tiles = 'OpenStreetMap')
    
 folium.Marker(location = [37.40222933783297, 127.10868244211787],
             popup = '<a href = "https://www.kakaocorp.com/page/service/service/KakaoTalk" target=_blink>카카오 판교오피스</a>',
             tooltip = '<i>kakao</i>').add_to(m)
m

popup 옵션과 tooltip옵션은 html문법이 적용이 된다고 했습니다. html문법을 활용해 마커를 클릭하였을 때 마커에 해당하는 홈페이지로 넘어갈 수 있게 만들 수 있습니다. 

결과

tooltip옵션이 마우스를 마커에 올려놓기만 해도 카카오라고 뜨고 마커를 클릭했을 때 사이트 접속이 됩니다.

 

Marker custom 해보기 

Marker는 기본적으로 위 이미지에 있는것 처럼 파란색 marker로 표시됩니다. 하지만, Marker 함수내에는 marker을 커스텀을 할 수 있습니다. 

import folium 



m = folium.Map(
	location = [37.544129, 127.054357],
    zoom_start = 11
)

folium.Marker(
	location = [37.544129, 127.054357],
    icon = folium.Icon(
    	color = 'black',
        icon = 'info-sign'
    ).add_to(m)

결과

icon색을 검은색으로 지정하고 모양은 info-sign모양을 정했습니다. folium.Icon함수안에 있는 icon옵션을 커스텀을 할 수 있습니다. 이 모양을 커스텀 하는걸 보여드리겠습니다. 

import folium 



m = folium.Map(
	location = [37.544129, 127.054357],
    zoom_start = 11
)

folium.Marker(
	location = [37.544129, 127.054357],
    icon = folium.Icon(
    	color = 'black',
        icon = 'amazon',
        prefix='fa'
    ).add_to(m)

icon 모양을 amazon마크로 커스텀을 할 수 있습니다. 커스텀을 할 수 있는 이유는 prefix라는 옵션 때문에 가능합니다. prefix 옵션은 두가지가 있습니다. fa, glyphicon가 존재합니다. 

prefix = 'fa' 옵션을 선택할 때 icon 커스텀하는 사이트 아래 사이트에서 icon를 선택해서 icon에 넣어주시면 됩니다.

 

Font Awesome

The world’s most popular and easiest to use icon set just got an upgrade. More icons. More styles. More Options.

fontawesome.com

prefix = 'glyphicon' 옵션을 선택할 때 icon 선택하는 사이트

 

콤포넌트 · 부트스트랩

Some default panel content here. Nulla vitae elit libero, a pharetra augue. Aenean lacinia bibendum nulla sed consectetur. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Nullam id dolor id nibh ultricies vehicula ut id elit.

bootstrapk.com

하지만, 두 개의 사이트에 있는 모든 icon이 다 되는게 아니더라구요. 되는게 있고 안되는게 존재합니다. ㅜ ㅜ 

 

 

실습

수원역에 있는 에이케이플라자를 지도에 표시하고 icon를 백화점으로 표시하고 마우스를 올리면 AK플라자글씨를 나타나게 한다음 클릭했을 때 AK플라자 사이트로 연결하는 실습을 해보겠습니다. 일단 준비해야 할것은 AK플라자 수원점 위도 경도가 필요합니다. 위도 경도를 쉽게 얻을 수 있는 방법은 구글지도를 활용하면 쉽게 얻을 수 있습니다.  구글지도에서 AK플라자를 검색하고 지도를 확대해 마우스 우클릭을 하면 위도 경도를 가져올 수 있습니다.

import folium 



m = folium.Map(
	location = [37.26788961962039, 127.00454839493325],
    zoom_start = 14
)

folium.Marker(
    location = [37.265348793039045, 127.00047789618888],
    icon = folium.Icon(
        color = 'black',
        icon = 'building',
        prefix = 'fa'
    ),
    popup = "<a href = 'http://www.akplaza.com/main.do' target =_blink>akplaza</a>",
    tooltip = 'AK플라자 수원역점'
).add_to(m)

 

'Python' 카테고리의 다른 글

pandas - pivot_table 이해하기  (0) 2021.09.29
파이썬 - folium 시각화 2  (0) 2021.09.29
Python - 진법  (0) 2021.09.27
파이썬 seaborn - 기초문법  (0) 2021.09.24
pandas 기초정리-3  (0) 2021.09.23

댓글