DeckGL.jl

Interactive maps in Julia.

GPU-accelerated geospatial visualization. Millions of points. Smooth pan, zoom, 3D. Built on deck.gl.

Overview

  • Big data, smooth frames — WebGL rendering of millions of points.
  • Any Tables.jl source — DataFrames, NamedTuples, CSV.jl, Arrow.jl, …
  • 10+ layer types — scatter, arc, line, path, polygon, text, hexbin, grid, heatmap, GeoJSON.
  • Any display target — Jupyter, Pluto, VS Code, standalone HTML.
  • Declarative API — layers, view state, widgets. That’s it.

Install:

using Pkg
Pkg.add(url="https://github.com/RallypointOne/DeckGL.jl")

Quickstart

using DeckGL

cities = (
    lng  = [-122.4, -74.0,   2.35, 139.7, 151.2, -0.13, 77.22, 103.8],
    lat  = [  37.8,  40.7,  48.86,  35.7, -33.9,  51.5, 28.61,   1.35],
    pop  = [   870, 8400,   2100, 13900,  5300,  9000, 32000,  5700],
)

Deck(
    ScatterplotLayer(
        data = cities,
        get_position = [:lng, :lat],
        get_radius = :pop,
        radius_scale = 80,
        radius_min_pixels = 4,
        get_fill_color = [255, 140, 0, 220],
    ),
    initial_view_state = ViewState(longitude=30, latitude=25, zoom=1.2, pitch=20),
    map_style = "https://basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json",
)

A Deck has three pieces:

  1. Layers — what to draw.
  2. ViewState — where the camera is (longitude, latitude, zoom, pitch, bearing).
  3. Widgets (optional) — UI overlays.

Columns are referenced by Symbol: get_radius = :pop, get_position = [:lng, :lat]. Static values work too: get_fill_color = [255, 140, 0, 220].

Display

  • Notebooks (Jupyter, Pluto, VS Code) — a Deck renders inline automatically.
  • Browseropen_html(deck) pops a tab.
  • Filesave_html(deck, "map.html").
  • Stringto_html(deck) / to_json(deck).

Where to go next

  • Examples → — flight routes, earthquakes, 3D buildings, wildfires, trees, accidents.
  • Layers → — every layer type with a live interactive example.
  • Widgets → — zoom, compass, fullscreen.
  • API → — full reference.