私はウェブサイトを開発しており、ユーザーの入力に応じて指定された領域のすべての境界を取得する必要があります。たとえば、ユーザーが x という都市の境界を知りたいとします。openstreetmap からどのように取得すればよいですか? xapi と浸透について聞いたことがありますが、どこにも例が見つかりませんでした。ありがとう!
1 に答える
ここで JavaScript を使用してこれを行うことに挑戦しました: https://github.com/pgkelley4/city-boundaries-google-maps
基本的には、OpenStreetMap が都市の境界を保存する関係を見つけることになります。
次のクエリのようなものを使用して、面積を取得しました。
area[name="Seattle"]["is_in:state_code"="WA"];foreach(out;);
または、何も見つからない場合は、ノードを調べて関連する領域を見つけます。
node[name="New York"][is_in~"NY"];foreach(out;is_in;out;);
リレーション ID を取得するには、上記のクエリで返されたエリア ID から 3600000000 を引きます。次に、その ID からリレーションを取得します。
(relation(" + relationID + ");>;);out;
ここでクエリをテストできます。私のものはおそらく改善される可能性があります: http://overpass-api.de/query_form.html
それが都市の境界を取得する方法です。リレーションシップ内では何も整っていないため、それらを処理することは別の問題です。それについては、私の GitHub プロジェクトと http://wiki.openstreetmap.org/wiki/Relation:multipolygon/Algorithmを参照してください。
また、都市境界の OpenStreetMap データがむらがあることにも注意してください。私が知る限り、ダラスやロサンゼルスのような大都市にはありません。