Les typhons se sont-ils produits si souvent lorsque vous étiez enfant? Un typhon est-il arrivé au Japon vers octobre? Il y avait une question vague. Je voulais pouvoir résoudre cette question en utilisant les données sur les typhons publiées par l'Agence météorologique, alors j'ai essayé différentes choses.
Obtenu à partir d'un site de catalogue de données exploité par le gouvernement.
Prévisions météo_Prévisions météorologiques / Matériaux des typhons Utilisez "Données CSV de la table de position des typhons" sur cette page.
Dans cet article, j'ai utilisé les données CSV de 2001 à 2019 publiées dans le lien.
L'en-tête des données CSV était japonais, je l'ai donc changé en anglais. Tout à fait approprié
year,month,day,hour(UTC),typhoon_no,typhoon_name,rank,latitude,longitude,central_pressure,max_wind_speed,50KT_LDD,50KT_LD,50KT_MA,30KT_LDD,30KT_LD,30KT_MA,landing
Je ne l'ai pas vraiment conçu
import folium
import pandas as pd
pd.options.display.precision = 3
# Année de début et de fin
start_year = 2001
end_year = 2019
# Processus sur une base annuelle
for year in range(start_year, end_year+1):
print('# ' + str(year) + ' year start')
#Lecture des données
df = pd.read_csv('./typhoon/table' + str(year) + '.csv',encoding="SHIFT-JIS")
typhoon_names = list(df['typhoon_name'])
latitude = list(df["latitude"])
longitude = list(df["longitude"])
landing = list(df["landing"])
map = folium.Map(location=[35.6611098,139.6953576], zoom_start=3)
target_typhoon = typhoon_names[0]
target_location = []
color = 'blue'
typhoon_count = 0
#Processer les données CSV ligne par ligne
for lt, lo, name, land in zip(latitude, longitude, typhoon_names, landing):
# Si le nom du typhon change, écrivez les informations du typhon en cours de traitement sur la carte
if name != target_typhoon:
map.add_child(folium.PolyLine(locations=target_location, color=color))
target_location = [[float(lt), float(lo)]]
target_typhoon = name
typhoon_count += 1
else:
target_location.append([float(lt), float(lo)])
map.add_child(folium.PolyLine(locations=target_location, color=color))
map.save('./output/' + str(year) + '_typhoon_location.html')
print('# Number of typhoon : ' + str(typhoon_count))
print('# ' + str(year) + ' year end')
Le résultat de la sortie est publié chaque année dans le dossier "output". Lorsque vous ouvrez le HTML de sortie, il ressemble à ceci. J'ai créé un GIF qui affiche l'image de sortie de 2001 à 2019.
Après tout, je veux faire ressortir le typhon qui a atterri au Japon. Il y avait un élément appelé "atterrissage" dans l'élément final des données. Il vaut 1 s'il a atterri et 0 s'il ne l'a pas fait. Utilisez ces données pour le codage couleur.
Il est à noter que ce "débarquement" n'est pas "au Japon". Il fallait donc juger s’il s’agissait du Japon ou non.
import folium
import pandas as pd
pd.options.display.precision = 3
# Année de début et de fin
start_year = 2001
end_year = 2019
# Coordonnées des bords nord, sud, est et ouest du Japon
east_end = 153.5911
west_end = 122.5601
north_end = 45.3326
south_end = 20.2531
def is_japan_randing(lt, lo, randing):
if south_end <= lt and lt <= north_end and west_end <= lo and lo <= east_end and randing == 1:
return True
else:
return False
# Processus sur une base annuelle
for year in range(start_year, end_year+1):
print('# ' + str(year) + ' year start')
#Lecture des données
df = pd.read_csv('./typhoon/table' + str(year) + '.csv',encoding="SHIFT-JIS")
typhoon_names = list(df['typhoon_name'])
latitude = list(df["latitude"])
longitude = list(df["longitude"])
landing = list(df["landing"])
map = folium.Map(location=[35.6611098,139.6953576], zoom_start=3)
target_typhoon = typhoon_names[0]
target_location = []
typhoon_count = 0
color = 'blue'
#Processer les données CSV ligne par ligne
for lt, lo, name, land in zip(latitude, longitude, typhoon_names, landing):
# Si le nom du typhon change, écrivez les informations du typhon en cours de traitement sur la carte
if name != target_typhoon:
map.add_child(folium.PolyLine(locations=target_location, color=color))
target_location = [[float(lt), float(lo)]]
target_typhoon = name
typhoon_count += 1
color = 'blue'
else:
target_location.append([float(lt), float(lo)])
if is_japan_randing(lt, lo, land):
color = 'red'
map.add_child(folium.PolyLine(locations=target_location, color=color))
map.save('./output/' + str(year) + '_typhoon_location.html')
print('# Number of typhoon : ' + str(typhoon_count))
print('# ' + str(year) + ' year end')
Le jugement au Japon se fait en "is_japan_randing". Je pense que c'est très difficile, mais la latitude se situe-t-elle dans la plage la plus au nord et la plus au sud du Japon? La longitude est-elle la plage la plus à l'ouest et à l'est? Est jugé.
Seule la ligne atterrissant au Japon est devenue rouge. Il existe des lignes assez proches de Kyushu et Honshu. Vous trouverez ci-dessous une citation de Weather.com.
L'atterrissage d'un typhon signifie que le centre du typhon atteint les côtes de Hokkaido, Honshu, Kyushu et Shikoku. (Okinawa ne s'appelle pas un atterrissage d'un typhon, mais un passage.) Un typhon qui approche signifie entrer dans un rayon de 300 km.
En pensant de cette façon, vous pouvez voir à nouveau que cette ligne est la coordonnée du centre.
Un tel typhon a-t-il atterri au Japon ces dernières années? J'ai essayé cela à partir de la question, mais il semble que le nombre de débarquements n'ait pas beaucoup changé depuis 2001. Ensuite, je vais essayer de visualiser l'ampleur du typhon.
Recommended Posts