# catalog/operations/analysis/distance_to_features.yaml

id: analysis_distance_to_features
name: Distance to Features
description: >
  Compute Euclidean distance from each raster pixel to the nearest vector
  feature. Output values are in meters. Useful for proximity analysis
  (e.g., distance to transmission lines, roads, water bodies).
version: 1.0.0
domain: geo
category: analysis
type: raster-vector-to-raster

inputs:
  raster:
    type: raster
    description: Reference raster (defines output grid shape, CRS, and transform)
    required: true
  features:
    type: vector
    description: Vector features to measure distance to (points, lines, or polygons)
    required: true

# Structural: Euclidean distance on any raster grid + any vector features.
# requires: omitted. Output is a distance field (meters), no canonical concept.

params:
  max_distance:
    type: number
    description: Maximum distance in meters. Pixels beyond this are clamped.
    required: false
    default: null

output:
  type: raster
  dtype: float32
  description: Distance in meters to nearest feature. 0 at feature locations.

# backends: audited 2026-08-14 (defect 50). A key means a runtime that DISPATCHES this op —
# folia-engine `dispatch_op` (products/sdk/folia-engine/src/lib.rs), a `registerOp`/OP_TABLE
# entry in packages/compute, `_BUILTIN_OP_MAP` in folia/compute.py, or a backend manifest
# (folia/backends/*/backend.yaml).
backends:
  python:
    function: geo.raster.distance_to_features
    dispatch: folia/compute.py _BUILTIN_OP_MAP

display_hints:
  map:
    palette: viridis_r
    title: Distance to Features
  info:
    show: [min, max, mean, units]
