その3です。多少情報を追加しました。
この内容は、気象庁の台風情報を、ある時点において取得して、そのまま図示するための一連のコードを実行しています。基本は私の練習のためです。
詳しい情報、および速報については、上記リンクで必ず確認してください。
{rvest}を用いて上記Webページより必要なデータをスクレイピングします。
この後{leaflet}にて描画するために、データを処理します。未熟なため非常に汚く効率が悪いです。だれか教えてください。
{leaflet}にてプロットします。また必要に応じて事前にいくつかデータを準備してます。
必要なパッケージをインストールして実行すれば再現できます。ただし、実行時の時刻でデータを取得しますので、台風の中心位置は再現されません。
# 台風情報
library("dplyr")
library("rvest")
library("stringr")
library("leaflet")
trg <- html("http://www.jma.go.jp/jp/typh/") %>% html_table
tbl <- trg[[4]] # テーブルは4番目が台風情報
res <- data.frame(
timing = tbl$X1 %>% str_subset("[0-9][0-9]日[0-9][0-9]時"),
lat = tbl$X2 %>%
str_subset("北緯") %>%
str_extract("[0-9][0-9]\\.[0-9]度") %>%
str_replace("度","") %>%
as.numeric,
lon = tbl$X2 %>%
str_subset("東経") %>%
str_extract("[0-9][0-9][0-9]\\.[0-9]度") %>%
str_replace("度","") %>%
as.numeric,
hpa = tbl$X2 %>%
str_subset("hPa") %>%
str_replace("hPa","") %>%
as.numeric,
c_wspeed = tbl %>%
dplyr::filter(X1 == "中心付近の最大風速") %>%
dplyr::select(X2) %>%
dplyr::rename(c_wspeed=X2),
m_wspeed = tbl %>%
dplyr::filter(X1 == "最大瞬間風速") %>%
dplyr::select(X2) %>%
dplyr::rename(m_wspeed=X2)
)
# 取得した台風20号のデータを表示
#knitr::kable(res)
# leafletで描写
colpal <- colorNumeric(palette = c("darkblue","lightblue"), domain = c(920,1020))
# ポップアップ作成
res <- dplyr::mutate(res, popup = paste(timing,paste("中心気圧",hpa, "hPa"),paste("最大風速",c_wspeed),paste("瞬間最大風速",m_wspeed),sep = "<br/>"))
# 説明用テキスト
text <- paste(paste(Sys.time(),"時点の情報です"),"点をクリックすると情報が出ます","詳細は<a href='http://www.jma.go.jp/jp/typh/'>気象庁の台風情報</a>を確認ください。",sep = "<br/>")
m <- leaflet::leaflet(res) %>%
addTiles() %>%
setView(lng = 139.0000, lat = 35.0000, zoom = 4) %>%
addPolylines(~lon,~lat, color="#039", weight = 3) %>%
addCircleMarkers(
radius = 8, weight = 2,
fillOpacity = 0.5, color = ~colpal(hpa),
stroke = TRUE, popup = ~popup
) %>%
addPopups(lng = 125.0000, lat = 42.0000, text,
option = popupOptions(closeButton = FALSE)) %>%
addLegend(position = "topright", pal = colpal, values = ~hpa,
title = "中心気圧", labFormat=labelFormat(suffix = " hpa"))
## Assuming 'lon' and 'lat' are longitude and latitude, respectively
m
今回は台風を1つのみプロットなので、前回のコードを一部修正して、新たに軌道と中心気圧による色の変化(&凡例による表示)を追加しました。中心気圧によって円のサイズを変えようかと思ったのですが、暴風域と勘違いしてしまう可能性があったので見送っています。
中心気圧の色の変化について、あんまり変わってないように見えますが、これは中心気圧があまり変化しないと予報が出ているからです。実際は920でdarkblue、1020でlightblueに設定しています。
知人から「過去のデータから予想進路を自分で導いてはどう?」とコメントをもらいましたが、それができるなら多分別の仕事してます、はい。
何かアイデアがありましたら、お願いします。