2

OSM で Way の ID を指定して、(緯度、経度) のペアのリストを取得したいと考えています。

標準 API を介して方法を要求すると、ノード ID のリストが取得されます。

$ curl 'http://www.openstreetmap.org/api/0.6/way/158602261'
<?xml version="1.0" encoding="UTF-8"?>
<osm version="0.6" ...>
 <way id="158602261" visible="true" ...>
  <nd ref="295505187"/>
  <nd ref="1736599935"/>
  <nd ref="295505112"/>
  ...
</osm>

次に、これらのノードごとにフォローアップ クエリを実行できます。

$ curl 'http://www.openstreetmap.org/api/0.6/node/295505187'
<?xml version="1.0" encoding="UTF-8"?>
<osm version="0.6" ...>
  <node id="295505187" visible="true" ... lat="37.7702484" lon="-122.5107188"/>
</osm>

ただし、これには、パス内のノードごとに 1 つずつ、多数の API リクエストが必要になります。

より少ない API 呼び出しを使用して緯度/経度のリストを取得することは可能ですか? 1回の通話が理想的です。

4

3 に答える 3

4

URL に/fullを追加するだけです (例: http://www.openstreetmap.org/api/0.6/way/158602261/full ) 。

于 2014-08-14T06:38:05.413 に答える
2

これが従来の OSM API で実行できるかどうかはわかりませんが、Overpass APIの recurse down ステートメントを使用して実行できます。

$ curl 'http://overpass.osm.rambler.ru/cgi/interpreter?data=%5Bout:json%5D;(way(158602261);%3E;);out;'
{
  "version": 0.6,
  "generator": "Overpass API",
  ...
  "elements": [

{
  "type": "node",
  "id": 30677708,
  "lat": 37.7712040,
  "lon": -122.5108280
},
{
  "type": "node",
  "id": 30677709,
  "lat": 37.7730278,
  "lon": -122.4715596
},
...
{
  "type": "way",
  "id": 158602261,
  "nodes": [
    295505187,
    1736599935,
    295505112,
    295505186,
    ...
  ]
}
  ]
}
于 2014-08-13T22:12:53.833 に答える
0

1 つのウェイ ID に対して緯度と経度のペアのリストを明示的に要求したため、Overpass API CSV 出力モードを使用できます。

[out:csv(::lat,::lon;false)];
way(158602261);>;out;

(見出しは「false」で抑止)

結果:

37.7712040  -122.5108280
37.7730278  -122.4715596
37.7733457  -122.4652858
37.7746245  -122.4547306
37.7664503  -122.4531098
...

オーバーパス ターボ リンク: http://overpass-turbo.eu/s/6NG

于 2015-01-03T08:45:56.673 に答える