좌표값으로 지도를 그리기 위해 툴을 찾아보던 도중
파이썬에 folium이라는 패키지를 찾았습니다.
간단하게 깔끔한 지도를 그릴 수 있어 좋은 것 같으므로 포스팅 합니다.
패키지 설치를 위해서는
pip install folium
명령을 이용하면 됩니다.
우선 간단하게 지도를 출력해 보겠습니다.
1
2
3
4
5
6
|
import folium
m = folium.Map(location=[36.833972, 127.178548],
zoom_start=12)
m
|
cs |
folium.Map() 함수를 이용합니다.
location에 위도와 경도 정보를 입력하고
zoom_start에 줌할 정도를 입력해주면 간단하게 지도를 나타낼 수 있습니다.
zoom_start의 줌 최대치는 18인 것 같습니다.
예제코드의 좌표는 천안시 좌표를 입력해 보았습니다.
지도에 마커를 추가해 보겠습니다.
이것도 간단합니다.
1
2
3
|
folium.Marker([36.834192, 127.178588],
popup="천안 상명대학교 본관 입구",
tooltip="천안 상명대학교").add_to(m)
|
folium.Marker() 함수를 이용하여 마커를 추가할 수 있습니다.
첫 번째 인자에 좌표값을 입력하고
popup에는 마커 클릭시 표현될 문구
tooltip에는 마커에 마우스를 올릴시 표현될 문구를 입력할 수 있습니다.
add_to() 함수를 이용해 미리 만들어둔 변수에 내용을 추가합니다.
각각의 문구는 html 문서 형식으로 작성할 수 있습니다.
천안 상명대학교 위치에 마커를 찍고
간단하게 툴팁과 팝업을 주어 보았습니다.
위에서 말한 것과 같이 각각 문구에는 html 문서형식을 적용할 수 있기 때문에
약간 응용을 하면 이미지, 웹페이지 등도 출력하는 것이 가능합니다.
마커 팝업에 이미지를 한 번 추가해 보도록 하겠습니다.
이미지를 추가하기 위해선 iframe을 활용해야 합니다.
코드를 보도록 하겠습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
import folium
import base64
m = folium.Map(location=[36.833972, 127.178548],
zoom_start=12)
pic = base64.b64encode(open('smu.jpg','rb').read()).decode()
image_tag = '<img src="data:image/jpeg;base64,{}">'.format(pic)
iframe = folium.IFrame(image_tag, width=300, height=300)
popup = folium.Popup(iframe, max_width=650)
folium.Marker([36.834192, 127.178588],
popup=popup,
tooltip="천안 상명대학교").add_to(m)
m
|
cs |
코드가 조금 길어졌습니다.
먼저 변수 m에 맵을 만들어서 할당해준 뒤
이미지를 base64 형식으로 만들어 pic변수에 넣어줍니다.
이 pic변수를 html형식으로 만들어 image_tag 변수에 할당해준 뒤,
IFrame으로 만들어 iframe 변수에 할당해 주었습니다.
그리고 마지막으로 popup 변수에 iframe을 팝업으로 만들어 할당해 주었습니다.
그 다음에 마커를 추가하며 popup에 이 내용을 추가해주면
아래와 같이 출력 가능합니다.
위 코드를 보면 width와 height를 지정하는 부분을 볼 수 있는데
이 부분은 적절하게 설정을 해 주어야 iframe의 크기를 조절할 수 있습니다.
예제에서는 조금 넉넉하게 선언해 주었더니 여백이 생겨 버렸네요.
1
|
m.save('filename.html')
|
cs |
마지막으로 save() 함수를 이용해 파일로 저장할 수도 있습니다.
저장은 html 파일 형식으로 저장됩니다.
이와 같이 간단하게 깔끔한 지도를 출력할 수 있는 folium 패키지에 대해 알아보았습니다.
좀 더 자세한 정보는 공식 documentation에서 찾아볼 수 있습니다.
documentation도 설명이 잘 돼있는 편이라서 참조하기가 수월했습니다.
아래는 documentation 사이트의 주소입니다.
https://python-visualization.github.io/folium/index.html
참고로 변수를 출력하는 것 만으로 지도를 확인하기 위해서는 ipython notebook을 이용해야 합니다.
예제에서 저는 jupyter notebook을 이용했습니다.
.py코드로 만들어 지도를 출력하고 싶을 경우에는 별도로 출력해줄 코드를 작성해야한다는 점을 유의해야 할 것 같습니다.
'Python 이야기' 카테고리의 다른 글
이미지 위에 히트맵(heatmap) 그리기 (6) | 2019.06.11 |
---|