有没有办法获得分页的立交桥查询结果?
Is there a way to get results for an overpass query paginated?
假设我想在柏林找餐馆,我有这个查询:
[out:json];
area["boundary"="administrative"]["name"="Berlin"] -> .a;
(
node(area.a)["amenity"="restaurant"];
); out center;
假设此结果集太大,无法仅在一个立交桥请求中提取。我希望能够使用类似 SQL 的 OFFSET
和 LIMIT
参数来获取前 100 个结果 (0-99),处理它们,然后获取下一个 100 ( 100-199) 等等。
我在 API 中找不到执行此操作的选项,是否可行?如果不是,我应该如何查询我的数据以将其分成更小的集合?
我知道我可以增加内存限制或超时,但这仍然让我处理一个大请求而不是 n 个小请求,这就是我想要的方式。
OFFSET
不受 Overpass API 支持,但您可以通过 [=13] 中的附加参数限制查询 return 得到的结果数量=] 语句。以下示例 return 柏林只有 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;
假设我想在柏林找餐馆,我有这个查询:
[out:json];
area["boundary"="administrative"]["name"="Berlin"] -> .a;
(
node(area.a)["amenity"="restaurant"];
); out center;
假设此结果集太大,无法仅在一个立交桥请求中提取。我希望能够使用类似 SQL 的 OFFSET
和 LIMIT
参数来获取前 100 个结果 (0-99),处理它们,然后获取下一个 100 ( 100-199) 等等。
我在 API 中找不到执行此操作的选项,是否可行?如果不是,我应该如何查询我的数据以将其分成更小的集合?
我知道我可以增加内存限制或超时,但这仍然让我处理一个大请求而不是 n 个小请求,这就是我想要的方式。
OFFSET
不受 Overpass API 支持,但您可以通过 [=13] 中的附加参数限制查询 return 得到的结果数量=] 语句。以下示例 return 柏林只有 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;