テーマ
地名の指定
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 横浜 --pick47 都道府県
素の県名で引けるのは 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 を迎えるたびに選び直します。