如何限制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
相关产品推荐
相关产品推荐

