Overpass查询在turbo正常,API调用却报BadRequest错误
解决Overpass API调用的BadRequest错误
问题出在make stats语句里的字符串拼接使用了双引号,直接通过URL传递时会触发解析错误——Overpass Turbo内部做了兼容处理,但API接口对URL参数的语法要求更严格。
修改后的查询代码
[out:json]; ( way["highway"](around:500,44.6759305,8.1672113); - (way["highway"="primary"](around:500,44.6759305,8.1672113);); ); out geom; make stats way_id_length=set(id() + '-' + length()); out;
对应的可正常调用的API URL
https://overpass-api.de/api/interpreter?data=[out:json];(way[%22highway%22](around:500,44.6759305,8.1672113);-(way[%22highway%22=%22primary%22](around:500,44.6759305,8.1672113);););out%20geom;make%20stats%20way_id_length=set(id()%20+%20%27-%27%20+%20length());out;
关键修复点
- 将字符串拼接中的双引号
"-"替换为单引号'-',URL编码后单引号会被转为%27,避免服务器端解析双引号时出现语法错误。 - 标签匹配部分的双引号(如
"highway")保留即可,URL编码为%22后不会影响解析,问题仅出现在字符串拼接的引号上。
内容的提问来源于stack exchange,提问作者Federico di Geronimo
相关产品推荐
相关产品推荐

