То, что вы, вероятно, сделали для загрузки данных из OpenStreetMap с использованием 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))
, что дает:
а именно, континентальная часть Португалии + ее острова, Азорские острова .
Поскольку континентальная часть самая большая, вы можно отфильтровать другие, используя shapely или Geo Pandas, например.
Но сначала давайте исследуем данные, вот gdf
:
Это мульти-полигон. Итак, нам нужно взорвать его, например, согласно this :
exploded_gdf = gdf.explode()
Я использую Geo Pandas версию '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']