In [1]:
Copied!
# %pip install leafmap
# %pip install leafmap
In [2]:
Copied!
import pandas as pd
import geopandas as gpd
import ipywidgets as widgets
import leafmap.maplibregl as leafmap
import pandas as pd
import geopandas as gpd
import ipywidgets as widgets
import leafmap.maplibregl as leafmap
In [3]:
Copied!
route_url = (
"https://github.com/opengeos/datasets/releases/download/world/airport_routes.csv"
)
df = pd.read_csv(route_url)
df.head()
route_url = (
"https://github.com/opengeos/datasets/releases/download/world/airport_routes.csv"
)
df = pd.read_csv(route_url)
df.head()
Out[3]:
src_airport | dst_airport | src_name | dst_name | src_country | dst_country | src_lat | src_lon | dst_lat | dst_lon | |
---|---|---|---|---|---|---|---|---|---|---|
0 | AAE | ALG | Rabah Bitat | Houari Boumediene | Algeria | Algeria | 36.822201 | 7.8094 | 36.693298 | 3.2172 |
1 | AAE | CDG | Rabah Bitat | Charles De Gaulle | Algeria | France | 36.822201 | 7.8094 | 49.009701 | 2.5486 |
2 | AAE | IST | Rabah Bitat | Istanbul Airport | Algeria | Turkey | 36.822201 | 7.8094 | 40.976700 | 28.8153 |
3 | AAE | LYS | Rabah Bitat | Satolas | Algeria | France | 36.822201 | 7.8094 | 45.725601 | 5.0817 |
4 | AAE | MRS | Rabah Bitat | Marignane | Algeria | France | 36.822201 | 7.8094 | 43.435600 | 5.2164 |
In [4]:
Copied!
airport_url = (
"https://github.com/opengeos/datasets/releases/download/world/airports.geojson"
)
gdf = gpd.read_file(airport_url)
gdf.head()
airport_url = (
"https://github.com/opengeos/datasets/releases/download/world/airports.geojson"
)
gdf = gpd.read_file(airport_url)
gdf.head()
Out[4]:
id | name | country | lat | lon | geometry | |
---|---|---|---|---|---|---|
0 | AAE | Rabah Bitat | Algeria | 36.822201 | 7.8094 | POINT (7.8094 36.8222) |
1 | AAL | Aalborg | Denmark | 57.093102 | 9.8500 | POINT (9.85 57.0931) |
2 | AAN | Al Ain International | United Arab Emirates | 24.261700 | 55.6092 | POINT (55.6092 24.2617) |
3 | AAQ | Vityazevo | Russian Federation | 44.900002 | 37.3167 | POINT (37.3167 44.9) |
4 | AAR | Aarhus Airport | Denmark | 56.310299 | 10.6181 | POINT (10.6181 56.3103) |
In [5]:
Copied!
m = leafmap.Map(style="liberty")
m.add_gdf(gdf, name="Airports", fit_bounds=False)
container = m.create_container()
m = leafmap.Map(style="liberty")
m.add_gdf(gdf, name="Airports", fit_bounds=False)
container = m.create_container()
In [6]:
Copied!
dropdown = widgets.Dropdown(
description="Airport", options=df["src_airport"].unique().tolist(), value=None
)
map_widget = widgets.VBox([m.container])
main_widget = widgets.VBox([dropdown, map_widget])
def on_airport_change(change):
if change["new"]:
airport = change["new"]
selected_df = df[df["src_airport"] == airport]
dst_airports = selected_df["dst_airport"].unique().tolist() + [airport]
selected_gdf = gdf[gdf["id"].isin(dst_airports)]
m = leafmap.Map(style="liberty")
m.add_basemap(
"Esri.WorldImagery", visible=False, before_id=m.first_symbol_layer_id
)
m.add_gdf(selected_gdf, name="Airports", fit_bounds=False)
m.add_arc_layer(
selected_df,
src_lon="src_lon",
src_lat="src_lat",
dst_lon="dst_lon",
dst_lat="dst_lat",
)
m.create_container()
map_widget.children = [m.container]
dropdown.observe(on_airport_change, names="value")
main_widget
dropdown = widgets.Dropdown(
description="Airport", options=df["src_airport"].unique().tolist(), value=None
)
map_widget = widgets.VBox([m.container])
main_widget = widgets.VBox([dropdown, map_widget])
def on_airport_change(change):
if change["new"]:
airport = change["new"]
selected_df = df[df["src_airport"] == airport]
dst_airports = selected_df["dst_airport"].unique().tolist() + [airport]
selected_gdf = gdf[gdf["id"].isin(dst_airports)]
m = leafmap.Map(style="liberty")
m.add_basemap(
"Esri.WorldImagery", visible=False, before_id=m.first_symbol_layer_id
)
m.add_gdf(selected_gdf, name="Airports", fit_bounds=False)
m.add_arc_layer(
selected_df,
src_lon="src_lon",
src_lat="src_lat",
dst_lon="dst_lon",
dst_lat="dst_lat",
)
m.create_container()
map_widget.children = [m.container]
dropdown.observe(on_airport_change, names="value")
main_widget