📑 포스팅 목표
지난 포스터에서 공공데이터를 이용해서 응급의료기관 정보를 가져와
전국 응급의료기관명을 출력해보는 것까지 해봤다.
(지난 포스트는 아래 링크 참고)
이번 포스터에서는 응급의료기관명을 바탕으로 위도,경도를 알아보려고한다.
그리고 그 위도,경도를 바탕으로 folium으로 간단히 지도에 나타내는 것 까지 해보자.
🔍목차
1. Geopy 알아보기
2. folium으로 위치 표현하기
📚위도 경도를 알아내서 지도에 표시
📕Geopy 알아보기
특정 위치의 위도와 경도를 알아내는 방법을 많을 것이다.
예전에는 구글 지도에 위도와 경도를 표시해줬는데, 요즘은 표시가 안되어있다.
그래도 특정 위치를 검색하고 url 부분을 보면 위도와 경도를 추출 할 수 있다.
문제는 수백개의 위치를 이걸로 하나하나 다 추출하기에는 무리이다.
그래서 파이썬의 geopy 라이브러리를 통해 위도와 경도를 간단히 출력해보려고 한다.
pip install geopy
먼저 geopy가 없는 사람은 해당 명령어를 통해 설치한다.
from geopy.geocoders import Nominatim
geolocator = Nominatim(user_agent="user_name")
geolocator.geocode("녹색병원")
그리고 Nominatim을 import 한 후 ,
user_agent에는 아무 이름이나 선언해주고, geolocator.geocode("위치명")을 해주면 된다.
출력값 : 37.583520, 127.085960
실제 위치 : 37.583506, 127.085958
완벽하게 일치하지는 않지만, 꽤나 쓸만한 것 같다.
geolocator.reverse("37.583520899999996, 127.08596004209943")
이번에는 반대로 geolocator.reverse() 함수를 통해
위도와 경도를 넣어주어서 원하는 주소를 얻을 수 있다 .
완벽하게 100% 정확한거는 아니지만, 요정도면 쓸만하다...!?
📕Folium으로 위치 표현하기
Folium은 leaflet.js 기반으로 지도를 그려주는 Python 모듈이다.
나름 오래되었고 안정적이라고들 한다.
pip install folium
먼저 간단하게 folium 라이브러리를 설치한다.
import folium
# 위에 위도 경도 참고
m = folium.Map(location=[37.583520899999996, 127.08596004209943],zoom_start=18)
folium을 import 하고,
folium.Map() 함수를 통해 위도 경도를 통해 원하던 녹생 병원이 나타냈다.
(Map() 함수의 하이퍼 파라미터들을 통해 지도를 다양하게 볼 수 있다.)
m = folium.Map(location=[37.583520899999996, 127.08596004209943],zoom_start=18)
folium.Marker([37.583520899999996, 127.08596004209943],
popup="<b>녹색 병원</b>",
tooltip="<i>hospital</i>"
).add_to(m)
m
뭔가 아쉬워서 Marker를 추가해줬다.
Marker에 위도와 경도를 표현해주고, add_to()를 꼭 해줘야 지도에 표기된다.
popup, tooltip은 Marker 하이퍼파라미터이다.
popup은 Marker를 클릭했을 때 나오는 문구 설정이고,
tootip은 Maker를 호버했을 때 나오늘 문구이다.
🧐마무리
간단하게 geopy로 위도와 경도를 알아내고
folium을 통해 지도에 표시를 해보았다.
다음 포스팅에는 좀 더 심화 과정으로,
전에 출력한 전국 병원명과 위도 경도를 데이터 프레임에 저장하고,
folium을 통해 나타내볼 생각이다.