Python/Folium

[Python] geopy 라이브러리로 지역 위도,경도 알아내기

Jerry_K 2024. 3. 29. 17:50

📑 포스팅 목표

지난 포스터에서 공공데이터를 이용해서 응급의료기관 정보를 가져와

전국 응급의료기관명을 출력해보는 것까지 해봤다.

(지난 포스트는 아래 링크 참고)

 

[Python] 공공데이터 가져오기 (공공데이터포털 - 전국 응급의료기관 정보)

📚공공데이터 활용하기 공공데이터를 사용해서 할 수 있는 것은 정말 많다. 공공데이터 기반 웹/앱 서비스도 가능하다. 그래서 이번 포스팅은 공공데이터를 가져와서, 내가 원하는 정보를 출력

fishking.tistory.com

 

이번 포스터에서는 응급의료기관명을 바탕으로 위도,경도를 알아보려고한다. 

그리고 그 위도,경도를 바탕으로 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을 통해 나타내볼 생각이다.