使用 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']
我遇到的问题如下:葡萄牙是西班牙旁边的一个国家,它也有一些岛屿。我只想 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']