Skip to content

地名の指定 ​

today tomorrow weekly fortnight 3h 6h 12h 24h は、引数の取り方が 2 通りあります。

座標 ​

緯度と経度を 2 つ渡します。区切りはスペースでもカンマでも構いません。

sh
bunx otenki-cli today 35.69 139.69
bunx otenki-cli today 35.69,139.69

カンマ区切りは 1 引数なので、シェル側の引用符は不要です。数字が 2 つ揃えば座標として扱われます。

1 つだけ数字を渡すと、座標とは見なされません。bunx otenki-cli today 41 はたいてい打ち間違いなので、エラーにしています。

console
$ bunx otenki-cli today 41
✗ 座標の指定が不正です: 41(緯度と経度を2つ指定してください)

範囲外の座標も同じところで弾きます。緯度は -90〜90、経度は -180〜180 です。

console
$ bunx otenki-cli today 35.69 539.69
✗ 座標の指定が不正です: 35.69, 539.69(緯度は-90〜90、経度は-180〜180で指定してください)

地名 ​

地名はそのまま渡します。2 つ以上の単語に分かれた入力は「地名 + 絞り込み」です。横浜市 神奈川 なら 横浜市 が地名で 神奈川 が条件になります。

sh
bunx otenki-cli today 函館
bunx otenki-cli today 横浜市 神奈川

単語ごとに Geocoding API に投げる前に、県 都 府 市 町 村 のサフィックスを両方向に振ります。県 都 府 市 町 村 の順に付け足し、末尾のサフィックスは剥がした版も試します。最大 14 通りの問い合わせを並行で投げて、結果を 1 つにまとめます。

地名と条件の順序は逆でも構いません。神奈川 横浜市 も 横浜市 神奈川 も両方の並びで問い合わせてから選びます。残った単語は候補の絞り込みに使われるので、横浜 青森 は神奈川の横浜ではなく青森の横浜を指します。

Geocoding API は、1 レコードにつき名前 1 つしか索引しません。同じ町でも、索引の綴り方次第で引けたり引けなかったりします。

クエリそのまま備考
函館ヒットなし索引名は 函館市
仙台市ヒットなし索引名は 仙台
横浜別の場所青森の 4,412 人の集落
高崎別の場所5 件とも群馬県の外
東京都ヒットそのまま 引ける

このラダーのおかげで、横浜 は 横浜市 神奈川県 に、高崎 は 高崎市 群馬県 に落ちます。

英字の地名にはこの処理は不要です。Tokyo に 県 を付ける意味がないため、ラダーは日本語の文字を含む場合だけ組まれます。

候補が複数あるとき ​

地名は重複します。横浜 には神奈川のほか、青森・福岡・熊本にも同名の自治体があります。

既定では順位の一番上が選ばれます。首都を最優先、次に集落地(公園・駅・島は下)、その中で人口の多い順、それでも同点なら feature code と名前順で決まります。

console
$ bunx otenki-cli locate 横浜
横浜市 神奈川県
35.43333, 139.65000
PPLA · 神奈川県 · 日本 · 標高21m

全部の候補を見たい場合は --all を付けます。

sh
bunx otenki-cli locate 横浜 --all

自分で選びたい場合は --pick です。fzf が必要で、Ctrl-C で閉じると順位の一番上の場所に戻ります。

sh
bunx otenki-cli locate 横浜 --pick

47 都道府県 ​

素の県名で引けるのは 47 個中 41 個です。残りの 6 つは県名と同名の市町村が無いので、付けるサフィックスがありません。

県代わりに使う地名
岩手盛岡市
群馬前橋市
愛知名古屋市
滋賀大津市
愛媛松山市
高知座標を指定

高知 は 高知市 でも 高知県 でも引けません。この geocoder の索引に載っていないためで、座標を渡してください。

sh
bunx otenki-cli today 32.98880 132.55970

キャッシュ ​

解決済みの地名は 30 日間、$XDG_STATE_HOME/otenki/places.json に保存されます。XDG_STATE_HOME が無ければ $HOME/.local/state です。

同じ場所を 2 回目以降引くとネットワークに出ないので、1.5 秒程度から 0.08 秒程度に縮みます。

console
$ bunx otenki-cli cache --clear
キャッシュを消去しました

保存先を覗くには jq が便利です。

sh
jq 'keys' "$XDG_STATE_HOME/otenki/places.json"

地名は動きませんが、地名一覧の回答は変わることがあります。TTL を迎えるたびに選び直します。

MIT ライセンス · データは Open-Meteo と GeoNames