대외활동/ABC 지역주도형 청년 취업역량강화 ESG 지원산업
[ABC 220905 15일차] - 과제 실습
갓생사는 공순이가 되고싶은 콩순이
2022. 9. 11. 01:26
반응형
<과제>
사용자에게 도로명 주소를 입력받아 마커를 표시하고 그 위치에 가장 가까운 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