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

OSMNX给定经纬度坐标获取对应建筑外部坐标的问题咨询

经纬度查询最近建筑外轮廓坐标解决方案

你遇到的AttributeError: module 'osmnx' has no attribute 'pois_from_point'报错是因为该API为OSMnx v0.x版本的旧接口,v1.0及以上版本已经将POI/要素查询功能统一迁移到features模块,不再提供该旧方法。

完整实现代码

import osmnx as ox
from shapely.geometry import Point

# 配置OSMnx请求超时时间,可根据网络情况调整
ox.settings.timeout = 100

# 给定的目标经纬度坐标,OSMnx入参点格式为(纬度, 经度)
target_point = (53.2588051, -2.124499)
search_radius = 100  # 搜索半径,单位米,可根据周边建筑密度调整

# 查询指定半径范围内的所有建筑要素
buildings = ox.features_from_point(
    center_point=target_point,
    tags={"building": True},
    dist=search_radius
)

if len(buildings) == 0:
    print("当前搜索范围内无建筑,请调大search_radius值重试")
else:
    # 构造shapely点计算距离,注意shapely的Point入参格式为(经度, 纬度)
    target_shapely_point = Point(target_point[1], target_point[0])
    # 计算每个建筑到目标点的距离,筛选出最近的建筑
    buildings['distance'] = buildings.geometry.distance(target_shapely_point)
    nearest_building = buildings.sort_values('distance').iloc[0]

    # 提取外轮廓坐标
    polygon = nearest_building['geometry']
    # 兼容多面几何类型,可根据业务需求调整多部分几何的处理逻辑
    if polygon.geom_type == 'MultiPolygon':
        polygon = list(polygon.geoms)[0]
    exterior_coords = list(polygon.exterior.coords)
    print(exterior_coords)

注意事项

  • 注意两种坐标参数格式的区别,不要写反经纬度顺序
  • 如果单次查询无结果,可逐步增大搜索半径重试,避免周边建筑密度低导致匹配不到
  • 示例中对MultiPolygon类型取了第一个面,你可以根据实际需求调整多部分几何的筛选逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 23:39:02