Skip to content

Instantly share code, notes, and snippets.

@kun432
Created November 1, 2022 06:22
Show Gist options
  • Save kun432/8438365699b7346238ef1fb9659e4d08 to your computer and use it in GitHub Desktop.
Save kun432/8438365699b7346238ef1fb9659e4d08 to your computer and use it in GitHub Desktop.
気象庁のJSONから特定地点の風向き・風速を取得するサンプル
#!/usr/bin/env bash
function usage() {
echo "$0 POINT_NAME"
exit 1
}
if [ $# != 1 ]; then
usage
fi
WIND_DIRECTION=("静穏" "北北東" "北東" "東北東" "東" "東南東" "南東" "南南東" "南" "南南西" "南西" "西南西" "西" "西北西" "北西" "北北西" "北")
POINT_NAME=$1
TARGET_DATE=$(date +%Y%m%d%H0000)
POINT_IDS=()
POINT_IDS+=($(curl -s https://www.jma.go.jp/bosai/amedas/const/amedastable.json | jq -r '. | to_entries[] | select(.value.kjName == "'"$POINT_NAME"'") | .key'))
NUM_POINT_IDS=${#POINT_IDS[@]}
if [ $NUM_POINT_IDS -eq 0 -o $NUM_POINT_IDS -gt 1 ]; then
echo "観測所名が存在しないか、同じ名前の観測所が複数存在しています(未対応)"
exit 2
fi
# 全国系を使ってますが、地点系のほうがベターかなと思います。
TARGET_DATA=$(curl -s https://www.jma.go.jp/bosai/amedas/data/map/${TARGET_DATE}.json | jq -c '."'"${POINT_IDS[0]}"'"')
if [ -z "${TARGET_DATA}" ]; then
echo "データが見つかりませんでした"
exit 3
fi
D=$(echo $TARGET_DATA | jq '.windDirection[0]')
S=$(echo $TARGET_DATA | jq '.wind[0]')
echo "${POINT_NAME} の風向きは${WIND_DIRECTION[$D]}、風速 $S メートルです"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment