Google API 활용하기 구글 지오코딩(geocoding)이란 특정 위치나 주소를 입력하면 위도와 경도 좌표 정보를 제공해 주는 서비스 이다.
이 서비스를 이용하려면 사용자 인증 후에 google API 키를 발급 받아야 한다.
# -*- coding: utf-8 -*-
# google 지오코딩 API를 이용해서 위도, 경도 데이터 가져오기
import googlemaps
import pandas as pd
# my_key = "본인이 발급받은 API키를 입력"
my_key = "발급받은 google API key 입력"
# 구글맵스 객체 생성하기
maps = googlemaps.Client(key=my_key) # my_key값 입력
lat = [] # 위도
lng = [] # 경도
# 장소(또는 주소) 리스트
places = ["서울시청", "국립국악원", "해운대해수욕장", '제주도', '독도','London', '울릉도']
i = 0
for place in places:
i = i + 1
try:
print(i, place)
# 지오코딩 API 결과값 호출하여 geo_location 변수에 저장
geo_location = maps.geocode(place)[0].get('geometry')
lat.append(geo_location['location']['lat'])
lng.append(geo_location['location']['lng'])
except:
lat.append('')
lng.append('')
print(i)
# 데이터프레임으로 변환하기
df = pd.DataFrame({'위도': lat, '경도': lng}, index=places)
print(df)
* Folium
Folium 라이브러리를 이용핚 지도 만들기
Folium 라이브러리는 지도를 시각화핛 때 유용핚 도구이다.
세계 지도를 기본적으로 지원하고 다양핚 스타일의 지도 이미지를 제공하고 있다.
Folium은 웹 기반으로 지도를 만들기 때문에, PyCharm이나 스파이더(Spyder) 같은 IDE 프로그램에서 실행해도 지도가 표시되지 않는다.
지도를 보려면 지도 객체를 save() 함수로 HTML 파일로 저장하고, 웹브라우저로 저장된 HTML파일을 열어서 확인해야 핚다.
Jupyter Notebook 등 웹 기반 IDE 프로그램에서는 지도를 바로 확인 핛 수 있다
# -*- coding: utf-8 -*-
# 라이브러리 불러오기
import folium
# 서울 지도 만들기
seoul_map = folium.Map(location=[37.55, 126.98], zoom_start=12)
# 지도를 HTML 파일로 저장하기
seoul_map.save('./seoul.html')
→ 서울 지도만들기
import pandas as pd
import folium
import webbrowser
# 대학교 리스트를 데이터프레임 변환(에러 발생시 xlrd 모듈 설치)
# df = pd.read_excel('서울지역 대학교 위치.xlsx', sheet_name='Sheet1')
df = pd.read_excel('data/서울지역 대학교 위치.xlsx')
print(df.head()) # 앞에서 5개의 데이터를 불러옴
print()
# 대학교명이 저장된 컬럼명이 없으므로 collage로 추가
df.columns = ['collage', '위도', '경도']
print(df)
# 서울 지도 만들기
seoul_map = folium.Map(location=[37.55,126.98], zoom_start=12, tiles='Stamen Terrain')
# 대학교 위치정보를 Marker로 표시
for name, lat, lng in zip(df.collage, df.위도, df.경도):
folium.Marker([lat, lng], popup=name).add_to(seoul_map)
# for index, row in df.iterrows():
# folium.Marker([row['위도'], row['경도']], popup=row['collage']).add_to(seoul_map)
# 지도를 HTML 파일로 저장하기
seoul_collage = 'seoul_colleges.html'
seoul_map.save(seoul_collage)
# 웹브라우저로 지도 출력
webbrowser.open(seoul_collage)
→ 지도에 마크 찍기
import pandas as pd
import folium
import webbrowser
# 대학교 리스트를 데이터프레임 변홖
df = pd.read_excel('data/서울지역 대학교 위치.xlsx')
# 대학교명이 저장된 컬럼명이 없으므로 collage로 추가
df.columns = ['collage', '위도', '경도']
# 서울 지도 만들기
seoul_map = folium.Map(location=[37.55, 126.98], tiles='Stamen Terrain', zoom_start=12)
# 대학교 위치정보를 CircleMarker로 표시
for name, lat, lng in zip(df.collage, df.위도, df.경도):
folium.CircleMarker([lat, lng],
radius=10, # 원의 반지름
color='brown', # 원의 둘레 색상
fill=True,
fill_color='coral', # 원을 채우는 색
fill_opacity=0.3, # 투명도
popup=name
).add_to(seoul_map)
# 지도를 HTML 파일로 저장하기
seoul_collage2 = 'seoul_colleges2.html'
seoul_map.save(seoul_collage2)
# 웹브라우저로 지도 출력
webbrowser.open(seoul_collage2)
경기도 인구분포 단계구분도(Choropleth Map)
행정구역과 같이 지도 상의 어떤 경계에 둘러쌓인 영역에 색을 칠하거나 음영 등으로 정보를 나타내는 시각화 방법이다.
경기도 지역의 시굮구별 인구 변화 데이터(2007 ~ 2017년), 경기도 행정구역 경계 지리 정보를 이용하여 인구수에 따른 경계구분도로 시각화 핚다.
단계 구분도
folium.Choropleth(geo_data=geo_data, # 지도 경계
data = df[year], # 표시하려는 데이터
columns = [df.index, df[year]], # 열 지정
fill_color='YlOrRd', fill_opacity=0.7, line_opacity=0.3,
threshold_scale=[10000, 100000, 300000, 500000, 700000],
key_on='feature.properties.name',
).add_to(g_map)
'python' 카테고리의 다른 글
Python 변수 (0) | 2020.09.29 |
---|---|
python 가상환경(pyenv) (0) | 2020.06.12 |
웹 API (0) | 2020.02.21 |
crawling and scraping (0) | 2020.02.20 |
wordcloud (0) | 2020.02.18 |