# Artemyx Example - Multi-Step Workflow
# Edmonton schools + transit: where can you walk to both?
# Geodetically accurate at 53.5 N - buffers are true circles via UTM reprojection.
#
# Four chained operations:
# 1. Union bus stops + LRT stations into a single transit dataset
# 2. Buffer schools by 800m (dissolve) - walkable-to-school zones
# 3. Buffer unified transit by 400m (dissolve) - walkable-to-transit zones
# 4. Intersection (clip) - areas within walking distance of both
map:
center: [-113.4938, 53.5461] # Edmonton, AB
zoom: 11
basemap: carto-dark
datasets:
- id: neighbourhoods
url: "https://data.edmonton.ca/resource/65fr-66s6.geojson"
name: Edmonton Neighbourhoods
color: "#475569"
- id: schools
url: "https://data.edmonton.ca/resource/ehbr-emhe.geojson"
name: Edmonton Schools
color: "#fb923c"
- id: bus_stops
url: "https://data.edmonton.ca/resource/4vt2-8zrq.geojson"
name: Edmonton Bus Stops
color: "#38bdf8"
- id: lrt_stations
url: "https://data.edmonton.ca/resource/fhxi-cnhe.geojson"
name: Edmonton LRT Stations
color: "#a78bfa"
operations:
# Step 1: merge bus stops + LRT stations into one transit dataset
- type: union
inputs: [bus_stops, lrt_stations]
output: all_transit
name: All Transit Stops
params:
mode: merge
color: "#38bdf8"
# Step 2: 800m walkshed around every school (~10 min walk)
- type: buffer
input: schools
output: school_walksheds
name: School Walksheds (800m)
params:
distance: 800
units: meters
dissolve: true
color: "#fb923c"
# Step 3: 400m walkshed around every transit stop (~5 min walk)
- type: buffer
input: all_transit
output: transit_walksheds
name: Transit Walksheds (400m)
params:
distance: 400
units: meters
dissolve: true
color: "#38bdf8"
# Step 4: clip school walksheds by transit walksheds - the overlap
- type: intersection
inputs: [school_walksheds, transit_walksheds]
output: dual_access
name: Dual Access Zones
params:
mode: clip
color: "#34d399"
layers:
# --- Context (bottom) ---
# Neighbourhoods - faint context polygons
- id: neighbourhoods-fill
source: neighbourhoods
type: fill
paint:
fill-color: "#475569"
fill-opacity: 0.04
- id: neighbourhoods-outline
source: neighbourhoods
type: line
paint:
line-color: "#475569"
line-width: 0.5
line-opacity: 0.25
# --- Raw inputs ---
# Bus stops - tiny faint dots
- id: bus-stops-circle
source: bus_stops
type: circle
paint:
circle-radius: 1.5
circle-color: "#38bdf8"
circle-opacity: 0.2
# All transit (union result) - slightly larger, still subtle
- id: all-transit-circle
source: all_transit
type: circle
paint:
circle-radius: 2
circle-color: "#38bdf8"
circle-opacity: 0.15
# --- Step 2 result: school walksheds ---
- id: school-walksheds-fill
source: school_walksheds
type: fill
paint:
fill-color: "#fb923c"
fill-opacity: 0.08
- id: school-walksheds-outline
source: school_walksheds
type: line
paint:
line-color: "#fdba74"
line-width: 1
line-opacity: 0.25
# --- Step 3 result: transit walksheds ---
- id: transit-walksheds-fill
source: transit_walksheds
type: fill
paint:
fill-color: "#38bdf8"
fill-opacity: 0.08
- id: transit-walksheds-outline
source: transit_walksheds
type: line
paint:
line-color: "#7dd3fc"
line-width: 1
line-opacity: 0.25
# --- Step 4 result: dual access ---
- id: dual-access-fill
source: dual_access
type: fill
paint:
fill-color: "#34d399"
fill-opacity: 0.4
- id: dual-access-outline
source: dual_access
type: line
paint:
line-color: "#6ee7b7"
line-width: 2
line-opacity: 0.9
# --- Points on top ---
# LRT stations
- id: lrt-stations-circle
source: lrt_stations
type: circle
paint:
circle-radius: 6
circle-color: "#a78bfa"
circle-stroke-color: "#4c1d95"
circle-stroke-width: 1.5
circle-opacity: 0.9
# Schools as points
- id: schools-circle
source: schools
type: circle
paint:
circle-radius: 4
circle-color: "#fb923c"
circle-stroke-color: "#7c2d12"
circle-stroke-width: 1