【问题标题】:Is there a way to get results for an overpass query paginated?有没有办法获得分页的立交桥查询的结果?
【发布时间】:2019-02-04 03:35:40
【问题描述】:

假设我想在柏林开餐馆,我有这样的疑问:

[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 个小请求,这就是我想要的方式。

【问题讨论】:

    标签: openstreetmap overpass-api


    【解决方案1】:

    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;
    

    【讨论】:

    • 虽然这很不错,但这并不是我所需要的。但是如果不可能使用偏移量,我想这是唯一的选择。非常感谢!
    • 您好,您能否提供文档或代码来展示如何以编程方式将边界框分割成更小的部分。特别是如果你有一个明确的区域,如伦敦,你如何分解更小的部分?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多