初版公開日:
最終更新日:
基本の抽出
Overpass Turboクエリの基本は、「どのタグを持つOSMオブジェクトを探すか」を指定することです。OpenStreetMapでは、オブジェクトの情報はすべてkey=value形式のタグで意味付けされています。
本稿では、基本的な抽出方法から順番に紹介します。
本稿で提示するレシピは、各自で必要なkeyおよびvalueに置き換えてください。
ノードの抽出
node["key"="value"]; out meta;
keyの値がvalueのnodeをすべて抽出する。
詳細情報(meta)を取得する。ウェイの抽出
way["key"="value"]; (._;>;); out meta;
(._;>;)によってwayの各頂点のnode情報も取得する。OverpassTurbo上の地図でwayをレンダリングするには必要。
リレーションの抽出
relation["key"="value"]; (._;>;); out meta;
nwrによる抽出
nwr["key"="value"]; (._;>;); out meta;
// 使用可能なキーワード nwr nw nr wr
Node+Way(nw)のような組み合わせも可標準的なクエリの姿
OverpassTurboでクエリを実行する際は、以下の状態で実行することが推奨される。
[timeout:25];
nwr["key"="value"]({{bbox}});
(._;>;);
out meta;
({{bbox}})により画面で表示している範囲に抽出対象を限定。
out構文(後述)により後続作業で必要な形式に変更が可能タグによる抽出
キーの指定
node["government"]; out meta;
キーと値の指定
node["office"="it"]; out meta;
正規表現による抽出
通常、キーを厳密に指定し、値については柔軟な検索を適用します。部分一致、前方一致、後方一致、完全一致、OR検索、除外検索など、Overpass Turboで使える正規表現をサンプルクエリ付きで紹介します。
// name(指定したキー)の値の一部に「北村」を含む(部分検索)
node["name"~"北村"]; // ["name"~".*北村.*"]とする必要はありません
node["name"~"北.*衣"]; // 「北…衣」という並びを含む(…は任意の文字列)
// 指定値で始まる(先頭一致検索)
node["name"~"^合同会社"];
// 指定値で終わる(末尾一致検索)
node["name"~"由衣$"];
// 完全一致検索。^$の合わせ技
node["name"~"^合同会社北村由衣$"];
// 「北村」で始まり、途中は何文字でも可(0文字以上)、「由衣」で終わる
node["name"~"^北村.*由衣$"];
// 除外検索(「由依」を含まない)
node["name"!~"由依"];
// 大文字小文字を区別しない
node["name:en"~"yui-kitamura",i];
// パイプ|で繋いだ候補のOR条件。この例では「白猫」OR「灰猫」OR「黒猫」
node["name"~"(白|灰|黒)猫"];
// 英字を1文字以上含む
node["name"~"[a-zA-Z]"];
// 半角数字を含まない
node["name"!~"[0-9]"];
Overpassは[POSIX Extended 正規表現]を使用しています。興味がある方はインターネットの海へどうぞ…。
キーへの正規表現の適用
一方で、キー側にも正規表現は適用可能です。
// キーの前に~を付与する
node[~"addr:.*"~"清瀬"];
addr:cityに限らず、addr:fullやaddr:streetなど意図しないタグへの値混入検知に活用できる。
タグが存在するオブジェクト
node["name"]["name:ja"]["name:en"]; out meta;
( node["name"]; node["name:ja"]; node["name:en"]; ); out meta;
タグが存在しないオブジェクト
node[!"name"]; out meta;
!を付けることで無いことを抽出しますnode["name"][!"name:ja"]; out meta;
nameは有るが、name:jaが無い」を検索する例node["name"~"^合同会社"][!"name:ja"]; out meta;
nameが合同会社で始まっているが、name:jaを持たないノードを検索する例範囲を限定した抽出
現在の表示範囲
nwr["key"="value"]({{bbox}});
(._;>;);
out meta;
bboxでOverpassTurboの地図ビューの範囲に絞りますareaによる抽出
area["boundary"="administrative"]["admin_level"="7"]["name"="清瀬市"]->.a; nwr(area.a)["addr:province"]; (._;>;); out meta;
特定の地域内にあるamenity(学校や病院など)を抽出するのに使える。
日本の行政区分とadmin_level
上記クエリで求められるadmin_levelと日本の行政区分の対応は以下の表の通り。
| admin_level | 行政区分 | addr:* | name値の例 |
|---|---|---|---|
| 2 | 国 | addr:country | 日本 |
| 4 | 都道府県 | addr:province | 東京都 |
| 5 | 振興局 | - | |
| 6 | 郡 | addr:county | 中巨摩郡 |
| 7 | 市町村・東京23区 | addr:city | 千代田区 |
| 8 | 政令指定都市の区 | addr:suburb | 浪速区 |
| 9 | 町・大字 | addr:quarter | 大字北京田 |
| 10 | 小字・丁目 | addr:neighbourhood | 野塩五丁目 |
周辺範囲探索
指定座標または指定POIからの周辺範囲(円形)を探索することができます。
経緯度指定
// 指定座標(北緯35.7,東経139.8)から半径500m以内のレストランを抽出する node(around:500,35.68095,139.76699)["amenity"="restaurant"]; out meta;
POI基準の探索
// 1行目の検索結果のPOI(複数の結果が返って良い)から半径200m以内のレストランを抽出する node["railway"="station"]["name"~"甲府"]->.s; node(around.s:200)["amenity"="restaurant"]; out meta;
更新履歴による抽出
nwr(newer:"2026-07-14T15:00:00Z"); // UTC時刻(日本時間から9時間遅れている)= 左記サンプルは日本時間7/15未明0時 (._;>;); out meta;
["tag"]等との組み合わせ可。
※逆のolderは存在しない
指定期間内の編集情報
nwr
(changed:"2026-07-12T00:00:00","2026-07-13T00:00:00")
({{bbox}});
(._;>;);
out meta;
ユーザーによる抽出
nwr(user:"myId")(newer:"2026-07-14T15:00:00Z"); // 表示名であれば他のユーザーの抽出も当然に可能 (._;>;); out meta;
出力方法
out
nwr["building"][!"building:levels"]; out;
件数の確認や、別ツールでIDがあれば別途必要なデータを抜き出せる場合に利用できる。
out geom
nwr["name"="合同会社北村由衣"]; out geom;
地図にするための基本の出力。GeoJSONへの応用が可能な形式。
out center
nwr["building"][!"building:levels"]; out center;
建物を面ではなく点で把握して分布を見るときなどに利用できる
out meta
nwr["source"="KSJ2"][!"addr:neighbourhood"]; (._;>;); out meta;
out qt
nwr["source"="KSJ2"][!"addr:neighbourhood"]; (._;>;); out meta center qt;
qt。
他のout条件と組み合わせ可能