반응형
<과제>
사용자에게 도로명 주소를 입력받아 마커를 표시하고 그 위치에 가장 가까운 WIFI 10곳을 지도 시각화하자.
하나의 셀에서 실행되어야 한다.
# 라이브러리 임포트
import folium
import pandas as pd
from geopy.distance import geodesic
from geopy.geocoders import Nominatim
# 입력받을 주소 함수
def geocoding(address):
geolocoder = Nominatim(user_agent = 'South Korea', timeout=None)
geo = geolocoder.geocode(address)
crd = {"lat": str(geo.latitude), "lng": str(geo.longitude)}
return crd
adress = input('도로명 주소를 입력하세요 : ')
crd = geocoding(adress)
my_home = folium.Map(location=[crd['lat'], crd['lng']], zoom_start=14)
folium.Marker([crd['lat'], crd['lng']], icon=folium.Icon(color='red', icon='glyphicon glyphicon-home')).add_to(my_home)
my_wifi = pd.DataFrame(columns = ['설치시군구명', '설치시설구분', '위도', '경도', '거리'])
my_home = (crd['lat'], crd['lng'])
data[['설치시군구명', '설치시설구분', '위도', '경도']]
for n in data.index:
wifi_loc = (data.loc[n, '위도'], data.loc[n, '경도'])
my_wifi.loc[n] = [data.loc[n, '설치시군구명'], data.loc[n,'설치시설구분'], data.loc[n,'위도'], data.loc[n,'경도'], geodesic(my_home, wifi_loc).kilometers]
my_wifi = my_wifi.sort_values(by=['거리']).head(10)
for n in my_wifi.index:
folium.Marker([my_wifi.loc[n, '위도'], my_wifi.loc[n, '경도']],
popup = '<pre>'+my_wifi.loc[n, '설치시설구분']+'</pre>',
icon = folium.Icon(icon='wifi', prefix='fa')).add_to(my_home)
folium.Marker([crd['lat'], crd['lng']], icon=folium.Icon(color='red', icon='glyphicon glyphicon-home')).add_to(my_home)
my_map
LIST
'대외활동 > ABC 지역주도형 청년 취업역량강화 ESG 지원산업' 카테고리의 다른 글
[ABC 220906 - 16일차] 오전 실습 과제 (0) | 2022.09.11 |
---|---|
[ABC 220906 - 16일차] 나와 제일 가까운 의료 기관 찾기 (0) | 2022.09.11 |
[ABC 220905 15일차] - 나와 제일 가까운 무료 WIFI는 어디 있을까? (1) | 2022.09.10 |
[ABC 220902 14일차] - 6번째 특강 (0) | 2022.09.05 |
[ABC 220902 - 14일차] 5번째 특강 (0) | 2022.09.05 |