본문 바로가기

과학/실험 & 활동

[파이썬] 전국 천문대 지도 그리기

 

1. 목표 : 파이썬으로 우리나라 천문대 위치를 지도에 표시하기

 

2. 작업 순서

 1) 천문대 목록 및 주소 만들기

  - 천문대 목록은 네이버에 천문대를 검색하여 크롤링으로 수집함.(코드는 생략함.)

  - 천문대 주소는 검색하여 엑셀에 붙여넣기로 정리함.(크롤링 할 줄 몰라서 이렇게 함.)

 2) 주소를 경위도 좌표로 바꾸기

 - 주소 좌표 변환 툴, Geocoder-Xr 2019 v3.51(http://www.gisdeveloper.co.kr/?p=4784)를 이용함.

 - 이것저것 많이 시도해봤는데 Geocoder-Xr이 가장 깔끔한 것 같음.

 * 파일은 계속 csv 파일로 쓰면 편함.

 위 과정을 모두 하고 나면 아래 첨부한 파일을 얻게 됨.

obser_geo2.csv
0.01MB

 3) 지도에 천문대 표시하기

가) 지도 불러오기 _ folium 이용

 - zoom_start는 시작하는 크기이므로 크게 상관은 없엄. 이러저리 조절해서 보기좋게 설정하면 됨.

 

import folium
map_osm = folium.Map(location=[36.5, 127], zoom_start=7, tiles='Stamen Toner')
map_osm.save('back1.html')
map_osm

나) 천문대 목록 파일 불러오기

- 아마도 아래에서 불러온 모든 라이브러리가 필요하지는 않을 것으로 보이지만, 나도 잘 몰라서 구글링하며 하는 입장이라 그냥 라이브러리는 대충 불러놓고 시작하는 것이 편하다고 느꼈음. 

import pandas as pd
import urllib.request
import datetime
import time
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
obserba = pd.read_csv('obser_geo2.csv', encoding='CP949')
obserba.head(10)

다) 지도에 천문대 표시하기

- 코드는 매우 간단하나 파일에 있는 이름으로 마크업 하는 것이 검색했을 때 잘 안 나와서 애먹었음.

 

for n in obserba.index:
    folium.Marker([obserba['위도'][n],obserba['경도'][n]], popup=obserba['천문대'][n]).add_to(map_osm)
map_osm   

 

라) 저장하기

map_osm.save('obsermap.html')

obsermap.html
0.07MB

 

이상입니다. 

하고 보니 천문대 목록을 만드는데 가장 오랜 시간을 썼던 것 같네요. 

결국 데이터를 잘 모으는 것이 가장 중요하지만 또 그게 가장 어렵네요.

감사합니다.

반응형