Embedding maps spatial regions into a vector space. The process follows a standard pipeline involving four main components:
- Loader: Loads spatial features (e.g.,
OSMOnlineLoader). - Regionalizer: Splits the area into regions (e.g.,
H3Regionalizer). - Joiner: Joins the loaded features to the regions (e.g.,
IntersectionJoiner). - Embedder: Transforms the joined data into vectors (e.g.,
CountEmbedder, Hex2VecEmbedder).
Simple Embedders (like CountEmbedder) do not require a fitting step.
Complex Embedders (like Hex2VecEmbedder or GTFS2VecEmbedder) follow a scikit-learn style API and require a fit or fit_transform step, often using a neighbourhood object (e.g., H3Neighbourhood) to capture spatial context.
# Standard Embedding Pipeline Example
from srai.embedders import CountEmbedder
from srai.joiners import IntersectionJoiner
from srai.loaders import OSMOnlineLoader
from srai.plotting import plot_regions, plot_numeric_data
from srai.regionalizers import H3Regionalizer, geocode_to_region_gdf
loader = OSMOnlineLoader()
regionalizer = H3Regionalizer(resolution=9)
joiner = IntersectionJoiner()
query = {"amenity": "bicycle_parking"}
area = geocode_to_region_gdf("Malmö, Sweden")
# 1. Load
features = loader.load(area, query)
# 2. Regionalize
regions = regionalizer.transform(area)
# 3. Join
joint = joiner.transform(regions, features)
# 4. Embed
embedder = CountEmbedder()
embeddings = embedder.transform(regions, features, joint)
# Visualization
folium_map = plot_regions(area, colormap=["rgba(0,0,0,0.1)"], tiles_style="CartoDB positron")
plot_numeric_data(regions, "amenity_bicycle_parking", embeddings, map=folium_map)