Skip to content

Arc layer

image image image

Add Arc Layer

Uncomment the following line to install leafmap if needed.

1
# %pip install leafmap
1
2
3
4
import pandas as pd
import geopandas as gpd
import ipywidgets as widgets
import leafmap.maplibregl as leafmap
1
2
3
4
5
route_url = (
    "https://github.com/opengeos/datasets/releases/download/world/airport_routes.csv"
)
df = pd.read_csv(route_url)
df.head()
1
2
3
4
5
airport_url = (
    "https://github.com/opengeos/datasets/releases/download/world/airports.geojson"
)
gdf = gpd.read_file(airport_url)
gdf.head()
1
2
3
m = leafmap.Map(style="liberty")
m.add_gdf(gdf, name="Airports", fit_bounds=False)
container = m.create_container()
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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