gpt4 book ai didi

openstreetmap - 查询立交桥 API 查询有过桥/铁路的道路

转载 作者:行者123 更新时间:2023-12-03 02:49:47 25 4
gpt4 key购买 nike

我正在尝试通过 Overpass API 查询 OpenStreetMaps。

我想查询的是边界框内的道路,该边界框上方有任何类型的桥梁交叉,例如铁路桥等。

我发现这个例子,它正是我所需要的:http://maxheight.bplaced.net/overpass/map.html

所以,我收到的查询如下所示:

铁路桥梁 View in Overpass Turbo

<osm-script output="json" timeout="25">

<!-- Railway bridges -->
<query type="way">
<has-kv k="bridge" regv="^(yes|viaduct)$"/>
<has-kv k="railway" />
<bbox-query {{bbox}}/>
</query>

<!-- Find roads below the above railway bridges -->
<query type="way">
<around radius="0" />
<has-kv k="highway" regv="^((primary|secondary|tertiary|trunk)(_link)?|service|residential|unclassified)$"/>
<has-kv k="maxheight" modv="not" regv="." />
<has-kv k="maxheight:physical" modv="not" regv="." />
<has-kv k="tunnel" modv="not" regv="." />
</query>

<union>
<item />
<recurse type="way-node"/>
</union>

<!-- print results -->
<print mode="body"/>
<recurse type="down"/>
<print mode="skeleton" order="quadtile"/>
</osm-script>

其他桥梁 View in Overpass Turbo

<osm-script output="json" timeout="25">

<!-- Bridges -->
<query type="way">
<has-kv k="bridge" regv="^(yes|viaduct)$"/>
<has-kv k="railway" modv="not" regv="." />
<bbox-query {{bbox}}/>
</query>

<!-- Find roads below the above bridges -->
<query type="way">
<around radius="0" />
<has-kv k="highway" regv="^((primary|secondary|tertiary|trunk)(_link)?|service|residential|unclassified)$"/>
<has-kv k="maxheight" modv="not" regv="." />
<has-kv k="maxheight:physical" modv="not" regv="." />
<has-kv k="tunnel" modv="not" regv="." />
</query>

<union>
<item />
<recurse type="way-node"/>
</union>

<!-- print results -->
<print mode="body"/>
<recurse type="down"/>
<print mode="skeleton" order="quadtile"/>
</osm-script>

问题是第二个查询。它应该找到穿过道路的桥梁,以及下面的附属道路。

它现在所做的是返回除铁路桥之外的所有桥梁 - 这意味着它会突出显示下面有自行车道的道路、穿越湖泊的道路 - 这是不应该的。

我今天注意到了这一点,当我开车经过它突出显示的一个位置时,发现它只是路下的一条自行车道。

最佳答案

关于上述提议方法的一些评论:

  • Maxheight Map想要帮助找到缺少最大高度信息的街道,这对于卡车路线非常重要。如果我的用例正确,您想了解桥梁穿过的所有道路。目前,您的查询不会显示任何已维护最大高度信息的道路。如果您在查询中删除对“maxheight”和“maxheight:physical”标签的限制,这个问题就很容易解决。

  • 如前所述,Maxheight Map 将多个图层合并到一个查询中。但它也会将一个大的边界框(bbox)分解成更小的部分。上面发布的 XML 查询在 UNION 操作中有 4 个相同的部分,这使得事情看起来过于复杂。事实上,就您的用例而言,您可以采用更简单的方法(见下文)。

  • 您不必将查询转换为 XML 格式。 Overpass QL(查询语言)非常适合 Overpass API,当然还有 Overpass Turbo。

  • 根据过去使用 Maxheight Map 的经验,如果不对结果进行后处理,Overpass API 不会为您提供所需的解决方案。如果您熟悉 OpenLayers,您可能需要 take a look at the logic我用了。基本上你只需要找到内部点的交点,类似于 PostGIS 函数 st_crosses 所做的。此外,您还必须考虑每种方式的“层”信息作为示例。

一个非常精简的版本(用于 Overpass Turbo)可能看起来像这样。但是,您需要确保实际的高速公路/桥梁类型符合您的要求,当然不要忘记对结果进行后处理。如果没有它,您的查询结果将包含大量误报。

((way({{bbox}})[bridge~"^(yes|viaduct)$"];way(around:0)[highway~"^((primary|secondary|tertiary|trunk)(_link)?|service|residential|unclassified)$"][tunnel!~"."]);>;);out;

关于openstreetmap - 查询立交桥 API 查询有过桥/铁路的道路,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22468442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com