本文介绍了OSMNx:获取多边形/建筑物的节点/角/边的坐标的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试检索列表中每个商业建筑的所有节点/角/边的坐标。例如,对于英国Macclesfield的超市Aldi,我可以从UI获得10个节点(超市的所有角落/边缘),但我只能从osmnx检索这10个节点中的2个。我需要访问完整的节点列表,但它截断了结果,在本例中只给出了10个节点中的2个。使用以下代码:

import osmnx as ox

test = ox.geocode_to_gdf('aldi, Macclesfield, Cheshire, GB')
ax = ox.project_gdf(test).plot()
test.geometry

gdf = ox.geometries_from_place('Grosvenor, Macclesfield, Cheshire, GB', tags)
gdf.geometry
两者都只返回两个坐标,并截断OpenStreetMap UI中提供的其他信息/结果(您可以在附加的图像几何图形的第一列中看到它&>仅返回两个坐标,其他结果被截断...)。我很感激在这方面能帮上忙,提前谢谢。

推荐答案

很难猜到您在这里做什么,因为您没有提供可重复使用的示例(例如,tags是未定义的)。但我会试着猜猜你想要什么。

在这里,我检索Macclesfield中所有标记的商业建筑覆盖区,然后提取第一个的多边形坐标。如果您只想要某些类型的建筑,则可以根据您认为合适的其他属性值对其进行过滤。有关OSMnx的geometries模块的正确用法,请参阅documentation

import osmnx as ox

# get the building footprints in Macclesfield
place = 'Macclesfield, Cheshire, England, UK'
tags = {'building': 'commercial'}
gdf = ox.geometries_from_place(place, tags)

# how many did we get?
print(gdf.shape)  # (57, 10)

# extract the coordinates for the first building's footprint
gdf.iloc[0]['geometry'].exterior.coords

或者,如果您想要特定建筑物的占地面积,您可以查找其OSM ID并告诉OSMnxgeocode该值:

gdf = ox.geocode_to_gdf('W251154408', by_osmid=True)
polygon = gdf.iloc[0]['geometry']
polygon.exterior.coords

这篇关于OSMNx:获取多边形/建筑物的节点/角/边的坐标的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

11-01 10:37