http://wiki.openstreetmap.org/wiki/Overpass_API/Overpass_QLによると、 クエリは値とキーの両方で正規表現を使用できます。値に正規表現を使用しても問題はありませんが、キーに問題があります。
上記で参照した wiki の例には、(他の例の中でも) 次のように書かれています。
/* finds addr:* tags with value exactly "Foo" */
node[~"^addr:.*$"~"^Foo$"];
これは、キーと値に正規表現を使用する例です。
私が興味を持っているのはname
鍵です。具体的にはname:en
鍵。名前で検索するにはいくつかの問題があります。name:en
すべての名前が英語であるとは限りません。名前が英語でないノード/ウェイ/リレーションについては、英語バージョンの名前のタグ があるという保証はありません。
一般的に、名前が英語になるか、name:en
タグがあるかを事前に知る方法はありません。name
またはだけname:en
を求めると、ヒットしないリスクがあります。(もちろん、両方を検索しても成功する保証はありません。)
name
失敗することはわかっているがname:en
成功する場合があります。それが私のテストケースです。これを使用して overpass-api.de/api/interpreter にクエリを実行できます。
[out:json][timeout:25][bbox:33.465530,36.156006,33.608615,36.574516];
(
node[name~"duma",i][place];
way[name~"duma",i][place];
>;
relation[name~"duma",i][place];
node["name:en"~"duma",i][place];
way["name:en"~"duma",i][place];
>;relation["name:en"~"duma",i][place];
);
out center;
高架道路で見る
と問題なく動作します (「duma」は では見つかりませんがname
、 で見つかりname:en
ます) が、長くてやや反復的です。
name
とタグを含む正規表現を使用したいのですname:en
が、サーバーがクエリを理解していないか、単に間違った正規表現を使用しています。
wikiに示されている例を使用して:node[~"^addr:.*$"~"^Foo$"]
私は試しました:
[~"name|name:en"~"duma",i]
[~"name.*"~"duma",i]
[~"^name.*$"~"duma",i]
および他のいくつか。[~"^name:.*"~"duma",i]
何かが返されるかどうかを確認するためだけに、例を模倣しました。
overpass-api.de はキーの正規表現を認識しますか、それとも正規表現が間違っているだけですか? overpass-api.de からエラーは発生しません。bbox の座標と空の結果だけです。通常、不適切な形式のクエリへの対応は非常に厳格です。前もって感謝します。