Source: wikipedia
![]()
import numpy as np
import pandas as pd
import geopandas as gpd
import geoplot.crs as gcrs
import contextily as cx
import geoplot as gplt
from shapely.geometry import Point
import matplotlib.pyplot as plt
from scipy.spatial import Voronoi, voronoi_plot_2d
dataset_url = "https://davidmegginson.github.io/ourairports-data/airports.csv"
df = pd.read_csv(dataset_url, sep=',')
world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
spain_area = world[world.name == 'Spain']
df = df[df.iso_region.str.startswith('ES')]
geometry = [Point(xy) for xy in zip(df.longitude_deg, df.latitude_deg)]
gdf = gpd.GeoDataFrame(df, geometry=geometry)
gdf = gdf.set_crs('EPSG:4326')
# Setup the Voronoi axes; this creates the Voronoi regions
ax = gplt.voronoi(gdf[['geometry']], figsize=(25, 25))
ax = gdf.plot(ax=ax)
gplt.polyplot(spain_area, ax=ax)
/home/pablo/miniconda3/envs/datamining/lib/python3.8/site-packages/geopandas/geodataframe.py:1350: UserWarning: Geometry column does not contain geometry.
warnings.warn("Geometry column does not contain geometry.")
<AxesSubplot:>
ax = gplt.voronoi(
gdf[['geometry']],
figsize=(18,20),
)
ax = gdf.plot(ax=ax)
cx.add_basemap(ax, crs=gdf.crs)
/home/pablo/miniconda3/envs/datamining/lib/python3.8/site-packages/geopandas/geodataframe.py:1350: UserWarning: Geometry column does not contain geometry.
warnings.warn("Geometry column does not contain geometry.")
gdf.explore()