如何通过Overpass API(Overpass Turbo)查询指定商铺周边的目标店铺?
解决Overpass API查询指定商铺周边目标的问题
正确查询语句(以Taco Bell 100米内的Walmart为例)
[out:json][timeout:25]; // 第一步:获取当前地图区域内所有的Taco Bell节点/区域 ( node["name"="Taco Bell"]({{bbox}}); way["name"="Taco Bell"]({{bbox}}); relation["name"="Taco Bell"]({{bbox}}); ); // 第二步:获取上述元素100米范围内的Walmart Supercenter ( node["name"="Walmart Supercenter"](around:100); way["name"="Walmart Supercenter"](around:100); relation["name"="Walmart Supercenter"](around:100); ); // 输出结果 out body; >; out skel qt;
你的原查询问题在哪
你写的shop=* and name="Walmart Supercenter" around shop=* and name="Taco Bell"不符合Overpass的语法逻辑:
- Overpass需要先明确基准元素集合,再用
around基于这个集合筛选目标,不能直接把两个条件用around硬连在一起 around的正确用法是基于已获取的元素集合,在筛选新元素时紧跟括号使用,或者指定具体坐标+距离,你这种写法完全不符合语法规则
新手实用学习资源
- Overpass Turbo内置示例:打开工具后点顶部「Examples」菜单,里面有各种场景的现成查询,直接改参数就能用,比向导更接地气
- 内置语法速查:点顶部「Help」→「Overpass QL」,重点看「Element Selection」「Around Filter」这两块,都是常用语法
- 分步拆解练习:先从简单查询练起,比如只查当前区域的Taco Bell,确认结果没问题后,再叠加
around筛选周边元素,逐步摸透逻辑
内容的提问来源于stack exchange,提问作者darkwing
相关产品推荐
相关产品推荐

