Skip to main content
multilayer-sdk Logo

multilayer-sdk

Pure-Python Synchronized Multi-Panel Map Visualization, Spatial Comparison Engine & Interactive Dashboard Builder.

PyPI Version Python Versions License: MIT CI Documentation


multilayer-sdk Architecture

🌐 Live Interactive Studio & Documentation

Explore the interactive multi-panel map simulator and comprehensive reference manual:

👉 https://yusufeminoglu.github.io/multilayer-sdk/

Try out real-time neon laser crosshair tracking, split-screen curtain swipe comparisons, and live choropleth classifiers directly in your browser.


🌟 Overview

multilayer-sdk (the headless Python core behind 02Multimap) allows urban planners, spatial data scientists, and researchers to visualize, cross-analyze, and compare multiple spatial datasets side-by-side with millisecond synchronization.

Instead of toggling layers on and off in a single map, multilayer coordinates up to 8 synchronized map viewports in dynamic grids (1x2, 2x1, 1x3, 2x2, 2x3, 2x4) with:

  • Bi-directional Pan & Zoom Broadcasting: Drag or zoom on any panel to coordinate all others in real time.
  • Neon Laser Crosshair Cursor Tracking: Move your mouse over any panel to project neon-colored crosshairs tracking the exact geographic coordinate across all viewports.
  • Graduated Thematic Choropleths: Quantiles, Equal Interval, Natural Breaks, and Standard Deviation statistical binning with scientific palettes (viridis, magma, plasma, turbo, cividis, spectral, rdylbu).
  • Interactive Split-Screen Curtain Swipe: Draggable split slider for before/after temporal change detection.
  • Single-File Self-Contained HTML Dashboards: Export zero-dependency interactive HTML files ready for presentations, stakeholders, or offline field audits.
  • Jupyter Notebook & Google Colab Integration: Rich inline widget display via mm.show().

🚀 Installation

pip install multilayer-sdk

⚡ Quickstart

1. Build a 4-Panel Synchronized Workspace

import multilayer as ml

# 1. Initialize a 4-panel (2x2) synchronized map grid
mm = ml.MultiMap(grid="2x2", title="Urban Vulnerability & Land Use Assessment", basemap="carto-dark")

# 2. Panel 1: High-resolution satellite imagery with study area boundary
mm.panel(0).title = "1. Satellite Context"
mm.panel(0).set_basemap("satellite")
mm.panel(0).add_layer("study_area.geojson", stroke_color="#38bdf8", fill_opacity=0.2)

# 3. Panel 2: Thematic choropleth of population density
vlayer = ml.VectorLayer.from_geojson("demographics.geojson")
pop_choro = ml.Choropleth.classify(vlayer, property_name="density_km2", method="quantiles", color_ramp="viridis")
mm.panel(1).title = "2. Population Density"
mm.panel(1).add_layer(pop_choro)

# 4. Panel 3: Flood hazard exposure score
risk_choro = ml.Choropleth.classify(vlayer, property_name="flood_risk_score", method="equal_interval", color_ramp="magma")
mm.panel(2).title = "3. Flood Hazard Exposure"
mm.panel(2).add_layer(risk_choro)

# 5. Panel 4: Future 2030 Master Zoning Plan
mm.panel(3).title = "4. Future Master Plan 2030"
mm.panel(3).add_layer("zoning_plan.geojson", fill_color="#10b981", fill_opacity=0.6)

# 6. Save as standalone interactive HTML dashboard
mm.to_html("urban_assessment_dashboard.html")

# 7. Render inline in Jupyter Notebook / Google Colab
mm.show()

2. Draggable Split-Screen Curtain Swipe Comparison

import multilayer as ml

swipe = ml.SwipeMap(
    left_layer="landcover_2010.geojson",
    right_layer="landcover_2026.geojson",
    left_title="Historical (2010)",
    right_title="Current (2026)",
    basemap="satellite"
)

swipe.to_html("deforestation_swipe.html")

💻 Command Line Interface (CLI)

# 1. Build a 2x2 synchronized dashboard from 4 GeoJSON files
multilayer build --layers bldgs.geojson,roads.geojson,hazard.geojson,zoning.geojson --grid 2x2 --out city_dashboard.html --open

# 2. Build a 2-panel before/after split-screen swipe comparison
multilayer compare flood_2020.geojson flood_2026.geojson --left-title "2020 Flood" --right-title "2026 Flood" --out flood_swipe.html

# 3. Inspect GeoJSON feature count, properties, and bounding box
multilayer inspect study_area.geojson

# 4. List all built-in web map tile basemaps
multilayer tiles

⚙️ Supported Grid Matrices

Grid Preset Layout Dimensions Panel Count Primary Cartographic Use Case
1x2 1 Row $\times$ 2 Columns 2 Panels Before/After comparisons, Suitability vs Actual zoning
2x1 2 Rows $\times$ 1 Column 2 Panels Vertical elevation profiles, transport corridors
1x3 1 Row $\times$ 3 Columns 3 Panels Past $\rightarrow$ Present $\rightarrow$ Future temporal timelines
2x2 2 Rows $\times$ 2 Columns 4 Panels 4-way evaluation (Base, Demographics, Hazards, Policy)
2x3 2 Rows $\times$ 3 Columns 6 Panels Multi-criteria evaluation (MCDA factor grids)
2x4 2 Rows $\times$ 4 Columns 8 Panels High-density multi-scenario sensitivity snapshots

📄 Academic Citation

If you use multilayer-sdk in scientific publications, planning projects, or research, please cite:

@software{eminoglu2026multilayer,
  author    = {Emino{\\u{g}}lu, Yusuf},
  title     = {{multilayer-sdk: Pure-Python Synchronized Multi-Panel Map Visualization, Spatial Comparison Engine, and Interactive Dashboard Builder}},
  year      = {2026},
  publisher = {PyPI - Python Package Index},
  version   = {0.1.0},
  url       = {https://github.com/YusufEminoglu/multilayer-sdk}
}

📜 License

Distributed under the MIT License. Copyright (c) 2026 Yusuf Eminoğlu.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

multilayer_sdk-0.1.1.tar.gz (25.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

multilayer_sdk-0.1.1-py3-none-any.whl (23.2 kB view details)

Uploaded Python 3

File details

Details for the file multilayer_sdk-0.1.1.tar.gz.

File metadata

  • Download URL: multilayer_sdk-0.1.1.tar.gz
  • Upload date:
  • Size: 25.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for multilayer_sdk-0.1.1.tar.gz
Algorithm Hash digest
SHA256 b0ad3ddf8815280b715cb318d07f6f6585474b504d25f079149981e7410fc66b
MD5 484b234eac6cc74c4157ac4c0343b5db
BLAKE2b-256 3541a63a1dc1440bb24f64a0c09a0c251afcb3e01232ebdaad4a92772f9c0926

See more details on using hashes here.

Provenance

The following attestation bundles were made for multilayer_sdk-0.1.1.tar.gz:

Publisher: publish.yml on YusufEminoglu/multilayer-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file multilayer_sdk-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: multilayer_sdk-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 23.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for multilayer_sdk-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e13ce4aa099b4f54e78929a817d3839f3212636c10b57fdea053547244e9a76d
MD5 f277e14767c778cd045a1566c1fba0d8
BLAKE2b-256 442bfd2d0a905f6fc89bb21495f7c025e8d31cf9f4be26240c24d940590a50a4

See more details on using hashes here.

Provenance

The following attestation bundles were made for multilayer_sdk-0.1.1-py3-none-any.whl:

Publisher: publish.yml on YusufEminoglu/multilayer-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page