查询特定国家道路的Overpass API

问题描述 投票:0回答:2

我正在尝试构建立交桥特定区域中所有“highway=”路线的查询。我一直默认使用 {{bbox}} - 但我真的更喜欢按国家/地区进行操作。

我尝试使用 'nominatimArea:' 而不是 {{bbox}},但出现解析错误 ' 第 8 行:解析错误:')' 预期 - '(' 找到。' 在下面:

/*
This shows the roads in nepal.
*/

[out:json];

(
  way ["highway"~"motorway|trunk|primary|motorway_link|trunk_link|primary_link|unclassified|tertiary|secondary|track|path"]({{nominatimArea:Nepal}});
);

out meta;
>;
out skel qt;

另外...如果我尝试这个...我只能(奇怪地)得到一个区域 - 没办法(也许关系一团糟?)

/*
This shows the roads in nepal.
*/

[out:json];

(area[name="Nepal"];
  way(area) ["highway"~"motorway|trunk|primary|motorway_link|trunk_link|primary_link|unclassified|tertiary|secondary|track|path|residential|service"];
);

out meta;
>;
out skel qt;

返回此一个项目(这是一个区域而不是一种方式)

注意:我知道这是一个很大的查询 - 但我实际上只需要原始 JSON 的 url(如 this) - 而不是实际的立交桥地图结果。

openstreetmap overpass-api
2个回答
9
投票

明白了。

/*
This shows the roads in nepal.
*/

[out:json];

area[name="नेपाल"];
 (way["highway"~"motorway|trunk|primary|motorway_link|trunk_link|primary_link|unclassified|tertiary|secondary|track|path|residential|service|secondary_link|tertiary_link"](area);
);

out meta;
>;
out skel qt;

0
投票

user14696 的答案进行修改,因为通常很难使用本地名称。使用您自己的语言或英语会更方便,大多数国家已经设置了它。

使用特定语言标签和管理级别过滤器

[out:json];
    
area["name:en"="Nepal"][admin_level=2];
//area["name:en"="Gandaki Province"][admin_level=4];
//area["name"="Waling"][admin_level=7];
(
  way["highway"~
    "motorway|trunk|primary|
      motorway_link|trunk_link|primary_link|
      unclassified|tertiary|secondary|
      track|path|residential|service|
      secondary_link|tertiary_link
      "]
    (area);
);
    
out meta;
>;
out skel qt;

注释

  • 有些地方缺少标签,有些地方可能有特定的命名方式,如双语言和三语言。因此,特定语言

    name:xxx
    可能比本地
    name
    标签更有帮助。

  • 在很多地方,同一个城镇名称会使用多个行政级别,因此也可以通过

    admin_level
    进行过滤。

  • 有些查询非常繁重,一开始就在小面积上尝试可能会很快。

  • 保持 OpenStreetMap 页面打开,并查找可能有帮助或可能提供缺失标签的标签。例如:Waling只有

    name
    标签,并且是英文的。而许多其他标签带有尼泊尔(无论如何,这是一个国家级别)

© www.soinside.com 2019 - 2024. All rights reserved.