使用osmnx从多边形中检索数据

问题描述 投票:1回答:1

在问问题之前,我将展示我的工作:

我正在使用Pyhton和即将显示的软件包。

我想使用osmnx访问与葡萄牙大陆(西班牙旁边的部分,因此不包括岛屿在内)相对应的数据:

import geopandas as gpd
import pandas as pd
from shapely.geometry import Point, LineString, Polygon
import networkx as nx
import osmnx as ox
import matplotlib.pyplot as plt
from descartes import PolygonPatch
from IPython.display import IFrame
ox.config(log_console=True, use_cache=True)

选择了地点。我获得了对应于葡萄牙的MultiPolygon

place = 'Portugal'
G = ox.gdf_from_place(place)
fig, ax = ox.plot_shape(G, figsize=(17,17))

我只想要葡萄牙大陆,我的意思是这只是西班牙旁边的部分,不包括亚速尔群岛和马德拉群岛。因此,我探索了MultipPolygon的几何形状。然后按面积对所有多边形进行排序,并选择面积最大的多边形。

exploded_G = G.explode()
exploded_G['area'] = exploded_G.area
exploded_G.sort_values(by='area', inplace=True)
Portugal= exploded_G.iloc[-1]['geometry']

我的问题是:如何获取我现在拥有的多边形(我称为葡萄牙)的所有信息,例如兴趣点,道路,节点等。

先谢谢您。

python python-3.x polygon osmnx
1个回答
1
投票

由于葡萄牙大陆涉及大量数据,因此非常耗时,因此我仅对一个较小的多边形实施了以下步骤。因此,以下内容也应适用于“葡萄牙”。

exploded_gdf_place = gdf_place.explode()
exploded_gdf_place['area'] = exploded_gdf_place.area
exploded_gdf_place.sort_values(by='area', inplace=True)
smaller_area_Portugal= exploded_gdf_place.iloc[4]['geometry']

您可以使用OSMNx的graph_from polygon功能来获取道路网络(例如,行驶或步行网络)。

g = ox.graph_from_polygon(polygon = smaller_area_Portugal, network_type = 'drive')
fig, ax = ox.plot_graph(g, fig_height=5)

然后您可以按照以下方式获取与地理数据框相同的图的节点和边的数据。

gdf_nodes,gdf_edges = ox.graph_to_gdfs(g, nodes=True, edges=True)

要获取有关多边形内POI的数据,应使用以下内容。我没有指定任何特殊的便利设施类型,但是也可以做到。请参阅文档。

gdf_pois = ox.pois.osm_poi_download(polygon=smaller_area_Portugal)

在多边形内获得的POI的一个示例将按以下方式检索。

sample_poi = gdf_pois['elements'][0]
© www.soinside.com 2019 - 2024. All rights reserved.