You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何限制OSMnX中ox.geometries_from_place()函数的返回行数?

限制OSMnX中ox.geometries_from_place()返回行数的方法及性能优化

ox.geometries_from_place()本身没有直接设置返回行数的参数,但可以通过以下方式限制数据量、提升大区域查询的性能:

  • 过滤特定要素类型:只请求业务需要的要素,大幅减少返回数据。比如仅提取建筑或道路:

    import osmnx as ox
    # 仅获取罗马的建筑要素
    gdf = ox.geometries_from_place("Rome, Italy", tags={"building": True})
    
  • 缩小查询范围:不用整个城市名称,改用精确的边界框或自定义多边形限定区域:

    # 用经纬度边界框限定罗马的局部区域
    bbox = (41.90, 41.89, 12.49, 12.48)  # 格式:(north, south, east, west)
    gdf = ox.geometries_from_bbox(*bbox, tags={"building": True})
    
  • 分块查询合并:将大区域拆分为多个子区域逐个查询,最后合并结果:

    import pandas as pd
    # 拆分罗马边界为多个子区域
    sub_bboxes = [(41.90, 41.895, 12.49, 12.485), (41.895, 41.89, 12.49, 12.485)]
    gdfs = []
    for bbox in sub_bboxes:
        gdf_sub = ox.geometries_from_bbox(*bbox, tags={"building": True})
        gdfs.append(gdf_sub)
    final_gdf = pd.concat(gdfs, ignore_index=True)
    
  • 开启缓存机制:避免重复请求相同数据,节省重复查询的时间:

    ox.config(use_cache=True, cache_folder="./osmnx_cache")
    

如果确实需要强制限制行数,可在获取结果后直接截断,但这会导致数据随机不完整,仅适合测试场景:

# 仅示例,不推荐正式使用
gdf = ox.geometries_from_place("Rome, Italy", tags={"building": True}).head(100)

内容的提问来源于stack exchange,提问作者Luigi Montaleone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 23:44:59