본문 바로가기

programmer/python

Folium API 활용(그룹 설정, 마크 커스텀, 서클 마커, html 저장)

Folium 라이브러리 사용시 1. 마커 Grouping, 2.마커에 특정 문자열을 삽입, 3. 서클 마커, 4.html 저장을 순서대로 알아보자.

1. 마커 Grouping
마커 그룹생성은 folum.FeatureGroup 함수를 사용해 만들 수 있다. 예제는 상위 그룹 'groups' 에 2개의 하위 그룹(group1, group2)이 존재한다.
folium.LayerControl(collapsed=False).add_to() 함수를 꼭 수행해야 표출 된다.

m = folium.Map(location=[37.502088,127.024615], zoom_start=17)

#그룹 만들기
fg = folium.FeatureGroup(name='groups')
m.add_child(fg)

g1 = plugins.FeatureGroupSubGroup(fg, 'group1')
m.add_child(g1)

g2 = plugins.FeatureGroupSubGroup(fg, 'group2')
m.add_child(g2)

folium.LayerControl(collapsed=False).add_to(m)

#마커 아이콘 커스텀
icon_spinner = plugins.BeautifyIcon(
    icon='spinner',#bus,plane,ambulance,taxi,leaf(default)
    spin= True,
    border_color='#b3334f',
    text_color='#b3334f',
#     number=10,
#     icon_shape='triangle'
    icon_shape = 'marker',
    
)

icon_number = plugins.BeautifyIcon(
    border_color='#00ABDC',
    text_color='#00ABDC',
    icon_shape = 'marker',
#     isAlphaNumericIcon = True,
#     icon = folium.Icon(color = 'red'),
    number=10,
#     inner_icon_style='margin-top:0;'
)
#마커 생성
folium.Marker([37.502088,127.024615],
                       popup='서울1',tooltip='1',
                       icon=icon_number).add_to(g1)
folium.Marker([37.503088,127.025615],
                       popup='서울2',tooltip='2',
                       radius=100,
                       color='#3186cc',
                       fill_color='#3186cc', 
                       icon=icon_spinner, draggable= True).add_to(g1)

folium.Marker([37.502088,127.025615],
                       popup='서울3',tooltip='3',
                       icon=folium.Icon(color='blue')).add_to(g2)
folium.Marker([37.503088,127.024615],
                       popup='서울4',tooltip='4',
                       icon=folium.Icon(color='blue')).add_to(g2)

folium.CircleMarker([37.503088,127.027615], 
                    radius=100,
                    color='#3186cc',
                    fill_color='#3186cc', 
#                     popup='덕수궁',
                    icon=icon_spinner,
                    draggable = True
                   ).add_to(g2)


m

2.마커에 특정 문자열을 삽입
: 마커에 이미지나 기본 토큰 사용 말고 특정 문자열을 사용하고 싶을땐 plugins.BeautifyIcon 함수를 사용한다. Icon을 마음대로 커스터마이징 가능하다.

관련 코드는 하기와 같다.

icon_number = plugins.BeautifyIcon(
    border_color='#00ABDC',
    text_color='#00ABDC',
    icon_shape = 'marker',
#     isAlphaNumericIcon = True,
#     icon = folium.Icon(color = 'red'),
    number=10,
#     inner_icon_style='margin-top:0;'
)
#마커 생성
folium.Marker([37.502088,127.024615],
                       popup='서울1',tooltip='1',
                       icon=icon_number).add_to(g1)

3. 서클 마커
서클 마커는 지름 기준으로 원형 표시를 해주지만 folium 에서 마우스 스크롤을 수행하면 해당 화면 비율에 맞추어 서클이 변경된다... 

관련 소스코드

folium.CircleMarker([37.503088,127.027615], 
                    radius=100,
                    color='#3186cc',
                    fill_color='#3186cc', 
#                     popup='덕수궁',
                    icon=icon_spinner,
                    draggable = True
                   ).add_to(g2)

 

4.html 저장
쉽다. 
os.path.join('results',os.path.join('results',Plugins_8.html'))

 

[마커 종류 참조 링크]

https://github.com/masajid390/BeautifyMarker

 

 

<전체 소스코드>

m = folium.Map(location=[37.502088,127.024615], zoom_start=17)

#그룹 만들기
fg = folium.FeatureGroup(name='groups')
m.add_child(fg)

g1 = plugins.FeatureGroupSubGroup(fg, 'group1')
m.add_child(g1)

g2 = plugins.FeatureGroupSubGroup(fg, 'group2')
m.add_child(g2)

folium.LayerControl(collapsed=False).add_to(m)
#마커 아이콘 커스텀
icon_spinner = plugins.BeautifyIcon(
    icon='spinner',#bus,plane,ambulance,taxi,leaf(default)
    spin= True,
    border_color='#b3334f',
    text_color='#b3334f',
#     number=10,
#     icon_shape='triangle'
    icon_shape = 'marker',
    
)

icon_number = plugins.BeautifyIcon(
    border_color='#00ABDC',
    text_color='#00ABDC',
    icon_shape = 'marker',
#     isAlphaNumericIcon = True,
#     icon = folium.Icon(color = 'red'),
    number=10,
#     inner_icon_style='margin-top:0;'
)
#마커 생성
folium.Marker([37.502088,127.024615],
                       popup='서울1',tooltip='1',
                       icon=icon_number).add_to(g1)
folium.Marker([37.503088,127.025615],
                       popup='서울2',tooltip='2',
                       radius=100,
                       color='#3186cc',
                       fill_color='#3186cc', 
                       icon=icon_spinner, draggable= True).add_to(g1)

folium.Marker([37.502088,127.025615],
                       popup='서울3',tooltip='3',
                       icon=folium.Icon(color='blue')).add_to(g2)
folium.Marker([37.503088,127.024615],
                       popup='서울4',tooltip='4',
                       icon=folium.Icon(color='blue')).add_to(g2)

folium.CircleMarker([37.503088,127.027615], 
                    radius=100,
                    color='#3186cc',
                    fill_color='#3186cc', 
#                     popup='덕수궁',
                    icon=icon_spinner,
                    draggable = True
                   ).add_to(g2)






# m.add_child(folium.ClickForMarker(popup='덕수궁'))
# m.add_child(folium.LatLngPopup())

m.save(os.path.join('results', 'Plugins_8.html'))
m

 

반응형
사업자 정보 표시
라울앤알바 | 장수호 | 서울특별시 관악구 봉천로 13나길 58-10, 404호(봉천동) | 사업자 등록번호 : 363-72-00290 | TEL : 010-5790-0933 | Mail : shjang@raulnalba.com | 통신판매신고번호 : 2020-서울관악-0892호 | 사이버몰의 이용약관 바로가기

'programmer > python' 카테고리의 다른 글

Telegram API 사용해 보기  (0) 2022.01.17
python 크롤링 해보기  (0) 2021.07.31
Jupyter(.ipynb) 실행 파일(.exe) 만들기  (2) 2021.03.02
JVMNotFoundException 처리  (1) 2020.12.18
Conda 설치(linux)  (0) 2020.11.13