如何构建Overpass查询获取主干道附近特定门牌号的3层住宅
解决方案
要实现主干道附近门牌号为26的3层住宅查询,需要先获取主干道数据,再用around过滤器限定目标建筑的范围。修改后的查询分为两步执行:
- 先抓取指定范围内的主干道(可根据需求调整
highway标签,比如primary/trunk/secondary) - 基于这些主干道的位置,筛选出周边符合条件的住宅
以下是调整后的完整查询代码:
[out:xml][timeout:25]; // 第一步:获取范围内的主干道,可按需修改highway标签 ( way["highway"="primary"]({{bbox}}); way["highway"="trunk"]({{bbox}}); ); // 输出主干道的节点,供around过滤器使用 out body; >; out body qt; // 第二步:筛选主干道周边50米内的目标建筑,距离可自行修改 ( node["addr:housenumber"="26"]["building:levels"="3"](around:50); way["addr:housenumber"="26"]["building:levels"="3"](around:50); relation["addr:housenumber"="26"]["building:levels"="3"](around:50); ); out meta; >; out meta qt;
关键说明
around:50中的50是距离值(单位:米),你可以根据需求改成100、150等- 主干道的
highway标签可灵活调整:如果要包含次干道,添加way["highway"="secondary"]({{bbox}});即可;如果只需要城市核心主干道,保留primary和trunk就够 - 必须先输出主干道的节点(
>; out body qt;),否则around无法基于整条道路的范围进行筛选
内容的提问来源于stack exchange,提问作者Alan B
相关产品推荐
相关产品推荐

