Skip to content

DataFilterExtension seems to be broken on main (may be on my end though...) #955

@ATL2001

Description

@ATL2001

Context

While working on the get_category_filter PR, I was getting some strange behavior that seemed to suddenly break what I was working on. I decided to pull main down to my machine and see if possibly something else besides what I was doing somehow caused it. When I run the code below (based on the data filter extension docs, with the colors and slider stripped out) the points from the scatter plot layer aren't rendered on the map.

Image

If I don't add the extension, it renders the points.

Image

If someone could try to recreate this and either confirm that it's not just me, or let me know that it's on my end only I'd really appreciate it. I'm scratching my head right now.

Environment

  • OS: Windows 11
  • Browser: opera
  • Lonboard Version: Main

Steps to reproduce the bug

from pathlib import Path

import geopandas as gpd
import numpy as np
import pandas as pd
import shapely

import lonboard
from lonboard import Map, ScatterplotLayer
from lonboard.layer_extension import DataFilterExtension

url = "https://ookla-open-data.s3.us-west-2.amazonaws.com/parquet/performance/type=mobile/year=2019/quarter=1/2019-01-01_performance_mobile_tiles.parquet"
local_path = Path("data-filter-extension.parquet")
if local_path.exists():
    gdf = gpd.read_parquet(local_path)
else:
    columns = ["avg_d_kbps", "avg_u_kbps", "avg_lat_ms", "devices", "tile"]
    df = pd.read_parquet(url, columns=columns)

    tile_geometries = shapely.from_wkt(df["tile"])
    tile_centroids = shapely.centroid(tile_geometries)
    non_geom_columns = [col for col in columns if col != "tile"]
    gdf = gpd.GeoDataFrame(
        df[non_geom_columns],
        geometry=tile_centroids,
        crs="EPSG:4326",
    )
    gdf.to_parquet(local_path)

filter_extension = DataFilterExtension(filter_size=3)

filter_values = np.column_stack(
    [gdf["avg_d_kbps"], gdf["avg_u_kbps"], gdf["avg_lat_ms"]],
)
initial_filter_range = [
    [10_000, 50_000],
    [1000, 10_000],
    [0, 100],
]

layer = ScatterplotLayer.from_geopandas(
    gdf,
    get_fill_color=[0,0,255],
    radius_units="meters",
    radius_min_pixels=0.1,
    extensions=[filter_extension],
    get_filter_value=filter_values,
    filter_range=initial_filter_range,
)

m = Map(layer, basemap=lonboard.basemap.MaplibreBasemap())

display(m)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions