코딩재개발 RSS 태그 관리 글쓰기 방명록
2022-07-06 22:15:20

folium 라이브러리는 파이썬에서 웹 기반 지도를 만들 수 있게 도와줍니다. 또한 지도 위에 특정 위치를 마커를 표시하는 것도 가능합니다. 저는 신혼여행으로 갔던 크로아티아의 지도를 생성한 후, 하루 이상 묵었던 도시들에 마커를 찍어보도록 하겠습니다. 참고로 해당 도시들과 도시들의 위도(latitude), 경도(longitude) 좌표는 다음과 같습니다. 

 

1. 자그레브 45.84019588,15.96433153

2. 플리트비체 44.8653966,15.5820119

3. 스플리트 43.5159842,16.4490835

4. 두브로브니크 42.6457572,18.09404724

 

특정 위치의 위도, 경도 좌표를 얻는 방법은 아래 링크 글을 참고하세요.

어떤 장소의 위도, 경도 좌표 값 얻는 방법(구글 지도 대신 구글 어스 활용)  

 

folium 지도 위에 마커 표시하기

우선 필요한 라이브러리를 설치합니다.

 

pip install folium

pip install pandas

 

먼저 folium의 Map 함수를 이용해서 크로아티아 지도 객체를 만듭니다. 그 다음에 4개 위도, 경도 좌표에 대해 마커를 찍습니다. 마커를 찍은 지도를 croatia.html 파일로 저장합니다. 이를 구현한 코드는 다음과 같습니다. 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import pandas as pd
import folium
 
croatia_map = folium.Map(location=[44.61687405,15.64776738], zoom_start=6)
 
df_cities = pd.DataFrame({'위도':[45.8401958844.865396643.515984242.6457572], '경도':[15.9643315315.582011916.449083518.09404724]}, 
    index=['자그레브''플리트비체''스플리트''두브로브니크'])
 
print(df_cities)
 
for i in range(len(df_cities)):
    folium.Marker([df_cities.iloc[i][0], df_cities.iloc[i][1]], popup=df_cities.index[i]).add_to(croatia_map)
 
croatia_map.save('croatia.html')
cs

 

코드 각 행에 대한 설명은 다음과 같습니다.

 

4: folium.Map(location=[위도, 경도], zoom_start=줌의정도)로 먼저 크로아티아가 중심에 있는 지도를 생성합니다. 줌의 정도는 6으로 설정했습니다. 클수록 숲이 아닌 나무를 본다고 보시면 됩니다. 

6: 크로아티아 4개 지역의 위도, 경도 정보를 담은 데이터프레임을 생성합니다.

 

 

11-12: 반복문과 folium.Marker([위도, 경도], popup=마커클릭시팝업표출내용).add_to(folium 지도 객체)을 활용하여 4개 도시 위치에 마커를 찍습니다. 판다스 데이터프레임의 iloc 메소드가 활용되었는데, iloc 메소드의 활용법은 아래 링크 글을 참고해주세요. 

[python+pandas] 판다스 데이터프레임 loc, at, iloc, iat 메소드 비교

 

코드 실행 후 생성된 croatia.html을 웹 브라우저에서 열어보면 다음과 같이 4개 지역에 마커가 찍혀있는 지도를 확인할 수 있습니다. 이 html 파일을 지인에게 전송하면, 지인도 이 지도를 열어볼 수 있습니다. 저는 아내에게 공유했습니다. 

 

 

마커를 클릭하면 해당 지역의 이름이 나옵니다. 크로아티아, 아이들 데리고 또 한 번 가고 싶네요.^^ 

 

관련 글

[python] 주소를 위도, 경도 좌표로 바꿔주는 Geocoder API 사용법  

[교훈희의 신혼여행기, 4부] 성 마르코 성당, 그리고 트릴로기아 - 크로아티아 자그레브

글을 읽던 중에 궁금했던 부분은 질문해주세요.
칭찬, 지적, 의문, 격려, 감사표현 등을 남겨주세요.
최대한 답변 드리도록 노력하겠습니다.
욕설과 광고를 담은 댓글은 가차없이 삭제합니다.
비밀글