Skip to content

Instantly share code, notes, and snippets.

@jkatagi
Last active November 11, 2017 06:16
Show Gist options
  • Save jkatagi/0398b80aeceb6f82292b832c5cec5c39 to your computer and use it in GitHub Desktop.
Save jkatagi/0398b80aeceb6f82292b832c5cec5c39 to your computer and use it in GitHub Desktop.
get dojo-suibun, first_tank_value, second_tank_value near these area: # Tajimi, Gihu, Ogaki, Ibigawa, Sekigahara, Minogamo, Nagoya, Ibukiyama and Maibara.
#!/usr/bin/env python3
# 2017/02/27 Jin Katagi
# get dojo-suibun, first_tank_value, second_tank_value near these area:
# Tajimi, Gihu, Ogaki, Ibigawa, Sekigahara, Minogamo, Nagoya, Ibukiyama and Maibara.
# usage) $./arrange.py
# output)
# day, lat, lon, dojo-suibun, first_tank_value, second_tank_value
import pytz
import datetime
import pandas as pd
import csv
def UTC2JST(year, month, day, hour, minute):
""" convert UTC to JST.
return:
time_JST_fmt (str) : yyyy-mm-dd HH:MM:SS
"""
# set time zone
time_zone_JST = pytz.timezone("Asia/Tokyo")
time_zone_UTC = pytz.utc
time = datetime.datetime(year, month, day, hour, minute)
time_UTC = time_zone_UTC.localize(time)
# convet time JST time zone
time_JST = time_UTC.astimezone(time_zone_JST)
# arrange format
fmt = '%Y-%m-%d %H:%M:%S'
time_JST_fmt = time_JST.strftime(fmt)
return time_JST_fmt
def get_ymdhM(year_list, month_list, hour_list, minute_list):
""" get year, month, day, hour, minute from list.
input:
return:
ymhdM_list: list of year, month, day, hour, minute."""
ymdhM_list = []
for year in year_list:
for month in month_list:
if (month == 6 or month == 9):
day_list=range(1, 31)
else:
day_list=range(1,32)
for day in day_list:
for hour in hour_list:
for minute in minute_list:
ymdhM_list.append((year, month, day, hour, minute))
return ymdhM_list
def main():
area_list = ['Tajimi','Gifu','Ogaki','Ibigawa','Sekigahara','Minogamo','Nagoya','Ibukiyama','Maibara']
# "area" : (lat, lon)
area_dict = {
"Tajimi" :(137.094, 35.325),
"Gifu" :(136.781, 35.425),
"Ogaki" :(136.594, 35.325),
"Ibigawa" :(136.594, 35.475),
"Sekigahara":(136.469, 35.375),
"Minogamo" :(137.031, 35.425),
"Nagoya" :(136.969, 35.175),
"Ibukiyama" :(136.406, 35.425),
"Maibara" :(136.344, 35.375)
}
year_list = [2016] # 2016
month_list = range(6, 10) # 6, 7, 8, 9
hour_list = range(0, 24) # 0, 1, ..., 23
minute_list = [0, 30] # 0, 30
tank_list = ["number0", "number1", "number2"]
ofile_dir="./txt_output_JST"
for area in area_list:
ofile = area + "_near.s-moist.csv"
# get lat lon from area_dict
lon, lat = area_dict[area]
ymdhM_list = get_ymdhM(year_list, month_list, hour_list, minute_list)
for ymdhM in ymdhM_list:
year, month, day, hour, minute = ymdhM
ifile_dir="/home/jinkatagi/takane/grib/script/wgrib2/output/" + str(year)
whattime = UTC2JST(year, month, day, hour, minute)
# 0 padding
month_padding = str('{0:02d}'.format(month))
day_padding = str('{0:02d}'.format(day))
hour_padding = str('{0:02d}'.format(hour))
minute_padding = str('{0:02d}'.format(minute))
name_day = str(year) + month_padding + day_padding + hour_padding + minute_padding
tank_value = []
for tank in tank_list:
file_name = "Z__C_RJTD_" + name_day +"00_SRF_GPV_Gll5km_Psw_ANAL_grib2_" + tank + ".txt"
df_tank = pd.read_csv(ifile_dir +"/" + file_name, header=None)
# get tank value
tank_value = df_tank[(df_tank[0] == lon) & (df_tank[1] == lat)][2].values[0]
# append tank value to list
tank_value.append(tank_value)
# writer as csv file
with open(ofile_dir + "/" + "ofile", 'a') as csvfile:
writer = csv.writer(csvfile, delimiter=',')
writer.writerow([whattime, lat, lon, tank_value[0], tank_value[1], tank_value[2]])
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment