버 젼 : conda 4.9.0 / Python 3.8.3 / numpy 1.19.2 / pandas 1.1.3 - basemap 설치 : conda install basemap - conda 업데이트 금지 (conda update -n base conda) *(2020.11.01 기준) 업데이트 시, basemap 지원문제로 충돌 발생 ※ conda 및 pip를 병행하여 사용하는 경우, 충돌 가능성이 있음으로 개발자는 하나로 통일하여 사용하기를 권장
for i in data.index :
x, y = m(data['경도'][i], data['위도'][i])
m.plot(x, y,'bo', ms=2) ## 'bo'는 파란색으로 o(동그라미) | ms(=marker size)
전처리한 데이터(data)에서 우리가 필요한 위/경도 데이터만 가져와서 plot 표출
3.1. 동일한 방식으로 ASOS위치 표출가능
3.2. (최종) AWS와 ASOS 동시 표출
AWS와 ASOS 같이 표현하고 싶은 경우, 데이터를 각각 불러와서 지도상에 표출 가능
하지만, 두 데이터를 합쳐서 표현하고 싶다면
## 라이브러리
%matplotlib inline
import os
import glob
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
# 지도표출
plt.figure(figsize=(10,10))
m = Basemap(projection='merc', lat_0=37.35, lon_0=126.58, resolution = 'h',
urcrnrlat=40, llcrnrlat=33, llcrnrlon=122, urcrnrlon=132)
m.drawcoastlines()
m.drawcountries()
m.drawmapboundary()
## 지도표출_위경도
parallels = np.arange(30.,50.,1.)
m.drawparallels(parallels,labels=[True,False,False,False])
meridians = np.arange(120.,150.,2.)
m.drawmeridians(meridians,labels=[True,False,False,True])
#=================데이터 병합 및 전처리=================
File_in = "./Data/" # 파일위치설정(데이터위치 설정필수)
All_file_list = glob.glob(os.path.join(File_in, "META_*")) # 결과 궁금하면, print(All_file_list)
AllData= [] # 데이터 병합을 위한 빈 리스트 생성
for file in All_file_list:
df = pd.read_csv(file, encoding= "euc-kr")
df['category'] = file[-6:-4] # AWS, ASOS 구별하기 위해 'category'생성
AllData.append(df) # 일전에 두 데이터를 구별하기위해
# 파일명 끝에 '관제' 또는 '종관' 저장함
data_f = pd.concat(AllData, axis=0, ignore_index = True)
data_f = data_f[data_f['종료일'].isnull()].reset_index(drop=True) #운용중인 데이터만 활용
a = data_f[data_f['category'] == "종관"] # 아래 코드는 IF와 FOR문을 통해서 간단화(추후)
b = data_f[data_f['category'] == "관제"]
for i in a.index :
x, y = m(datacombine['경도'][i], datacombine['위도'][i])
m.plot(x, y,'ro', ms=2)
for i in b.index :
x, y = m(datacombine['경도'][i], datacombine['위도'][i])
m.plot(x, y,'bo', ms=2)
plt.show()