使用 OSMNX 时无法 select 葡萄牙大陆

Can't select Continental Portugal when using OSMNX

我遇到的问题如下:葡萄牙是西班牙旁边的一个国家,它也有一些岛屿。我只想 select 葡萄牙大陆,我的意思是这只是葡萄牙与西班牙相邻的部分,不包括岛屿。

你能帮帮我吗?

谢谢关注

您从 OpenStreetMap using OSMNX 下载您的数据可能是这样的:

import osmnx as ox
import geopandas as gpd
region = {'country':'Portugal'}
gdf = ox.gdf_from_place(region)
fig, ax = ox.plot_shape(gdf, figsize=(7,7))

这导致:

即葡萄牙大陆部分+其岛屿,Azores

由于大陆部分最大,您可以使用 shapely or GeoPandas 过滤掉其他部分。


但首先,让我们探索数据,这里是 gdf:

这是一个多边形。所以,我们需要将其分解,例如根据 this:

exploded_gdf = gdf.explode()

我使用的是 GeoPandas 版本 '0.7.0',这可能不适用于旧版本。


让我们探索这个新几何:

由于大陆部分可能是最大的,您可以按面积计算和排序:

exploded_gdf['area'] = exploded_gdf.area
exploded_gdf.sort_values(by='area', inplace=True)
exploded_gdf

最后取最大的,这里是最后一个,因此索引 -1:

# Extract the shapely underlying geometry:
continental_part = exploded_gdf.iloc[-1]['geometry']