使用OSMNX时无法选择葡萄牙大陆

2024-09-29 01:25:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我面临的问题如下:葡萄牙是西班牙旁边的一个国家,它也有一些岛屿。我只想选择葡萄牙大陆,我的意思是,这只是葡萄牙靠近西班牙的一部分,不包括这些岛屿

你能帮我吗

谢谢你的关注


Tags: 国家大陆岛屿
1条回答
网友
1楼 · 发布于 2024-09-29 01:25:06

使用OSMNXOpenStreetMap下载数据时,您可能做了以下操作:

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))

其结果是:

Portugal

即葡萄牙的大陆部分及其岛屿Azores

由于大陆部分是最大的,因此您可以使用shapelyGeoPandas来过滤其他部分


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

Initial gdf content

它是一个多重多边形。因此,我们需要将其分解,例如,根据this

exploded_gdf = gdf.explode()

我正在使用GeoPandas版本'0.7.0',这可能不适用于旧版本


让我们来探索这一新几何体:

Exploded geometry

由于大陆部分可能是最大的,您可以根据其面积对其进行计算和排序:

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

Portugal areas

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

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

Continental part

相关问题 更多 >