artemyx logo artemyx
About App Examples GitHub
Core Operations
  • Buffer / Dissolve Vancouver bike walksheds - 200m buffer around bikeways with dissolve.
  • Intersection / Clip San Francisco bike routes intersected with parks - filter and clip modes compared.
  • Union / Merge Portland neighbourhoods merged with development opportunity areas - merge and dissolve modes compared.
  • Difference Ottawa neighbourhoods minus parks and greenspaces - subtract and exclude modes compared.
  • Contains / Within Winnipeg cycling network checked against parks - filter and within modes compared.
  • Distance (Filter) Chicago parks within walking distance of L rail stations.
  • Distance (Annotate) Calgary bikeways colored by distance to nearest LRT station.
  • Centroid Denver park polygons reduced to centroid points.
Labels
  • Labels Calgary communities and LRT stations with text labels - style.labelField for simple labels, type: symbol for full MapLibre expression control.
Expression Styling
  • Interpolate Styling Vancouver parks colored by size - interpolate expression mapping hectares to a green color ramp.
  • Match Styling Victoria road network colored by classification - match expression mapping road classes to a color palette.
Advanced Workflows
  • Multi-Dataset Layers Surrey, Burnaby, and New Westminster parks and active transportation - seven datasets across three municipalities with expression styling.
  • Multi-Step Workflow Edmonton schools + transit - union, buffer, and intersection chained to find dual-access zones.
  • Attribute Filter Vancouver cycling network filtered by infrastructure quality - safer routes via advanced SQL filter, protected lanes via structured filter, walkshed coverage buffered from the result.
deck.gl
  • deck.gl Meteorite Landings NASA meteorite landings rendered with deck.gl GeoJsonLayer - 45,000+ recorded impacts visualized from GeoParquet.
PMTiles
  • PMTiles Vector Tiles Protomaps worldwide vector basemap loaded as a PMTiles dataset - nine source layers styled independently with explicit layer configs.
About App GitHub
# Artemyx Example - PMTiles Vector Tiles
# Protomaps worldwide vector tile basemap loaded as a PMTiles dataset.
# Each source layer is styled independently with explicit layer configs.
# PMTiles datasets bypass DuckDB entirely - MapLibre renders tiles directly
# via HTTP range requests through the pmtiles:// protocol handler.

map:
  center: [-123.1207, 49.2827]  # Vancouver, BC
  zoom: 13
  basemap: carto-dark

datasets:
  - id: protomaps
    url: "https://assets.artemyx.org/pmtiles/lower-mainland-extract.pmtiles"
    format: pmtiles
    name: Protomaps
    fitBounds: false

layers:
  # Earth - landmass base
  - id: earth-fill
    source: protomaps
    type: fill
    source-layer: earth
    paint:
      fill-color: "#1a1a2e"
      fill-opacity: 0.4

  # Water - oceans, lakes, rivers
  - id: water-fill
    source: protomaps
    type: fill
    source-layer: water
    paint:
      fill-color: "#193d5a"
      fill-opacity: 0.8

  # Landcover - natural areas
  - id: landcover-fill
    source: protomaps
    type: fill
    source-layer: landcover
    paint:
      fill-color: "#1a3a2a"
      fill-opacity: 0.5

  # Landuse - parks, residential, commercial zones
  - id: landuse-fill
    source: protomaps
    type: fill
    source-layer: landuse
    paint:
      fill-color: "#2a4a3a"
      fill-opacity: 0.4

  # Buildings - footprints
  - id: buildings-fill
    source: protomaps
    type: fill
    source-layer: buildings
    minzoom: 13
    paint:
      fill-color: "#3a3a5c"
      fill-opacity: 0.6

  # Boundaries - admin borders
  - id: boundaries-line
    source: protomaps
    type: line
    source-layer: boundaries
    paint:
      line-color: "#6366f1"
      line-width: 1.5
      line-opacity: 0.5

  # Roads - street network
  - id: roads-line
    source: protomaps
    type: line
    source-layer: roads
    paint:
      line-color: "#94a3b8"
      line-width:
        - interpolate
        - ["exponential", 1.5]
        - ["zoom"]
        - 5
        - 0.5
        - 14
        - 2
        - 18
        - 8
      line-opacity: 0.7

  # Places - city and town labels
  - id: places-label
    source: protomaps
    type: symbol
    source-layer: places
    minzoom: 5
    layout:
      text-field: ["get", "name"]
      text-size:
        - interpolate
        - ["linear"]
        - ["zoom"]
        - 5
        - 10
        - 12
        - 14
      text-font: ["Open Sans Regular"]
      text-max-width: 8
    paint:
      text-color: "#e2e8f0"
      text-halo-color: "#0f172a"
      text-halo-width: 1.5

  # POIs - points of interest
  - id: pois-label
    source: protomaps
    type: symbol
    source-layer: pois
    minzoom: 15
    layout:
      text-field: ["get", "name"]
      text-size: 11
      text-font: ["Open Sans Regular"]
      text-max-width: 8
    paint:
      text-color: "#a5b4fc"
      text-halo-color: "#0f172a"
      text-halo-width: 1