[지도시각화]Folium

정제철·2023년 6월 9일
5

빅데이터

목록 보기
10/17
post-thumbnail

데이터시각화 : 1. Matplotlib
데이터시각화 : 2. Seaborn(1)
데이터시각화 : 3. Seaborn(2)
지도시각화 : Folium


📢folium

  • folium은 파이썬에서 사용할 수 있는 지도 시각화 라이브러리이다.
  • folium을 사용하면 다양한 지도 타일을 사용하여 상호작용이 가능한 지도를 생성할 수 있다.

📌지도시각화

import folium
m= folium.Map(location=[39.0169933182672,125.75000461804946], zoom_start=15, width=800,height=500)
folium.TileLayer("Stamen Terrain").add_to(m)
folium.TileLayer("Stamen Toner").add_to(m)
folium.TileLayer("Stamen Watercolor").add_to(m)
folium.LayerControl().add_to(m)
folium.Marker([39.01327308647553, 125.74830367307158], 
              popup="로동신문사", tooltip="로동신문사", 
              icon=folium.Icon(color='red',icon='fa-solid fa-virus-covid',prefix='fa-solid')
             ).add_to(m)
folium.Marker([39.0153524901664,125.74399508699213], 
              popup="인민군렬사탑", tooltip="인민군렬사탑",
              icon=folium.Icon(color='red',icon='fa-solid fa-vest',prefix='fa-solid')
             ).add_to(m)
folium.Marker([39.0169933182672,125.75000461804946], 
              popup="노동당 평양시의원회", tooltip="노동당 평양시의원회",
              icon=folium.Icon(color='red',icon='fa-solid fa-vest',prefix='fa-solid')
             ).add_to(m)
folium.Marker([39.019667905890984,125.75331753541323], 
              popup="김일성광장", tooltip="김일성광장",
              icon=folium.Icon(color='red',icon='fa-solid fa-virus-covid',prefix='fa-solid')
             ).add_to(m)
folium.Marker([39.021270141794886, 125.75153429352962], 
              popup="외무성", tooltip="외무성",
              icon=folium.Icon(color='red',icon='fa-solid fa-virus-covid',prefix='fa-solid')
             ).add_to(m)
folium.Marker([39.02113865049122, 125.75271436851783], 
              popup="조선노동당 본부", tooltip="조선노동당 본부",
              icon=folium.Icon(color='red',icon='fa-solid fa-virus-covid',prefix='fa-solid')
             ).add_to(m)
folium.Marker([39.02369425921443, 125.75248470226391], 
              popup="김일성김정일 기념비", tooltip="김일성김정일 기념비",
              icon=folium.Icon(color='red',icon='fa-solid fa-user-secret',prefix='fa-solid')
             ).add_to(m)
folium.Marker([39.0202,125.7492], 
              popup="인민대학", tooltip="인민대학",
              icon=folium.Icon(color='red',icon='fa-sharp fa-solid fa-radiation',prefix='fa-solid')
             ).add_to(m)
#m.add_child(folium.ClickForMarker(popup='주적'))
m.add_child(folium.LatLngPopup())
folium.Circle(
    [39.0202,125.7492],
    radius=200,
    color='#eb9e34',
    fill_color='red',
    popup='Circle',
    tooltip='tooltip'
).add_to(m)

folium.CircleMarker(
    [39.0169933182672,125.75000461804946],
    radius=100,
    color='yellow',
    fill_color='yellow',
    popup='Circle',
    tooltip='tooltip'
).add_to(m)
m

  • folium.Map() 함수를 사용하여 지도 객체 m을 생성한다.
  • location 매개변수는 지도의 중심 위치를 지정한다.
  • zoom_start 매개변수는 초기 확대/축소 수준을 지정한다.
  • width와 height 매개변수는 지도의 가로와 세로 크기를 지정한다.

📍TileLayer()

folium.TileLayer("Stamen Terrain").add_to(m)
folium.TileLayer("Stamen Toner").add_to(m)
folium.TileLayer("Stamen Watercolor").add_to(m)
  • 'Stamen Terrain': 지형과 지명이 표시된 지도
  • 'Stamen Toner': 흑백으로 표현된 지도
  • 'Stamen Watercolor': 수채화 스타일의 지도
    • 'Stamen Terrain'
    • 'Stamen Toner'
    • 'Stamen Watercolor'
  • folium.TileLayer() 함수를 사용하여 다양한 타일 레이어를 추가한다.
  • 위의 예시에서는 "Stamen Terrain", "Stamen Toner", "Stamen Watercolor" 세 가지 타일 레이어를 추가하였다.
  • 각각 지형, 도로, 수채화 스타일의 지도를 나타낸다.
popup="조선노동당 본부", tooltip="조선노동당 본부"


  • popup과 tooltip 매개변수는 Folium을 사용하여 지도에 마커를 추가한다.

  • popup: 이 매개변수를 사용하여 마커를 클릭했을 때 표시될 팝업 메시지를 설정한다.

  • tooltip: 이 매개변수를 사용하여 마커 위에 마우스를 올렸을 때 표시될 툴팁 메시지를 설정한다.

📍ClickForMarker()

m.add_child(folium.ClickForMarker(popup='주적'))

  • folium.ClickForMarker는 Folium을 사용하여 지도에서 클릭한 위치에 마커를 추가하는 기능을 제공한다.

📍LatLngPopup()

  • 지도 위를 클릭했을 때, 위도와 경도 정보를 표시
m.add_child(folium.LatLngPopup())

📍Circle()

  • folium.Circle(), folium.CircleMarker() : 지도에 원을 표시한다.
  • CirclMarker : 지도 확대 축소에 따라 원의 반경이 변경된다.
folium.Circle(
    [39.0202,125.7492],
    radius=200,
    color='#eb9e34',
    fill_color='red',
    popup='Circle',
    tooltip='tooltip'
).add_to(m)

folium.CircleMarker(
    [39.0169933182672,125.75000461804946],
    radius=100,
    color='yellow',
    fill_color='yellow',
    popup='Circle',
    tooltip='tooltip'
).add_to(m)

📌응용해보기

마포 승차대 위치 표시하기:

  • 파일을 다운받아 pandas를 통해 읽는다.
  • folium을 통해 각 택시 승차대 위도, 경도 위치에 마커 표시
import pandas as pd

texi_data = pd.read_csv("택시승차대 현황.csv", encoding='cp949')
texi_data

import folium
m= folium.Map(
    location=[texi_data['위도'][0],texi_data['경도'][0]], 
    zoom_start=13, width=800,height=500)
for i in range(10):
    folium.Marker([texi_data['위도'][i], texi_data['경도'][i]], 
              popup="택시", tooltip="택시", 
              icon=folium.Icon(color='red',icon='fa-solid fa-taxi',prefix='fa-solid')
             ).add_to(m)
m

profile
성공의 반대는 실패가 아닌 도전하지 않는 것이다.

0개의 댓글