[Folium] Folium으로 지도 그리기
국립공원공단 프로젝트를 진행하는 도중에 지도를 그려야 될 상황이 되었는데 python으로 지도를 그리기 적절한 라이브러리가 무엇이 있을까 탐색하다가 멘토께서 Folium을 추천해주셔서 사용했다.
우선 패키지를 다운로드하자.
1
pip install folium
Import
1
import folium
Code
지도 객체 생성
1
m = folium.Map(location=[36.684273, 128.068635], zoom_start=6.5, width="100%", height="100%") # 기본이 되는 지도 정보 가져오기
지도 객체를 만들기 위해 folium.Map()을 호출한다.
location, zoom_start, width, height 속성이 있는데 location은 처음 지도가 위치한 [위도, 경도]이며 zoom_start는 시작 배율이다. width와 height는 쉽게 알 수 있듯이 가로와 세로 크기를 의미한다.
객체 m은 맵 정보를 담고 있으며, 더 꾸미고 싶다면 folium 기능을 m에 추가하면 된다.
창 활성화 시 대한민국을 창 크기에 맞게 보고 싶다면 location을 [36.684273, 128.068635], zoom_start를 6.5로 지정하면 된다.
지도에 마커 찍기
1
2
# 지도에 마커 찍기
folium.Marker([위도, 경도], popup=popup, icon=folium.Icon(color='green', icon='fa-tree', prefix='fa')).add_to(m)
마커와 팝업을 m에다가 추가해보자.
마커는 folium.Marker()을 사용하며 매개변수 [위도, 경도] 위치에 마커를 표기한다.
마커를 클릭 시 popup이 활성화되고 popup은 html로 구성되어 있다. 또한, icon 속성을 사용해 마커의 아이콘을 변경할 수 있는데 folium.Icon()을 사용하자.
매개변수 color로 색을 지정하고 prefix가 ‘glyphicon’을 기본값으로 갖지만, fontawesome을 사용하고 싶다면 ‘fa’로 변경하고 fontawesome에서 icon name을 가져오면 된다.
popup 설정
1
2
3
4
# iframe 생성
iframe = folium.IFrame({html 태그}, width=220, height=170)
# html 띄울 popup 객체 생성
popup = folium.Popup(iframe)
popup은 html로 되어 있다고 말했는데 팝업창에 html을 띄우기 위해 iframe을 사용해야 한다.
우선 팝업창에 띄우고 싶은 html 태그를 만든 후에 folium.Iframe()을 통해 iframe으로 만들며 folium.Popup()으로 iframe을 popup 값으로 만들어준다.
웹에 뿌리기 또는 저장
1
2
3
4
maps = m._repr_html_() # 지도를 템플릿에 삽입하기위해 iframe이 있는 문자열로 반환 (folium)
# 지도 html 저장
m.save({경로})
이렇게 만들어진 객체 m을 최종적으로 웹에서 바로 보여줄 때 repr_html()을 사용하고 html 파일로 저장하고 싶으면 save()을 사용한다.
번외로 위치 컨트롤 플로그인을 추가하려면 웹에 뿌리기 전에 다음 명령어를 사용한다.
1
folium.plugins.LocateControl().add_to(m) # 위치 컨트롤러 추가