2018/07/14

[python] 공공 Data를 이용한 동네 예보 처리

공공 Data 활용을 위한 service_key 신청은 Link를 참조.

# -*- coding: utf-8 -*-
import datetime as dt
import requests as req
from bs4 import BeautifulSoup

w_items = {"POP":["강수확률", "%"], "PTY":["강수형태", ""], "R06":["6시간 강수량", "mm"], "REH":["습도", "%"], "S06":["6시간 신적설", "cm"], 
           "SKY":["하늘상태", ""], "T3H":["3시간 기온", "°C"], "TMN":["아침 최저 기온", "°C"], "TMX":["낮 최고 기온", "°C"], 
           "UUU":["풍속(동서성분)","m/s"], "VVV":["풍속(남북성분)","m/s"], "WAV":["파고", "m"], "VEC":["풍향", ""], "WSD":["풍속", "m/s"]}
wind_dict = {0:"N",1:"NNE",2:"NE",3:"ENE",4:"E",5:"ESE",6:"SE",7:"SSE",8:"S",9:"SSW",10:"SW",11:"WSW",12:"W",13:"WNW",14:"NW",15:"NNW",16:"N"}
rain_dict = {0:"없음", 1:"비", 2:"진눈깨비", 3:"눈"}

# 가장 최근의 기상청 예보 시간(02:10 이후 3시간 단위) get
def get_rpt_time():
    base_time = dt.datetime.now() - dt.timedelta(hours=2) - dt.timedelta(minutes=10)
    hour = int(base_time.strftime("%H"))
    rehour = str(hour//3*3 + 2).zfill(2)
    return [base_time.strftime("%Y%m%d"), rehour + "00"]

# 풍향 계산용
def get_wind_type(i):
    return wind_dict[(i + 22.5 * 0.5)//22.5]

def get_sky_status(i):
    if i >= 0 and i <= 2: return "맑음"
    elif i >= 3 and i <= 5: return "구름조금"
    elif i >= 6 and i <= 8: return "구름많음"
    elif i >= 9 and i <= 10: return "흐림"

def get_real_value(c, s):
    if c.string == "VEC":
        return get_wind_type(int(s.string))
    elif c.string == "SKY":
        return get_sky_status(int(s.string))
    elif c.string == "PTY":
        return rain_dict[int(s.string)]
    return s.string

# have to change with your service_key
service_key = "MJqwsP2VlmHlaRh0BMwMAtDvhfFu6k59h%2B1Svp2A%......."
nx = 60    # 서울 기준
ny = 127   # 서울 기준

date = get_rpt_time()

base_url = "http://newsky2.kma.go.kr/service/SecndSrtpdFrcstInfoService2/ForecastSpaceData?ServiceKey={}&base_date={}&base_time={}&nx={}&ny={}"
url = base_url.format(service_key, date[0], date[1], nx, ny)

contents = req.get(url)
weather = BeautifulSoup(contents.content, 'lxml-xml')

print("\t **************************************")
print("\t Report Time :", date[0], date[1])
print("\t **************************************")
for item in weather.find_all("item"):
    print("\t", w_items[item.category.string][0], " : ", get_real_value(item.category, item.fcstValue), end = "")
    if w_items[item.category.string][1] != "":
        print(w_items[item.category.string][1])
    else:
        print()
<결과>
         **************************************
         Report Time : 20180715 1100
         **************************************
         강수확률  :  10%
         강수형태  :  없음
         습도  :  50%
         하늘상태  :  맑음
         3시간 기온  :  31°C
         낮 최고 기온  :  33.0°C
         풍속(동서성분)  :  3.1m/s
         풍향  :  WSW
         풍속(남북성분)  :  1.3m/s
         풍속  :  3.4m/s

[python] get current datetime

from datetime import datetime
datetime.today()                # get current date
datetime.today().year        # get current year
datetime.today().month    # get current month
datetime.today().day         # get current day
datetime.today().hour        # get current hour
datetime.today().strftime("%Y/%m/%d %H:%M:%S")  # get current date with format yyyy/mm/dd hh24:mm:ss

[python] all markers in matplotlib.pypolot.scatter

import matplotlib.pyplot as plt
import numpy as np
import matplotlib

markers = {'.': 'point', ',': 'pixel', 'o': 'circle', 'v': 'triangle_down', '^': 'triangle_up', '<': 'triangle_left', '>': 'triangle_right', 
                    '1': 'tri_down', '2': 'tri_up', '3': 'tri_left', '4': 'tri_right', '8': 'octagon', 's': 'square', 'p': 'pentagon', '*': 'star', 
                    'h': 'hexagon1', 'H': 'hexagon2', '+': 'plus', 'x': 'x', 'D': 'diamond', 'd': 'thin_diamond', '|': 'vline', '_': 'hline', 
                    'P': 'plus_filled', 'X': 'x_filled', 0: 'tickleft', 1: 'tickright', 2: 'tickup', 3: 'tickdown', 4: 'caretleft', 5: 'caretright', 
                    6: 'caretup', 7: 'caretdown', 8: 'caretleftbase', 9: 'caretrightbase', 10: 'caretupbase', 11: 'caretdownbase', 
                    'None': 'nothing', None: 'nothing', ' ': 'nothing', '': 'nothing'}

N = 50
x = np.random.rand(N)
y = np.random.rand(N)
area = (30 * np.random.rand(N))**2 

for key, value in markers.items():
    plt.scatter(x, y, s=area, c="g", alpha=0.5, marker=key, label=value)
    plt.legend(loc=1)
    plt.show()







































[art] 백남준 작품 in Korea

어렸을 적 백남준은 매우 유복한 환경에서 자랐다. 집에는 피아노나 전축은 물론 당시에 서울에 딱 두 대 밖에 없었던 캐딜락도 있었고, 해방 전에 유치원(애국유치원)에 다녔으며 한국 전쟁의 그 아비규환 속에서도 파인애플을 먹을 정도의 부잣집이었다. 그의 어머니는 '돈은 물 쓰듯 쓰는 거다'라고 했다고 한다. 조부 백윤수는 청나라 비단을 독점 판매했던 거부로, 종로5가와 동대문시장 일대의 포목상 절반이 그의 것이었고, 국상 때 만조백관의 상복과 제복을 일체 도맡았을 정도로 섬유업계의 막강한 실력자였다. 후에 그는 직물, 대부업, 제약회사 등을 세웠고, 재산은 한성은행 자본금의 3배에 달했다.
백남준은 당시 상류층만 다니던 수송국민학교와 경기공립중학교를 다녔는데, 해방 전 그 시절에 학교에는 풀장과 영사기가 있어서, 당시 학부모였던 대한극장 사장이 학교에서 직접 영화를 상영하기도 했다고 한다. 또한 경기중학교 음악교사로, 후에 이대 음대학장을 지냈던 신재덕에게 피아노를, 작곡가 이건우에게 작곡을 배웠다. 1949년에는 이승만 대통령의 부탁으로 무기구입을 위해 홍콩으로 갔다는 설이 있는 부친 백낙승씨의 통역으로 따라가 홍콩의 로이덴 스쿨로 전학한다. 백남준은 이때 영어와 중국어를 배우게 된다.  - 나무위키

1. 단군


3. 거북선 


2018/07/13