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 - Attribute Filter
# Vancouver cycling network filtered by infrastructure quality.
#
# Not all bike infrastructure is equal. This config filters Vancouver's full
# cycling network down to progressively safer subsets using two authoring modes:
#
#   where (advanced)   - keep Local Streets and Protected Bike Lanes (safer routes)
#   property/value     - keep Protected Bike Lanes only (highest-quality infrastructure)
#
# The safer-routes subset is buffered to show walkshed coverage, then the
# protected-only corridors are highlighted on top - showing where cycling is
# both accessible and fully separated from traffic.

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

datasets:
  - id: bikeways
    url: "https://opendata.vancouver.ca/api/explore/v2.1/catalog/datasets/bikeways/exports/geojson?lang=en&timezone=America%2FLos_Angeles"
    name: Vancouver Bikeways
    hidden: true  # Source-only - feeds operations without rendering directly

operations:
  # Advanced where: keep routes where separated or low-traffic conditions apply.
  # Local Streets and Protected Bike Lanes represent the safer end of the spectrum.
  # IN clause requires the where escape hatch - not expressible as a single property/value filter.
  - type: attribute
    input: bikeways
    output: safe_bikeways
    name: Safe Cycling Routes
    params:
      where: "json_extract_string(properties, '$.bikeway_type') IN ('Local Street', 'Protected Bike Lanes')"
    color: "#4ade80"
    style:
      lineWidth: 2

  # Buffer the safer routes to show 200m walking catchment area.
  # Dissolve merges overlapping buffers into a single coverage polygon.
  - type: buffer
    input: safe_bikeways
    output: safe_walkshed
    name: Safe Route Walkshed (200m)
    params:
      distance: 200
      units: meters
      dissolve: true
    color: "#4ade80"
    style:
      fillOpacity: 0.15
      lineWidth: 1

  # Structured filter: Protected Bike Lanes only - the highest-quality infrastructure.
  # Simple equality check; no SQL knowledge required.
  - type: attribute
    input: bikeways
    output: protected_only
    name: Protected Bike Lanes
    params:
      property: bikeway_type
      value: Protected Bike Lanes
    color: "#06b6d4"
    style:
      lineWidth: 3

layers:
  # Safe route walkshed as background fill
  - id: safe-walkshed-fill
    source: safe_walkshed
    type: fill
    paint:
      fill-color: "#4ade80"
      fill-opacity: 0.1

  - id: safe-walkshed-outline
    source: safe_walkshed
    type: line
    paint:
      line-color: "#4ade80"
      line-width: 1
      line-opacity: 0.35

  # Safer routes (Local Streets + Protected) - contextual reference layer
  - id: safe-bikeways-line
    source: safe_bikeways
    type: line
    paint:
      line-color: "#4ade80"
      line-width: 1.5
      line-opacity: 0.45

  # Protected bike lanes - highlighted on top
  - id: protected-only-line
    source: protected_only
    type: line
    paint:
      line-color: "#06b6d4"
      line-width: 3
      line-opacity: 0.9