You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Overpass-turbo:如何为指定ID的drinking_water节点获取所在城市名称

需求实现:通过OSM节点ID获取对应城市名称

当前使用的查询代码

你当前用于请求drinking_water类型节点的OverpassQL代码如下:

node(id:1560728638,
1560728638,
1835271176,
1844271135
    ); out body;

需求说明

希望在获取指定节点数据的同时,同步获取每个节点所属的城市名称,输出格式示例如下:

osm_idcity
1560728638city A
1560728638city A
1835271176city B
1844271135city C

结论:可以实现

要达成这个需求,需要在OverpassQL中通过反向区域查询,找到包含目标节点的城市边界(通常标记为place=city或place=town的区域要素),并将节点ID与城市名称关联输出。

修改后的查询代码

[out:csv("id", "name"; false)];
node(id:1560728638,1560728638,1835271176,1844271135);
foreach->.n(
  is_in["place"~"city|town"];
  out body;
);

代码说明

  • [out:csv("id", "name"; false)]:指定输出为CSV格式,直接对应你需要的osm_id和city列,可直接转换为表格形式
  • node(id:...);:指定要查询的目标节点ID列表
  • foreach->.n:遍历每个节点,为单个节点执行后续的区域查询
  • is_in["place"~"city|town"]:查找包含当前节点的城市/城镇区域,提取其名称字段

如果需要更精准的城市匹配,可以调整过滤条件,比如仅筛选place=city,或者添加admin_level=8这类行政层级的限制,适配不同地区的OSM数据标注规则。

内容的提问来源于stack exchange,提问作者velocam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 05:55:30