有没有办法获取分页的立交桥查询的结果



假设我想在柏林找到餐馆,我有这个查询:

[out:json];
area["boundary"="administrative"]["name"="Berlin"] -> .a;
(
    node(area.a)["amenity"="restaurant"];
); out center;

假设此结果集太大,无法仅在一个请求中提取以覆盖。我希望能够使用 SQL 的 OFFSETLIMIT 参数来获取前 100 个结果 (0-99),处理它们,然后得到下一个 100 个结果 (100-199) 等等。

我在 API 中找不到执行此操作的选项,这完全可能吗?如果没有,我应该如何查询我的数据以将其分成更小的集合?

我知道我可以增加内存限制或超时,但这仍然让我处理一个庞大的请求,而不是在 n 个小请求上,这就是我想这样做的方式。

Overpass API 不支持OFFSET,但您可以通过 out 语句中的附加参数限制查询返回的结果数。以下示例将仅返回柏林的 100 家餐厅:

[out:json];
area["boundary"="administrative"]["name"="Berlin"] -> .a;
(
    node(area.a)["amenity"="restaurant"];
); out center 100;

限制整体数据量的一种方法是计算边界框中的对象数量,如果该数字太大,则将边界框分成 4 个部分out count;。一旦对象数量可行,只需使用out;即可获得一些结果。

node({{bbox}})["amenity"="restaurant"];
out count;

最新更新