1) 필요한 모듈
1
2
3
4
5
|
pip install --upgrade folium # 필요한 패키지설치
import folium
from pandas import DataFrame # 데이터 분석 패키지
from pandas import ExcelFile # 엑셀파일 가져오기
|
cs |
2) 지도에 마커추가
- 일반 마커
1
2
3
4
5
6
7
8
9
10
11
|
# 새로운 지도 객체 생성
map_osm1 = folium.Map(location=['위도','경도'], zoom_start='값')
# 마커 객체 생성
marker1 = folium.Marker(['위도','경도'],
popup='서울특별시청', # 팝업 이름
icon=folium.Icon(color='색',icon='아이콘'))
marker1.add_to(map_osm1) # 마커 객체를 지도에 추가함
map_osm1 # 지도 표시하기
|
cs |
◆ 결과
- 사용자 지정아이콘, HTML 팝업
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
# 새로운 지도 객체 생성
map_osm2 = folium.Map(location=['위도', '경도'], zoom_start= '값')
# HTML을 사용한 팝업
popup_html = folium.Popup("<font color='색상' style='글씨속성'><b>'팝업이름'</b></font>", parse_html=False)
# 사용자 지정 아이콘 이미지 사용
icon_img = folium.features.CustomIcon('이미지주소', icon_size=(50, 50))
# 마커 객체 생성
marker2 = folium.Marker(['위도', '경도'],
popup=popup_html,
icon=icon_img)
marker2.add_to(map_osm2) # 마커 객체를 지도에 추가함
map_osm2 # 지도 표시하기
|
cs |
◆ 결과
- 원형 마커
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# 새로운 지도 객체 생성
map_osm3 = folium.Map(location=['위도', '경도'], zoom_start='숫자')
# 원형마커
marker3 = folium.CircleMarker(['위도', '경도'],
radius='숫자', # 범위
color='색상코드', # 선 색상
fill_color='색상코드', # 면 색상
popup='장소명'
)
marker3.add_to(map_osm3)
map_osm3
|
cs |
◆ 결과
3) 파일로 저장
1
|
map_osm3.save('map_osm3.html') #파일이 저장될 위치
|
cs |
◆ 결과
< 응용 >
- 서울의 초등학교 위치
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
# 엑셀 파일을 원격으로 내려받아 데이터프레임으로 변환 (다소 시간이 소요된다.)
>>> xlsx = ExcelFile("http://itpaper.co.kr/demo/py/school2019.xlsx")
>>> df = xlsx.parse(xlsx.sheet_names[0])
# 사용할 필드만 추출
>>> df2 = df.filter(['학교명', '학교급구분', '소재지도로명주소', '위도', '경도'])
# 서울시의 초등학교만 추출
>>> df3 = df2.query("학교급구분 == '초등학교' and 소재지도로명주소.str.contains('서울특별시')")
# 지도 객체 생성
# zoom_start: 배율 1~22
>>> map_osm = folium.Map(location=[37.566651, 126.978428], zoom_start=12)
# 데이터프레임의 행수 만큼 반복하면서 마커생성
>>> for i in df3.index:
>>> # 행 우선 접근 방식으로 값 추출하기
>>> name = df3.loc[i, '학교명']
>>> lat = df3.loc[i, '위도']
>>> lng = df3.loc[i, '경도']
>>> # 추출한 정보를 지도에 표시
>>> marker = folium.Marker([lat,lng], popup=name)
>>> marker.add_to(map_osm)
>>> map_osm
|
cs |
◆ 결과
'Python' 카테고리의 다른 글
python (반복문 유형) (0) | 2020.05.22 |
---|---|
Python (Selenium) (0) | 2020.05.22 |
Python (데이터 전처리 - 행/열 삭제 및 병합) (0) | 2020.05.15 |
Python (데이터 전처리 - 데이터검색, 행/열 추가) (0) | 2020.05.15 |
Python (데이터 전처리 - 행/열 순서 및 이름 변경, 데이터 정렬) (1) | 2020.05.14 |
댓글