A small Python API for 3D maps

Build a map.
Add what you need.

Combine imagery, vectors, 3D layers and shadows.
A few lines of Python. One interactive scene.

MODULES → MAP

All visual modules. One map.

The complete Mainz scene: aerial imagery, imperviousness (10 m), your polygons, 3D trees and adjustable shadows. Explore spatial building queries in a separate example.

MapWmsTileLayer × 2GeoJsonTreeLayerSunShadows
Python
from basemap3d import (Map, WmsTileLayer, GeoJson,
                       TreeLayer, SunShadows)

m = Map(location=[50.0063, 8.2692], zoom_start=16)
WmsTileLayer(opacity=0.7).add_to(m)

wms = "https://geoserver.geoville.com/geoserver/nvlcc_2024/wms"
WmsTileLayer(
    url=wms, layers="HRL_NVLCC_IMD_2024_10m",
    name="Imperviousness · 2024 · 10 m", opacity=0.8, show=False,
    description="Copernicus IMD · 2024 · 10 m · 0–100 %",
    attribution="© European Union · Copernicus Land Monitoring Service",
    legend_url=wms + "?service=WMS&request=GetLegendGraphic"
                     "&version=1.1.1&format=image/png"
                     "&layer=HRL_NVLCC_IMD_2024_10m",
).add_to(m)
GeoJson("data/parking.geojson", popup=True).add_to(m)
TreeLayer().add_to(m)
SunShadows(date="2026-06-21", hour=17).add_to(m)
m

The preview uses a local OSM building snapshot; the Python code downloads buildings automatically. Maps and models require internet access.

Interactive previewFull screen ↗
New here? Build this scene one step at a time in Examples.Start with the base map →