デジタル庁 アドレス・ベース・レジストリ(ABR)の公式マスタ(都道府県・市区町村・町字)で日本の住所文字列を分解・正規化する。全国47都道府県・1,918市区町村・町字レコードを使い、住所から都道府県・市区町村(全国地方公共団体コード)・町字(町字ID)・番地を切り出す。表記ゆれ(漢数字/全角/半角の丁目、郡名省略、都道府県名省略)を吸収。APIキー・ログイン不要。住居表示の番地・号の正規化やジオコーディング(緯度経度)は対象外。
gsi-geocode
国土地理院の公開API(認証不要)で、住所から緯度経度、緯度経度から標高、緯度経度から住所(市区町村+町丁目)を引く。住所検索は曖昧一致で件数が多く、先頭が正解とは限らない点まで扱う。地図の描画・経路・郵便番号検索は対象外(郵便番号はzipcode-lookup、住所の正規化はaddress-normalize)。
含まれるファイル(11)
- SKILL.md6.6 KB
- lookup.py4.9 KB
- tests/fixtures/elev_sea.json36 B
- tests/fixtures/elev_tokyo.json59 B
- tests/fixtures/geocode_empty.json2 B
- tests/fixtures/geocode_tokyotower.json8.0 KB
- tests/fixtures/muni_excerpt.js293 B
- tests/fixtures/rev_london.json3 B
- tests/fixtures/rev_sapporo.json64 B
- tests/fixtures/rev_shiba.json61 B
- tests/test_lookup.py3.0 KB
SKILL.md(原文)
インストールする前に、エージェントに与えられる指示の中身を確認できます。
gsi-geocode
国土地理院の公開API3つを使い、住所と緯度経度を相互に引き、標高を求めるスキル。APIキー・登録は不要。
実測日: 2026-10-04。以下のURL・応答・件数はすべて同日の実測で確認。
エンドポイント(すべてGET、認証なし)
| 用途 | URL | 応答 |
|---|---|---|
| 住所→緯度経度 | https://msearch.gsi.go.jp/address-search/AddressSearch?q=<住所> | GeoJSON風の配列。geometry.coordinates は [経度, 緯度] |
| 緯度経度→標高 | https://cyberjapandata2.gsi.go.jp/general/dem/scripts/getelevation.php?lon=<経度>&lat=<緯度>&outtype=JSON | {"elevation": 3.6, "hsrc": "1m(レーザ)"} |
| 緯度経度→住所 | https://mreversegeocoder.gsi.go.jp/reverse-geocoder/LonLatToAddress?lat=<緯度>&lon=<経度> | {"results": {"muniCd": "13103", "lv01Nm": "芝公園四丁目"}} |
| 市区町村コード→名称 | https://maps.gsi.go.jp/js/muni.js | JavaScript(1,919行)。逆ジオコーダの muniCd を名称に直すために必要 |
標高の公式説明(パラメータと ----- の意味): https://maps.gsi.go.jp/development/elevation_s.html 。サーバに過度の負担をかけないこと、予告なく遮断・提供停止されうることが明記されている。
使い方(ヘルパー)
python3 gsi-geocode/lookup.py geocode "東京都港区芝公園4-2-8" --limit 5
python3 gsi-geocode/lookup.py elevation --lat 35.6812 --lon 139.7671
python3 gsi-geocode/lookup.py reverse --lat 35.658649 --lon 139.745468
lookup.py は外部パッケージ不要。結果はJSONで出る。
実測で確認したこと (2026-10-04)
- 東京駅付近(35.6812, 139.7671)の標高は 3.6m、データ元は「1m(レーザ)」。富士山頂付近(35.3606, 138.7274)は 3770.6m。北海道(札幌)は「5m(レーザ)」で、20.2m。
- 「東京都港区芝公園4-2-8」(東京タワーの住所)は「東京都港区芝公園四丁目2番」の1件で、緯度経度は (35.658649, 139.745468)。番地までは解決するが、号(8)は落ちる。
- 逆ジオコーダに (35.658649, 139.745468) を渡すと、
muniCd13103 とlv01Nm「芝公園四丁目」が返り、muni.jsで「東京都港区」に直せる。
実測で確認した罠
- 住所検索は関連度順ではない。 「東京タワー」は50件返り、先頭は「北海道札幌市東区」、本物の「東京タワー」は最後(50番目)。曖昧一致が「東」で拾うため。先頭を採ると北海道の座標を返す。ヘルパーは前方一致を先に並べ、
prefix_matchとtotalを返す。 - 件数に上限がない。 「駅」だけで12,755件、応答は約2.2MB。短い語で検索しない。ヘルパーは
--limitで返却数を絞る(取得自体は全件)。 - 郵便番号は引けない。 「100-0001」「〒100-0001」は0件。郵便番号はzipcode-lookupを使う。
- 標高の「データなし」は文字列
-----。 海上(140.5E, 34.5N)・国外(ロンドン)・不正な入力(lon=abc)のすべてが HTTP 200 で{"elevation":"-----","hsrc":"-----"}。数値として読むと壊れる。入力ミスとデータなしを区別できない。 - 逆ジオコーダの「該当なし」は空の
{}。 国外・不正入力ともHTTP 200。エラーにならない。 - 市区町村コードの桁が合わない。 逆ジオコーダは北海道を
01101と返すが、muni.jsのキーは先頭の0がない1101。そのまま引くと見つからない(ヘルパーは先頭の0を外して再検索)。muni.jsの北海道の区は「札幌市 中央区」のように全角空白が入る。 - 応答の数字は全角。
titleは「千代田1番」のように全角数字。比較はNFKC正規化してから。 - 逆ジオコーダは都道府県名を返さない。
muniCdと町丁目だけなので、都道府県と市区町村はmuni.jsで補う。
注意(必ず伝える)
- 出典を書く: 「国土地理院」。国土地理院コンテンツ利用規約(www.gsi.go.jp/kikakuchousei/kikakuchousei40182.html)と出典の記載(www.gsi.go.jp/LAW/2930-meizi.html)を参照。www.gsi.go.jp はTLSの旧式再ネゴシエーションを要求し、新しいOpenSSLのcurlでは
unsafe legacy renegotiation disabledで接続できない(2026-10-04実測)。ブラウザやweb取得ツールでは開ける。 - 標高は地点の地表面の標高(元データはDEM)で、建物の高さは含まない。数値の桁は
hsrcで決まる(1m・5mのレーザは0.1m、10mは1m)。 - 測量・法的な根拠には使えない。位置は住所の代表点で、建物の正確な位置ではない。
- 連続して大量に叩かない(公式の注意)。
失敗時の対応
- 検索が0件: 郵便番号・誤字・番地の書き方を疑う。「都道府県+市区町村+町名+番地」か施設名で再検索。
- 何件も返る: 先頭を採用しない。都道府県・市区町村を足して絞り、候補をユーザーに見せる。
- 標高が
-----: 「データなし」と伝える。海上か国外か入力ミスかは分からない。緯度経度の順(lon, lat)を確認。 - 逆ジオコーダが
{}: 国外・海上の可能性。推測で住所を作らない。 - ネットワークエラー:
{"error": ...}が返る。少し待って再試行。
English summary
Looks up addresses and coordinates with the Geospatial Information Authority of Japan's public APIs (no key): address to lat/lon, lat/lon to elevation, and lat/lon to municipality and block via muni.js. Measured 2026-10-04 traps: the address search is fuzzy and unranked (the real "東京タワー" is the 50th of 50 hits, the first is a Sapporo ward), has no result cap (a one-character query returned 12,755 hits, about 2.2 MB), cannot look up postal codes, and the elevation and reverse-geocoder endpoints return "no data" with HTTP 200 ("-----" string and {}). Reverse-geocoder codes for Hokkaido have a leading zero (01101) that muni.js keys do not (1101). Attribute the source to the GSI.
レビュー
まだレビューはありません。使ってみた感想をお寄せください。
同じリポジトリのスキル
概要と使いどころ
環境省の大気汚染物質広域監視システム(AEROS・そらまめくん)から、PM2.5・光化学オキシダントなどの測定値(速報値)を取得する。全国約1,600測定局の最新1時間値・測定局ごとの今日/7日分・都道府県ごとの月次履歴に対応。「今のPM2.5」「空気が悪い?」の質問に答える。APIキー・ログイン不要。確定値(過去の公式統計)は対象外。
気象庁の雨雲レーダー(解析雨量・降水ナウキャスト)タイルから、今の雨の強さとこの後30〜60分の見通しを調べる。今雨降ってる、雨雲、あとどれくらいで雨、降水ナウキャストの質問に対応。APIキー・ログイン不要。明日以降の天気はjma-weather、警報・地震・津波はbosai-alertを使う。
気象庁のアメダス(地域気象観測システム)最新観測値を取得する。今の気温・湿度・風・降水量・気圧を全国約1,300観測所から調べる。「今の気温」「今の雨量」「今の風」の質問に対応。APIキー・ログイン不要。予報はjma-weather、雨雲の動きはamagumo、警報はbosai-alertを使う。
青空文庫の全作品カタログ(公式公開CSV)で著作権切れの文学作品を検索し、本文をプレーンテキストで取得する。タイトル部分一致・著者名・作品IDでの検索に対応し、作品ID・タイトル(読み)・著者・文字遣い種別・著作権フラグ・初出・図書カードURLを返す。APIキー・ログイン不要。書誌の網羅検索はndl-books、図書館の蔵書はcalil-booksを使う。現行の書籍の購入・在庫は対象外。
気象庁の防災情報(地震速報・震度詳細、気象警報・注意報、津波情報)を公開JSONから取得する。地震、震度、警報、注意報、津波の確認に対応。APIキー・ログイン不要。ふだんの天気予報は対象外(jma-weatherを使う)。