为什么我的Overpass请求仅返回大型水体,无法返回小型溪流?
问题根因
你当前的查询仅筛选了带natural=water标签的要素,这类标签在OpenStreetMap中仅用于标注面状水体(湖泊、池塘、宽河道水面等),不会用于标记线状的溪流、小型河道类要素。
OSM中所有线状流水类要素统一使用waterway标签体系:小型溪流对应waterway=stream,小型河流对应waterway=river,沟渠、排水沟等线性水体也属于该标签体系,这些要素都不会被你当前的查询规则命中,因此出现了数据缺失。
修正后的查询示例
你可以在原有查询基础上新增线性水体的筛选规则,调整后的查询如下:
/* 兼容面状水体与线性水体的查询规则 */ [out:json][timeout:25]; // 收集所有符合要求的水体要素 ( // 原有面状水体查询规则 way["natural"="water"](46.718739800819776,8.407201766967773,46.744507241875134,8.450760841369627); relation["natural"="water"](46.718739800819776,8.407201766967773,46.744507241875134,8.450760841369627); // 新增线性水体查询规则,可根据需求增减waterway的取值 way["waterway"~"stream|river|ditch|drain"](46.718739800819776,8.407201766967773,46.744507241875134,8.450760841369627); relation["waterway"~"stream|river|ditch|drain"](46.718739800819776,8.407201766967773,46.744507241875134,8.450760841369627); ); // 输出结果 out body; >; out skel qt;
如果需要获取更完整的水体数据,还可以按需加入landuse=reservoir(水库面)等其他水体相关标签的筛选规则。
内容的提问来源于stack exchange,提问作者Leo
相关产品推荐
相关产品推荐

