{
  "format": "geolibre-language-pack",
  "formatVersion": 1,
  "scope": "whitebox",
  "locale": "nl",
  "name": "Nederlands Whitebox-taalpakket",
  "updatedAt": "2026-09-25T16:57:57.026Z",
  "translations": {
    "processing": {
      "toolMeta": {
        "whitebox": {
          "build_object_hierarchy_multiscale": {
            "name": "Multischaal objecthiërarchie opbouwen",
            "description": "Hiërarchisch objectnetwerk dat wordt opgebouwd door iteratieve aggregatie over meerdere segmentatieschalen, waarbij fijnere segmenten geleidelijk worden samengevoegd op basis van spectrale gelijkenis en ruimtelijke aangrenzing. Bouwt een boomstructuur waarin bladknopen fijnschalige segmenten voorstellen en de wortel het volledige beeld. Bevattingsrelaties coderen ouder-kindhiërarchieën (deel-geheel) van objecten, wat multiresolutieanalyse en schaaladaptieve objectquery's over hiërarchieniveaus mogelijk maakt. Belangrijkste kenmerken: multischalige segmentatiehiërarchie; volgt deel-geheelrelaties; ondersteunt geneste objectquery's; maakt schaaladaptieve analyse mogelijk; geheugenefficiënte hiërarchische representatie; vergemakkelijkt trapsgewijze classificatie. Toepassingen: hiërarchische landbedekkingskartering; extractie van gebouwcomplexen uit componenten; detectie van landbouwpercelen; analyse van vegetatielagen; afbakening van stadswijken; kartering van wetlands met classificatie van subcomponenten. Interpretatie van de uitvoer: de uitvoer is een hiërarchische objectdatabase die schaalafhankelijke structuur codeert. Bevraag objecten op specifieke schalen; tussenliggende schalen tonen overgangsschalen van objecten die detail en generalisatie in evenwicht brengen. Ouder-kindrelaties tonen de compositionele structuur. Statistische verdelingen per schaalniveau karakteriseren eigenschappen van objectgrootte/-vorm op elk hiërarchieniveau, wat de keuze van een schaaloptimale classificatiestrategie mogelijk maakt.",
            "params": {
              "coarse_segments": {
                "label": "Grove segmenten",
                "description": "Grof segmentraster."
              },
              "fine_segments": {
                "label": "Fijne segmenten",
                "description": "Fijn segmentraster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de hiërarchie-CSV."
              }
            }
          },
          "classify_objects_ensemble_pro": {
            "name": "Objecten classificeren met ensemble (Pro)",
            "description": "Voert een objectclassificatieconfiguratie in ensemblestijl uit, afgestemd op hogere stabiliteit over heterogene scènes.",
            "params": {
              "features": {
                "label": "Kenmerken",
                "description": "Invoer-CSV met objectkenmerken (moet segment_id en numerieke kenmerkkolommen bevatten)."
              },
              "training": {
                "label": "Training",
                "description": "Trainings-CSV met kolommen segment_id en klasselabel."
              },
              "segment_id_field": {
                "label": "Segment-ID-veld",
                "description": "Veldnaam van de segment-ID (standaard segment_id)."
              },
              "class_field": {
                "label": "Klasseveld",
                "description": "Klasselabelveld in de trainings-CSV (standaard class)."
              },
              "n_trees": {
                "label": "Aantal bomen",
                "description": "Aantal bomen (standaard 200)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de voorspellingen-CSV."
              }
            }
          },
          "classify_objects_random_forest": {
            "name": "Objecten classificeren met random forest",
            "description": "Traint een Random Forest-ensembleclassificator op gelabelde trainingssamples van segmenten met spectrale, morfologische en textuurkenmerken als voorspellers. Construeert meerdere beslissingsbomen via bootstrapsampling en kenmerkrandomisatie en aggregeert vervolgens de voorspellingen via meerderheidsstemming. De classificatie werkt op kenmerkvectoren per segment en kent objectklasselabels probabilistisch toe op basis van de ensembleconsensus, wat robuuste multiklasse-objectcategorisering op basis van OBIA-kenmerken mogelijk maakt. Belangrijke kenmerken zijn ensembleleren dat meerdere beslissingsbomen combineert voor robuuste classificatie, verwerking van hoogdimensionale kenmerkruimten die typisch zijn voor multispectrale OBIA, betrouwbaarheids- en waarschijnlijkheidsschattingen van de classificatie, rangschikking van kenmerkbelang die onderscheidende eigenschappen identificeert, natuurlijke verwerking van niet-lineaire kenmerkinteracties en robuustheid tegen ruis en redundantie in kenmerken. Toepassingen omvatten multiklasse-landbedekkingsclassificatie uit OBIA-segmenten (stedelijk, landbouw, bos, water), gesuperviseerde classificatie op objectniveau die wordt verfijnd via selectie van trainingssamples, classificatie van veranderingsdetectie over temporele segmentatiereeksen, hiërarchische classificatie (grove habitattypen verfijnd tot fijne categorieën) en integratie met handmatige trainingssamples uit visuele interpretatie. Het voorspelde klasselabel in de uitvoer identificeert het primaire objecttype; de betrouwbaarheidswaarschijnlijkheid geeft de zekerheid van de classificatie aan; een lage betrouwbaarheid wijst op dubbelzinnige tussenliggende objecten; het kenmerkbelang identificeert welke spectrale/morfologische eigenschappen de classificatiebeslissingen sturen; de classificatiekaart geeft de verdeling van objecttypen direct weer; verwarring tussen vergelijkbare klassen stuurt de verfijning van de training; probabilistische uitvoer maakt kwantificering van onzekerheid mogelijk.",
            "params": {
              "features": {
                "label": "Kenmerken",
                "description": "Invoer-CSV met objectkenmerken (moet segment_id en numerieke kenmerkkolommen bevatten)."
              },
              "training": {
                "label": "Training",
                "description": "Trainings-CSV met kolommen segment_id en klasselabel."
              },
              "segment_id_field": {
                "label": "Segment-ID-veld",
                "description": "Veldnaam van de segment-ID (standaard segment_id)."
              },
              "class_field": {
                "label": "Klasseveld",
                "description": "Klasselabelveld in de trainings-CSV (standaard class)."
              },
              "n_trees": {
                "label": "Aantal bomen",
                "description": "Aantal bomen (standaard 200)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de voorspellingen-CSV."
              }
            }
          },
          "classify_objects_rules_basic": {
            "name": "Objecten classificeren met basisregels",
            "description": "Past transparante regelgebaseerde objectclassificatie toe op basis van een CSV-bestand met kenmerk-operator-drempelregels. Volledig interpreteerbare beslissingslogica voor workflows van domeinexperts en naleving van regelgeving.",
            "params": {
              "features": {
                "label": "Kenmerken",
                "description": "Invoer-CSV met objectkenmerken."
              },
              "rules": {
                "label": "Regels",
                "description": "Regels-CSV met kolommen: feature, op, value, class, [priority]."
              },
              "default_class": {
                "label": "Standaardklasse",
                "description": "Terugvalklasse wanneer geen enkele regel overeenkomt."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de voorspellingen-CSV."
              }
            }
          },
          "classify_objects_rules_hierarchical": {
            "name": "Objecten classificeren met hiërarchische regels",
            "description": "Past hiërarchische regelgebaseerde objectclassificatie toe; gebruikt momenteel geordende regels met een deterministische terugvaloptie.",
            "params": {
              "features": {
                "label": "Kenmerken",
                "description": "Invoer-CSV met objectkenmerken."
              },
              "rules": {
                "label": "Regels",
                "description": "Regels-CSV met kolommen: feature, op, value, class, [priority]."
              },
              "default_class": {
                "label": "Standaardklasse",
                "description": "Terugvalklasse wanneer geen enkele regel overeenkomt."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de voorspellingen-CSV."
              }
            }
          },
          "classify_objects_svm": {
            "name": "Objecten classificeren met SVM",
            "description": "Classificeert objecten met een workflow in SVM-stijl (geïmplementeerd via de robuuste standaardinstellingen van de objectclassificatie-backend).",
            "params": {
              "features": {
                "label": "Kenmerken",
                "description": "Invoer-CSV met objectkenmerken (moet segment_id en numerieke kenmerkkolommen bevatten)."
              },
              "training": {
                "label": "Training",
                "description": "Trainings-CSV met kolommen segment_id en klasselabel."
              },
              "segment_id_field": {
                "label": "Segment-ID-veld",
                "description": "Veldnaam van de segment-ID (standaard segment_id)."
              },
              "class_field": {
                "label": "Klasseveld",
                "description": "Klasselabelveld in de trainings-CSV (standaard class)."
              },
              "n_trees": {
                "label": "Aantal bomen",
                "description": "Aantal bomen (standaard 200)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de voorspellingen-CSV."
              }
            }
          },
          "evaluate_object_classification_accuracy": {
            "name": "Nauwkeurigheid van objectclassificatie evalueren",
            "description": "Berekent nauwkeurigheidsmaten voor de classificatie door voorspelde objectlabels te vergelijken met referentie- of validatielabels (grondwaarheid). Genereert een confusiematrix die de patronen van overeenstemming/afwijking per klasse documenteert en berekent de totale nauwkeurigheid (totaal aantal correcte voorspellingen), de producentnauwkeurigheid per klasse (detectiegraad), de gebruikersnauwkeurigheid (betrouwbaarheid), de F1-score (harmonisch gemiddelde), de kappastatistiek (voor toeval gecorrigeerde overeenstemming) en een klassespecifieke foutenanalyse die systematische misclassificatiepatronen identificeert. Belangrijke kenmerken zijn een uitgebreide nauwkeurigheidsbeoordeling over alle klassen, prestatiematen per klasse die klassespecifieke diagnostiek mogelijk maken, een confusiematrix die systematische misclassificatiepatronen blootlegt, statistische significantietoetsing via de kappacoëfficiënt, natuurlijke verwerking van onevenwichtige klasseverdelingen en identificatie van problemen met de toereikendheid van trainingsgegevens. Toepassingen omvatten validatie en prestatiekwantificering van classificatiemodellen, vergelijking van concurrerende classificatiebenaderingen en parameters, identificatie van problematische objectklassen die extra training vereisen, beoordeling van de geschiktheid van de classificatie voor operationele toepassingen, modelselectie en afstemming van hyperparameters op basis van nauwkeurigheid, kwaliteitsborging in geautomatiseerde karteringsworkflows en rapportage van gestandaardiseerde nauwkeurigheidsmaten voor peer review. De totale nauwkeurigheid in de uitvoer geeft de betrouwbaarheid van de classificatie over alle objecten weer; de producentnauwkeurigheid geeft de volledigheid van de detectie per klasse aan; de gebruikersnauwkeurigheid geeft de betrouwbaarheid van de voorspelling aan; een hoge kappa (>0.8) wijst op sterke overeenstemming boven toeval; de confusiematrix toont welke klassen met elkaar worden verward; dominantie van de diagonaal wijst op sterke klassescheiding; elementen buiten de diagonaal wijzen de bronnen van misclassificatie aan; klassespecifieke maten sturen gerichte verbetering van de training.",
            "params": {
              "predictions": {
                "label": "Voorspellingen",
                "description": "Voorspellingen-CSV met segment_id en predicted_class."
              },
              "reference": {
                "label": "Referentie",
                "description": "Referentie-CSV met segment_id en class."
              },
              "segment_id_field": {
                "label": "Segment-ID-veld",
                "description": "Veldnaam van de segment-ID (standaard segment_id)."
              },
              "predicted_field": {
                "label": "Voorspeld veld",
                "description": "Veld met voorspelde klasse (standaard predicted_class)."
              },
              "reference_field": {
                "label": "Referentieveld",
                "description": "Veld met referentieklasse (standaard class)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het JSON-rapport."
              }
            }
          },
          "evaluate_segmentation_quality_pro": {
            "name": "Segmentatiekwaliteit evalueren (Pro)",
            "description": "Berekent diagnostiek voor de segmentatiekwaliteit, waaronder statistieken voor het aantal objecten en de overlap van dominante labels.",
            "params": {
              "segments": {
                "label": "Segmenten",
                "description": "Invoerraster met segmentlabels."
              },
              "reference": {
                "label": "Referentie",
                "description": "Optioneel referentielabelraster voor diagnostiek op basis van overlap."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het JSON-rapport."
              }
            }
          },
          "image_segmentation": {
            "name": "Beeldsegmentatie",
            "description": "Segmenteert multiband-rasterstapels in aaneengesloten homogene regio's met behulp van regiogroei vanuit zaadpunten.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Array van enkelbandige invoerrasters (één per band)."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters automatisch geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonsteringsmethode bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "threshold": {
                "label": "Drempelwaarde",
                "description": "Afstandsdrempelwaarde voor regiogroei in de gestandaardiseerde kenmerkruimte (standaard 0.5)."
              },
              "steps": {
                "label": "Stappen",
                "description": "Aantal zaadprioriteitsbanden (standaard 10)."
              },
              "min_area": {
                "label": "Minimale oppervlakte",
                "description": "Optionele minimale regio-oppervlakte voor opschoning na samenvoeging (standaard 4)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "image_slider": {
            "name": "Beeldschuifvergelijking",
            "description": "Image Slider is een interactief visualisatiehulpmiddel dat directe vergelijking op pixelniveau tussen gecoregistreerde rastergegevenssets mogelijk maakt via versleepbare horizontale of verticale overlayscheidingslijnen. Algoritme: houdt twee uitgelijnde rastergegevenssets in het geheugen, geeft een gecombineerde weergave weer met een verstelbare positie van de scheidingslijn die de zichtbaarheid van de lagen bepaalt, en gebruikersinteractie past de scheidingslijn dynamisch aan waardoor een split-screeneffect ontstaat. Ondersteunt zowel horizontale als verticale scheidingsrichtingen. Belangrijkste kenmerken: interactieve realtime vergelijking, behoudt visualisatie op volledige resolutie, intuïtieve gebruikersinterface waarvoor geen analytische vaardigheden nodig zijn, werkt met multispectrale en geïndexeerde rasters, ondersteunt grote gegevenssets via efficiënte weergave. Mogelijkheden: visualisatie van veranderingsdetectie, voor-/navergelijking, multitemporele analyse, beoordeling van radiometrische normalisatie, visuele controle van de classificatienauwkeurigheid. Toepassingen: detecteren van veranderingen in beelden tussen datums, vergelijken van classificatieresultaten met referentiegegevens, evalueren van de effectiviteit van voorbewerking, visuele veranderingsdetectie in tijdreeksanalyse. Toepassingsgebieden: schadebeoordeling bij rampenbestrijding, monitoring van stedelijke uitbreiding, detectie van bosverstoring, monitoring van veranderingen in de landbouw, kwaliteitscontrole van beeldverwerkingsresultaten. Interpretatie van de uitvoer: visuele verschillen tonen de omvang en locatie van veranderingen; scherpe randen wijzen op significante veranderingen; geleidelijke overgangen duiden op onnauwkeurige registratie of temporele gradatie; systematische verschillen over het beeld tonen systematische verwerkingsartefacten.",
            "params": {
              "input1": {
                "label": "Invoer1",
                "description": "Rasterpad of getypt rasterobject van het linkerbeeld."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Rasterpad of getypt rasterobject van het rechterbeeld."
              },
              "label1": {
                "label": "Label1",
                "description": "Optioneel label dat bij het linkerbeeld wordt getoond."
              },
              "left_palette": {
                "label": "Linker palet",
                "description": "Palet voor het linker niet-RGB-beeld (standaard grey)."
              },
              "left_reverse_palette": {
                "label": "Linker palet omkeren",
                "description": "Het linkerpalet omkeren."
              },
              "label2": {
                "label": "Label2",
                "description": "Optioneel label dat bij het rechterbeeld wordt getoond."
              },
              "right_palette": {
                "label": "Rechter palet",
                "description": "Palet voor het rechter niet-RGB-beeld (standaard grey)."
              },
              "right_reverse_palette": {
                "label": "Rechter palet omkeren",
                "description": "Het rechterpalet omkeren."
              },
              "height": {
                "label": "Hoogte",
                "description": "Weergavehoogte in pixels (standaard 600)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het HTML-bestand."
              }
            }
          },
          "image_stack_profile": {
            "name": "Beeldstapelprofiel",
            "description": "Extraheert profielen per punt over een geordende rasterstapel en schrijft optioneel een HTML-rapport.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Lijst van invoerrasters als array van paden of als door komma's/puntkomma's gescheiden tekenreeks."
              },
              "points": {
                "label": "Punten",
                "description": "Pad van de puntvector (of getypt vectorobject) met de steekproeflocaties."
              },
              "output_html": {
                "label": "Uitvoer-HTML",
                "description": "Optioneel uitvoerpad van het HTML-rapport."
              }
            }
          },
          "obia_audit_report_pro": {
            "name": "OBIA-auditrapport (Pro)",
            "description": "Stelt een auditrapport op voor artefacten van een OBIA-workflow, met metadata over het bestaan, de grootte en de tijdstempel van bestanden.",
            "params": {
              "artifacts": {
                "label": "Artefacten",
                "description": "Array van te controleren artefactpaden."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het JSON-controlerapport."
              }
            }
          },
          "obia_batch_orchestrator_pro": {
            "name": "OBIA-batchorkestrator (Pro)",
            "description": "Voert meerdere OBIA-pijplijntaken in één verzoek uit en retourneert een geconsolideerd taakrapport.",
            "params": {
              "jobs": {
                "label": "Taken",
                "description": "Array van taakobjecten met inputs, training, output_prefix en optioneel segment_method."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van het JSON-rapport."
              }
            }
          },
          "obia_pipeline_basic": {
            "name": "OBIA-basispijplijn",
            "description": "Voert een volledige end-to-end OBIA-workflow uit in één bewerking: segmentatie (SLIC/Graph), samenvoegen van kleine regio's, extractie van spectrale/vormkenmerken en Random Forest-classificatie.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Array van enkelbandige invoerrasters voor segmentatie/kenmerken."
              },
              "training": {
                "label": "Training",
                "description": "Trainings-CSV met kolommen segment_id en class."
              },
              "output_prefix": {
                "label": "Uitvoervoorvoegsel",
                "description": "Uitvoerpadvoorvoegsel voor gegenereerde artefacten."
              },
              "segment_method": {
                "label": "Segmentatiemethode",
                "description": "Segmentatiemethode: slic of graph (standaard slic)."
              },
              "min_size": {
                "label": "Minimale grootte",
                "description": "Minimale segmentgrootte voor opschoning door samenvoeging (standaard 10)."
              },
              "class_field": {
                "label": "Klasseveld",
                "description": "Veldnaam van de trainingsklasse (standaard class)."
              }
            }
          },
          "object_class_probability_maps": {
            "name": "Objectklasse-waarschijnlijkheidskaarten",
            "description": "Zet voorspellingen om in waarschijnlijkheidskaarten per klasse, wat rastergebaseerde visualisatie van onzekerheid en filtering op basis van betrouwbaarheid mogelijk maakt. Ondersteunt verdere betrouwbaarheidsdrempeling en multilabelscenario's.",
            "params": {
              "predictions": {
                "label": "Voorspellingen",
                "description": "Voorspellingen-CSV met segment_id en predicted_class."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de waarschijnlijkheids-CSV."
              }
            }
          },
          "object_features_context_neighbors": {
            "name": "Objectkenmerken - contextbuurobjecten",
            "description": "Berekent ruimtelijke contextkenmerken: aantallen aangrenzende objecten, lengtes van gedeelde grenzen en isolatiematen. Maakt buurbewuste classificatie mogelijk die relaties tussen objecten in het landschap vastlegt.",
            "params": {
              "segments": {
                "label": "Segmenten",
                "description": "Invoerraster met segmentlabels."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het CSV-bestand."
              }
            }
          },
          "object_features_shape_basic": {
            "name": "Objectkenmerken - vorm (basis)",
            "description": "Berekent geometrische en morfologische vormdescriptoren voor elk segment, waaronder oppervlakte (aantal pixels), omtrek (grenslengte), compactheid (naar omtrek genormaliseerde circulariteit), elongatie (lengte-breedteverhouding), vormfactor (genormaliseerde vormregelmatigheid) en soliditeit (efficiëntie ten opzichte van de convexe omhullende). Vormdescriptoren leggen structurele kenmerken vast onafhankelijk van de spectrale inhoud, wat classificatie op objectgeometrie en morfologische patroonherkenning mogelijk maakt. Belangrijke kenmerken zijn uitgebreide reeksen vormmaten voor oppervlakte, omtrek, regelmatigheid en elongatie, rekenkundig efficiënte algoritmen voor grenstracering, maten die invariant zijn voor rotatie en translatie, toepasbaarheid over schaalbereiken en de mogelijkheid tot morfologische objectclassificatie (bijv. langgerekte wegen versus compacte gebouwen). Toepassingen omvatten classificatie van gebouwcontouren en analyse van de stedelijke structuur, extractie van lijnvormige elementen (wegen, rivieren, grenzen), karakterisering van vegetatievlakken en fragmentatieanalyse, kwaliteitscontrole via vormgebaseerde filtering, hiërarchische objectherkenning die vorm- en spectrale eigenschappen combineert en kwantificering van de landschapsstructuur in ecologische monitoring. De oppervlakte in de uitvoer kwantificeert de segmentgrootte in pixels; de omtrek bepaalt de complexiteit van de grens; een compactheid rond 1.0 wijst op cirkelvormige/regelmatige vormen, lagere waarden op onregelmatige/langgerekte elementen; een elongatie >1 wijst op lijnvormige elementen, rond 1 op compacte objecten; de vormfactor combineert meerdere vormeigenschappen voor geïntegreerde vormclassificatie; vormmaten maken morfologische filtering mogelijk om doelobjecttypen te isoleren.",
            "params": {
              "segments": {
                "label": "Segmenten",
                "description": "Invoerraster met segmentlabels."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het CSV-bestand."
              }
            }
          },
          "object_features_spectral_basic": {
            "name": "Objectkenmerken - spectraal (basis)",
            "description": "Berekent uitgebreide univariate statistische samenvattingen van spectrale reflectiewaarden binnen elk segment over alle beeldbanden. Berekeningen per segment omvatten de gemiddelde reflectie, de standaardafwijking (homogeniteit), de minimum- en maximumgrenzen van de reflectie, kwantielwaarden voor robuuste schatting en statistieken per band die kwantificering van multispectrale textuur en karakterisering van spectrale profielen mogelijk maken, wat fundamenteel is voor OBIA-classificatieworkflows. Belangrijke kenmerken zijn het genereren van spectrale statistieken per band voor multispectrale en hyperspectrale beelden, robuuste statistische maten voor centrale tendens en spreiding, identificatie van spectrale anomalieën en uitschieters binnen segmenten, efficiënte samenvatting van raster naar vector en uitvoer die direct kan worden ingevoerd in machine-learning-classificatiepijplijnen. Toepassingen omvatten kenmerkextractie voor objectgebaseerde classificatie met spectrale maten, identificatie van landbedekkingstypen via analyse van spectrale signaturen, veranderingsdetectie via vergelijking van spectrale statistieken over temporele reeksen, beoordeling van de gegevenskwaliteit en detectie van uitschieters, milieumonitoring via spectrale tijdreeksanalyse en toepassingen in precisielandbouw die een genormaliseerde karakterisering van de spectrale respons vereisen. De gemiddelde waarden in de uitvoer geven de typische spectrale respons van het segmentmateriaal weer; de standaardafwijking kwantificeert de interne heterogeniteit (laag = homogeen oppervlak, hoog = gemengde materialen of schaduwen); de min-/max-grenzen identificeren spectrale extremen binnen segmenten; spectrale profielen maken vergelijking met referentiesignaturen mogelijk; de statistieken vormen de basis voor kenmerkvectoren voor classificatie; analyse per band toont spectrale indices en het vermogen om materialen te onderscheiden.",
            "params": {
              "segments": {
                "label": "Segmenten",
                "description": "Invoerraster met segmentlabels."
              },
              "inputs": {
                "label": "Invoeren",
                "description": "Array van enkelbandige invoerrasters die voor spectrale kenmerken worden gebruikt."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het CSV-bestand."
              }
            }
          },
          "object_features_texture_glcm_basic": {
            "name": "Objectkenmerken - GLCM-textuur (basis)",
            "description": "Extraheert textuurkenmerken met behulp van GLCM-analyse (Gray-Level Co-occurrence Matrix) berekend op basis van de intensiteitsverdelingen per band binnen elk segment. GLCM kwantificeert het ruimtelijk samen voorkomen van grijswaardeniveaus en genereert descriptoren zoals contrast (lokale variatie), homogeniteit (ruimtelijke regelmaat), energie (ordelijkheid), entropie (wanorde) en ongelijkheidsmaten die textuurpatronen vastleggen onafhankelijk van de algehele spectrale helderheid. Belangrijke kenmerken zijn op GLCM gebaseerde textuurmaten die lokale ruimtelijke patronen binnen segmenten vastleggen, analyse in meerdere richtingen (horizontaal, verticaal, diagonaal) voor richtingsonafhankelijke textuurkarakterisering, toepasbaarheid op alle beeldbanden voor textuurvingerafdrukken, onderscheid tussen getextureerde en gladde oppervlakken en rekenkundig haalbare analyse op segmentniveau. Toepassingen omvatten classificatie van materialen op basis van oppervlakteruwheid en textuur (asfalt versus beton, onderscheid tussen gewastypen), karakterisering van bosstructuur en -dichtheid via kronendaktextuur, interpretatie van SAR-beelden en analyse van de textuur van het stedelijk weefsel, onderscheid tussen oppervlakken van goede kwaliteit en aangetaste oppervlakken, beoordeling van de gewasgezondheid via textuurmaten van het gewasdak en detectie van wolken en schaduwen via textuuranomalieën. Een hoog contrast in de uitvoer wijst op een ruwe/variabele textuur, een laag contrast op gladde oppervlakken; een hoge homogeniteit wijst op regelmatige ruimtelijke patronen, een lage op een chaotische textuur; een hoge energie wijst op een georganiseerde textuur, een lage op willekeurige ruis; de entropie kwantificeert de wanorde van de textuur; de ongelijkheid legt de onregelmatigheid van ruimtelijke patronen vast; textuurprofielen maken materiaalspecifieke classificatie mogelijk; combinatie met spectrale kenmerken verbetert het onderscheid tussen objecttypen.",
            "params": {
              "segments": {
                "label": "Segmenten",
                "description": "Invoerraster met segmentlabels."
              },
              "input": {
                "label": "Invoer",
                "description": "Enkelbandig intensiteitsraster voor textuuranalyse."
              },
              "levels": {
                "label": "Niveaus",
                "description": "Kwantisatieniveaus voor GLCM (standaard 16)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het CSV-bestand."
              }
            }
          },
          "object_features_topology_relations": {
            "name": "Objectkenmerken - topologische relaties",
            "description": "Berekent kenmerken van de graaftopologie: objectgraad (aantal buren), sterkte van de dominante buur en articulatievlaggen. Legt de structurele positie in het objectnetwerk vast voor hiërarchische classificatie.",
            "params": {
              "segments": {
                "label": "Segmenten",
                "description": "Invoerraster met segmentlabels."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het CSV-bestand."
              }
            }
          },
          "object_uncertainty_diagnostics_pro": {
            "name": "Objectonzekerheidsdiagnostiek (Pro)",
            "description": "Berekent geaggregeerde onzekerheidsdiagnostiek uit de waarschijnlijkheidsuitvoer van objecten.",
            "params": {
              "probabilities": {
                "label": "Waarschijnlijkheden",
                "description": "Invoer-CSV met waarschijnlijkheden, met kolommen probability en uncertainty."
              },
              "low_conf_threshold": {
                "label": "Drempelwaarde voor lage betrouwbaarheid",
                "description": "Drempelwaarde voor lage betrouwbaarheid op de waarschijnlijkheid (standaard 0.7)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het diagnostiek-JSON-bestand."
              }
            }
          },
          "objects_boundary_refinement_pro": {
            "name": "Objectgrensverfijning (Pro)",
            "description": "Verfijnt objectgrenzen met iteratieve opschoning van kleine regio's en buurbewust samenvoegen.",
            "params": {
              "segments": {
                "label": "Segmenten",
                "description": "Invoerraster met segmentlabels."
              },
              "iterations": {
                "label": "Iteraties",
                "description": "Verfijningsiteraties (standaard 2)."
              },
              "min_size": {
                "label": "Minimale grootte",
                "description": "Drempelwaarde voor minimale objectgrootte (standaard 6)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het verfijnde raster."
              }
            }
          },
          "objects_enforce_min_mapping_unit": {
            "name": "Minimale karteringseenheid voor objecten afdwingen",
            "description": "Dwingt een minimale karteringseenheid af door te kleine objectsegmenten samen te voegen.",
            "params": {
              "segments": {
                "label": "Segmenten",
                "description": "Invoerraster met segmentlabels."
              },
              "min_size": {
                "label": "Minimale grootte",
                "description": "Minimale segmentgrootte in cellen (standaard 5)."
              },
              "method": {
                "label": "Methode",
                "description": "Samenvoegmethode: longest, largest, nearest (standaard longest)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "polygons_to_segments": {
            "name": "Polygonen naar segmenten",
            "description": "Rastert bewerkte polygonen terug naar een segmentlabelraster met behoud van object-ID's of attribuutwaarden. Maakt iteratieve OBIA-workflows mogelijk die geautomatiseerde segmentatie combineren met handmatige verfijning.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van de invoerpolygoonvector."
              },
              "base": {
                "label": "Basis",
                "description": "Basisraster dat het uitvoerraster definieert."
              },
              "field": {
                "label": "Veld",
                "description": "Optioneel numeriek veld om in te branden (standaard FID)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het segmentenraster."
              }
            }
          },
          "propagate_labels_across_hierarchy": {
            "name": "Labels door hiërarchie propageren",
            "description": "Draagt klasselabels van het grove niveau via hiërarchietoewijzingen over op onderliggende objecten op het fijne niveau. Maakt efficiënte labeling van geneste hiërarchieën en op overerving gebaseerde verfijningsworkflows mogelijk.",
            "params": {
              "hierarchy": {
                "label": "Hiërarchie",
                "description": "Hiërarchie-CSV met fine_segment_id en coarse_segment_id."
              },
              "parent_labels": {
                "label": "Ouderlabels",
                "description": "CSV met ouderlabels, met coarse_segment_id en class."
              },
              "child_labels": {
                "label": "Kindlabels",
                "description": "Optionele CSV met kindlabels, met fine_segment_id en class."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de CSV met doorgegeven labels."
              }
            }
          },
          "segment_graph_felzenszwalb": {
            "name": "Graafsegmentatie (Felzenszwalb)",
            "description": "De graafgebaseerde segmentatie van Felzenszwalb behandelt het beeld als een gewogen ongerichte graaf waarin pixels knopen zijn en randen aangrenzende pixels verbinden met gewichten die de spectrale ongelijkheid weergeven. Segmenten worden iteratief samengevoegd door randgewichten binnen componenten te vergelijken met dynamische drempels; randen met gewichten onder de drempel worden samengevoegd, wat segmenten met lokaal homogene spectrale kenmerken oplevert. Deze hiërarchische benadering levert perceptueel betekenisvolle segmentaties op die gevoelig zijn voor lokale contrastvariaties en natuurlijke discontinuïteiten in kleur/textuur. Belangrijkste kenmerken: graafgebaseerde hiërarchische segmentatie; efficiënte rekencomplexiteit van O(n log n); gevoelig voor lokale contrastvariaties; levert perceptueel betekenisvolle segmenten op; ondersteunt multispectrale/hyperspectrale gegevens; genereert regio's van variabele grootte met behoud van natuurlijke grenzen. Toepassingen: segmentatie van multispectrale beelden; kartering van natuurlijke habitats; extractie van stedelijke elementen; afbakening van boskronendaken; voorbewerking voor veranderingsdetectie; segmentatie van hyperspectrale gegevens. Interpretatie van de uitvoer: de uitvoer is een gelabeld raster; elke pixel krijgt een segment-ID. De segmentgrootte varieert omgekeerd met het lokale spectrale contrast; grenzen met hoog contrast leveren kleinere, talrijke segmenten op; uniforme regio's worden samengevoegd tot grotere segmenten. Via de gevoeligheid voor de k-parameter (drempelschaal) kunnen grovere of fijnere segmentaties worden gemaakt. Segmentgrenzen komen overeen met natuurlijke spectrale discontinuïteiten.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Array van enkelbandige invoerrasters."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters automatisch geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonsteringsmethode bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "k": {
                "label": "K",
                "description": "Schaalparameter van de segmentatie (standaard 500.0)."
              },
              "sigma": {
                "label": "Sigma",
                "description": "Optionele gladstrijkhint (standaard 0.8)."
              },
              "min_area": {
                "label": "Minimale oppervlakte",
                "description": "Minimale oppervlakte voor opschoning na samenvoeging (standaard 20)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van het segmentenraster."
              }
            }
          },
          "segment_multiresolution_hierarchical": {
            "name": "Hiërarchische multiresolutiesegmentatie",
            "description": "Genereert multischalige hiërarchische segmentaties (grof en fijn) met expliciete ouder-kindtoewijzingen. Maakt schaalafhankelijke kenmerkextractie en classificatieworkflows op meerdere niveaus mogelijk.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Array van enkelbandige invoerrasters."
              },
              "coarse_k": {
                "label": "Grove K",
                "description": "Grove schaalparameter (standaard 800)."
              },
              "fine_k": {
                "label": "Fijne K",
                "description": "Fijne schaalparameter (standaard 250)."
              },
              "output_prefix": {
                "label": "Uitvoervoorvoegsel",
                "description": "Uitvoervoorvoegsel voor gegenereerde producten."
              }
            }
          },
          "segment_scale_parameter_optimizer": {
            "name": "Optimalisatie van segmentatieschaalparameter",
            "description": "Doorzoekt kandidaatparameters voor de segmentatieschaal om de optimale schaal te vinden die overeenkomt met het beoogde aantal objecten. Geautomatiseerde schaalselectie maakt handmatige afstemming overbodig voor een consistente segmentatiekwaliteit.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Array van enkelbandige invoerrasters."
              },
              "candidate_scales": {
                "label": "Kandidaatschalen",
                "description": "Lijst van kandidaatwaarden voor de schaal (k)."
              },
              "target_objects": {
                "label": "Doelobjecten",
                "description": "Gewenst aantal objecten. Standaard sqrt(total_cells)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad van het JSON-rapport van de optimalisator."
              }
            }
          },
          "segment_slic_superpixels": {
            "name": "SLIC-superpixelsegmentatie",
            "description": "SLIC (Simple Linear Iterative Clustering) voert iteratieve pixelclustering uit in de 5D-kenmerkruimte die ruimtelijke coördinaten en kleur-/spectrale waarden combineert, waarbij superpixels convergeren naar lokale homogeniteit. Het algoritme initialiseert een regelmatig raster van clustercentra en wijst pixels toe aan de dichtstbijzijnde centra, waarbij de centra iteratief worden bijgewerkt en de zoekgebieden worden verkleind. Dit levert compacte, regelmatig gevormde superpixels op met minimale grensoverschrijding in vergelijking met alternatieven zoals watershed of mean-shift, met een betere aansluiting op natuurlijke randen. Belangrijkste kenmerken: levert uniforme, compacte superpixels op; rekenkundig efficiënt met lineaire tijdcomplexiteit; een door de gebruiker instelbare compactheidsparameter brengt ruimtelijke regelmaat en spectrale samenhang in evenwicht; minimale grensoverschrijding; ondersteunt multispectrale beelden. Toepassingen: voorbewerking voor objectgebaseerde classificatie; hiërarchische regioanalyse; segmentatie van SAR- en optische beelden; stedelijke kartering; afbakening van vegetatie; identificatie van grenzen van landgebruik. Interpretatie van de uitvoer: de uitvoer is een gelabeld raster waarin pixelwaarden de toegewezen superpixel-ID's weergeven. Superpixelgrenzen sluiten aan op dominante randen en kleurovergangen. Kleinere superpixels (hogere granulariteit) leggen fijnere details vast maar verhogen de rekenbelasting; grotere superpixels (lagere granulariteit) voegen vergelijkbare regio's samen, wat de efficiëntie verbetert. De grensnauwkeurigheid hangt af van de afstemming van de compactheidsparameter en de scheiding tussen multispectrale banden.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Array van enkelbandige invoerrasters."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters automatisch geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonsteringsmethode bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "region_size": {
                "label": "Regiogrootte",
                "description": "Beoogde superpixelgrootte in pixels (standaard 20)."
              },
              "compactness": {
                "label": "Compactheid",
                "description": "Compactheidsregeling (standaard 10.0)."
              },
              "min_area": {
                "label": "Minimale oppervlakte",
                "description": "Minimale oppervlakte voor samenvoeging bij opschoning (standaard afgeleid van region_size)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van het segmentenraster."
              }
            }
          },
          "segment_watershed_markers": {
            "name": "Watershed-segmentatie met markers",
            "description": "Markergestuurde, watershed-achtige segmentatie die objecten scheidt rond geïdentificeerde zaadregio's (markers). Legt de nadruk op behoud van grenzen en beheerst tegelijk de segmentgrootte voor hiërarchische OBIA-workflows.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Array van enkelbandige invoerrasters."
              },
              "gradient_weight": {
                "label": "Gradiëntgewicht",
                "description": "Regeling van de randnadruk (standaard 1.0)."
              },
              "min_area": {
                "label": "Minimale oppervlakte",
                "description": "Minimale segmentgrootte (standaard 12)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van het segmentenraster."
              }
            }
          },
          "segments_merge_small_regions": {
            "name": "Kleine segmentregio's samenvoegen",
            "description": "Het samenvoegen van segmenten implementeert hiërarchische consolidatie via analyse van ruimtelijke aangrenzing en door de gebruiker gedefinieerde samenvoegcriteria. Evalueert elk te klein segment ten opzichte van aangrenzende regio's met behulp van groottedrempels, spectrale gelijkenismaten of aangepaste morfologische criteria; voegt kandidaatsegmenten geleidelijk samen met absorberende buren volgens prioriteitswachtrijen op basis van de samenvoegkosten, met behoud van de connectiviteit van segmenten en zonder topologieschendingen. Belangrijke kenmerken zijn nabewerkende regularisatie van oversegmenteerde beelden, door de gebruiker instelbare samenvoegcriteria (minimale grootte, drempel voor spectrale gelijkenis, morfologische eigenschappen), behoud van de integriteit van segmentgrenzen tijdens het samenvoegen, productie van compacte, vereenvoudigde segmentkaarten en hiërarchische verfijning zonder volledige hersegmentatie. Toepassingen omvatten het opschonen van oversegmenteerde OBIA-resultaten om fragmentatie en ruis te verminderen, vereenvoudiging van segmenten voor een stabielere classificatie, verwijdering van onechte kleine segmenten uit de initiële segmentatie, standaardisatie van segmenteigenschappen voor uniforme verdere kenmerkextractie en verfijning ter kwaliteitsborging van multischalige segmentatiehiërarchieën. De uitvoer vertoont een lager aantal segmenten als gevolg van de consolidatie; samengevoegde segmenten erven spectrale statistieken van de geabsorbeerde componenten; grenzen worden gladder en minder complex; samengevoegde regio's behouden hun ruimtelijke integriteit maar vertonen een iets hogere interne spectrale heterogeniteit; de uitvoer is geoptimaliseerd voor verdere classificatie en stabiliteit van kenmerken.",
            "params": {
              "segments": {
                "label": "Segmenten",
                "description": "Invoerraster met segmentlabels."
              },
              "min_size": {
                "label": "Minimale grootte",
                "description": "Minimale segmentgrootte in cellen (standaard 5)."
              },
              "method": {
                "label": "Methode",
                "description": "Samenvoegmethode: longest, largest, nearest (standaard longest)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "segments_split_low_cohesion": {
            "name": "Segmenten met lage cohesie splitsen",
            "description": "Hersegmenteert bestaande objecten met lage samenhang met fijnere schaalinstellingen om de spectrale homogeniteit te verbeteren. Adaptieve verfijning voor probleemzones zonder goed gevormde objecten te beïnvloeden.",
            "params": {
              "segments": {
                "label": "Segmenten",
                "description": "Bestaand segmentenraster."
              },
              "inputs": {
                "label": "Invoeren",
                "description": "Array van invoerrasters die voor hersegmentatie worden gebruikt."
              },
              "split_scale": {
                "label": "Splitsingsschaal",
                "description": "Fijnere schaalparameter voor splitsing (standaard 120)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "segments_to_polygons": {
            "name": "Segmenten naar polygonen",
            "description": "Zet rastersegmentlabels om in vectorpolygonen voor interactieve bewerking, kwaliteitscontrole en GIS-integratie. Maakt een naadloze overgang mogelijk tussen raster- en vectorrepresentaties in OBIA.",
            "params": {
              "segments": {
                "label": "Segmenten",
                "description": "Invoerraster met segmenten."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de polygoonvector."
              }
            }
          },
          "evaluate_training_sites": {
            "name": "Trainingsgebieden evalueren",
            "description": "Evalueert de klassescheidbaarheid in multiband-trainingspolygonen en schrijft een HTML-rapport met verdelingsstatistieken per band.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Array van enkelbandige invoerrasters (één per spectrale band), als paden of als gescheiden tekenreeks."
              },
              "training_data": {
                "label": "Trainingsgegevens",
                "description": "Pad naar de polygoontrainingsgegevens."
              },
              "class_field": {
                "label": "Klasseveld",
                "description": "Naam van het klasseveld in de attributen van training_data."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het HTML-bestand."
              }
            }
          },
          "fuzzy_knn_classification": {
            "name": "Fuzzy KNN-classificatie",
            "description": "Voert een fuzzy k-nearest-neighbor-classificatie uit en geeft de betrouwbaarheid van het klasselidmaatschap als uitvoer.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Array van enkelbandige invoerrasters."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters automatisch geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonsteringsmethode bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "training_data": {
                "label": "Trainingsgegevens",
                "description": "Pad van de punt-/polygoonvector met trainingsgegevens."
              },
              "class_field": {
                "label": "Klasseveld",
                "description": "Klasseveld in de attributen van training_data."
              },
              "scaling": {
                "label": "Schaling",
                "description": "Schalingsmodus voor kenmerken: none (standaard), normalize, standardize."
              },
              "k": {
                "label": "K",
                "description": "Aantal buren (standaard 5)."
              },
              "m": {
                "label": "M",
                "description": "Fuzzy-exponentparameter (> 1; standaard 2.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van het geclassificeerde raster."
              },
              "probability_output": {
                "label": "Waarschijnlijkheidsuitvoer",
                "description": "Optioneel pad van het raster met lidmaatschapswaarschijnlijkheden."
              }
            }
          },
          "generalize_classified_raster": {
            "name": "Geclassificeerd raster generaliseren",
            "description": "Generalize Classified Raster vereenvoudigt classificatiekaarten door kleine geïsoleerde vlakjes te verwijderen via iteratieve modusfiltering, waarbij gefragmenteerde componenten van één of meerdere pixels worden samengevoegd met ruimtelijk dominante aangrenzende klassen. Algoritme: past een morfologisch modusfilter toe dat de dominante klasse binnen bewegende vensters behoudt, verwijdert of consolideert pixels die geïsoleerd zijn van hun ruimtelijke context, verfijnt de classificatie iteratief via analyse van verbonden componenten en neemt kleine klassen op in aangrenzende dominante klassen. De instelbare venstergrootte en minimale vlakgrootte bepalen de intensiteit van de generalisatie. Belangrijkste kenmerken: vermindert classificatiefragmentatie, verbetert de ruimtelijke samenhang, verwijdert door ruis veroorzaakte geïsoleerde vlakjes, behoudt klassegrenzen via selectieve filtering, rekenkundig efficiënte verwerking van verbonden componenten. Mogelijkheden: variabele generalisatie-intensiteit, behoud van grote aaneengesloten vlakken, toepassing op geïndexeerde of categorische gegevens. Toepassingen: verfijning na classificatie om peper-en-zouteffecten te verwijderen, consolidatie van gefragmenteerde classificatieresultaten, voorbereiding van definitieve classificatieproducten, generalisatie naar een specifieke minimale karteringseenheid. Toepassingsgebieden: afronding van landbedekkingskaarten, verwijdering van onechte classificaties van één pixel, verbetering van de ruimtelijke continuïteit van de classificatie. Interpretatie van de uitvoer: verminderde klassefragmentatie wijst op effectieve ontspikkeling; behouden grenzen tonen geschikte generalisatieparameters; overmatige generalisatie wijst op te grote vensterparameters; verbeterde ruimtelijke samenhang suggereert dat de classificatieruis voornamelijk uit artefacten van één pixel bestond.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het geclassificeerde invoerraster of getypt rasterobject."
              },
              "min_size": {
                "label": "Minimale grootte",
                "description": "Minimale objectgrootte in cellen; kleinere vlekken worden opnieuw toegewezen (standaard 5)."
              },
              "method": {
                "label": "Methode",
                "description": "Generalisatiemethode: 'longest' (standaard), 'largest' of 'nearest'."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "generalize_with_similarity": {
            "name": "Generaliseren op basis van gelijkenis",
            "description": "Generaliseert kleine vlakken in een geclassificeerd raster door ze samen te voegen met het spectraal meest vergelijkbare aangrenzende vlak.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het geclassificeerde invoerraster."
              },
              "similarity": {
                "label": "Gelijkenis",
                "description": "Array van gelijkenisrasters die worden gebruikt om de gelijkenis met objectcentra te berekenen."
              },
              "min_size": {
                "label": "Minimale grootte",
                "description": "Minimale objectgrootte in pixels; kleinere objecten worden samengevoegd (standaard 5)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "k_means_clustering": {
            "name": "K-means-clustering",
            "description": "K-means-clustering voert een niet-gesuperviseerde spectrale classificatie uit door pixels iteratief in K spectrale clusters te verdelen, waarbij de variantie binnen clusters wordt geminimaliseerd en natuurlijke spectrale groeperingen in multispectrale beelden worden ontdekt zonder trainingssamples of vooraf gedefinieerde klassen. Het algoritme initialiseert K willekeurige clustercentra, wijst pixels iteratief toe aan de dichtstbijzijnde centra en herberekent de centra als clustergemiddelden tot convergentie, waarna de uiteindelijke clustertoewijzingen en centra worden uitgevoerd. K-means is rekenkundig efficiënt, schaalbaar naar grote multispectrale stapels en ontdekt datagedreven spectrale patronen die nuttig zijn voor verkennende analyse en identificatie van natuurlijke klassen. Belangrijke kenmerken zijn een door de gebruiker opgegeven aantal clusters K dat flexibele afwegingen tussen spectraal detail en interpreteerbaarheid van de uitvoer mogelijk maakt, convergentiecriteria met instelbare iteratielimieten en drempels voor de verplaatsing van centra, optionele controle over de random seed voor reproduceerbare clustering bij testen en validatie, en efficiënte parallellisatie voor grote beelden. Toepassingen omvatten niet-gesuperviseerde landbedekkingsclassificatie die natuurlijke spectrale klassen ontdekt, anomaliedetectie die spectraal ongebruikelijke pixels identificeert, beeldsegmentatie voor latere gesuperviseerde classificatie en verkennende spectrale analyse die dominante spectrale patronen blootlegt. De K-means-uitvoer identificeert natuurlijke spectrale groeperingen. De uitvoer bestaat uit een raster met clusterlidmaatschap met gehele getallen van 0 tot K-1, een bestand met clustercentra met het gemiddelde spectrum per cluster en optioneel de variantie binnen clusters die de compactheid kwantificeert; visualisatie van de clusterklassen als overlay op ware-kleurencomposieten toont ruimtelijke patronen en de continuïteit van clusters.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Lijst van invoerrasters als array van paden of als door komma's/puntkomma's gescheiden tekenreeks."
              },
              "classes": {
                "label": "Klassen",
                "description": "Aantal doelklassen (k)."
              },
              "max_iterations": {
                "label": "Maximaal aantal iteraties",
                "description": "Maximaal aantal iteraties (standaard 10)."
              },
              "class_change": {
                "label": "Klassewijziging",
                "description": "Stoppen wanneer het percentage gewijzigde geldige cellen onder deze drempelwaarde zakt (standaard 2.0)."
              },
              "initialize": {
                "label": "Initialiseren",
                "description": "Initialisatiestrategie voor de zwaartepunten: 'diagonal' (standaard) of 'random'."
              },
              "min_class_size": {
                "label": "Minimale klassegrootte",
                "description": "Minimale klassegrootte die wordt gebruikt bij het bijwerken van de zwaartepunten (standaard 10)."
              },
              "out_html": {
                "label": "Uitvoer-HTML",
                "description": "Optioneel uitvoerpad van het HTML-rapport."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van het klasseraster. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "knn_classification": {
            "name": "KNN-classificatie",
            "description": "K-nearest-neighbors-classificatie wijst pixels toe aan klassen op basis van meerderheidsstemming onder de K dichtstbijzijnde trainingssamples in de spectrale ruimte, wat flexibele niet-lineaire classificatie mogelijk maakt zonder expliciete modeltraining. KNN berekent afstanden (euclidisch, spectrale hoek of Mahalanobis) van elke beeldpixel tot alle trainingssamples, identificeert de K dichtstbijzijnde trainingssamples, past gewogen of ongewogen meerderheidsstemming toe om de klasse te bepalen en retourneert het klasselabel en optioneel een betrouwbaarheidsscore. KNN blinkt uit bij beperkte trainingsgegevens, sterk niet-lineaire klassegrenzen en heterogene spectrale verdelingen van klassen waar parametrische modellen tekortschieten. Belangrijke kenmerken zijn selecteerbare afstandsmaten (euclidisch, spectrale hoek, Mahalanobis) die rekening houden met verschillende spectrale kenmerken en correlatiestructuren, door de gebruiker opgegeven K-waarden die afwegingen tussen nauwkeurigheid en complexiteit mogelijk maken, opties voor gewogen stemming die nabije samples benadrukken en optionele betrouwbaarheidsdrempels waarmee dubbelzinnige classificaties kunnen worden afgewezen. Toepassingen omvatten zeer nauwkeurige remote-sensingclassificatie met in het veld verzamelde trainingssamples, classificatie met kleine steekproeven waar weinig grondwaarheid beschikbaar is, classificatie van moeilijk terrein met sterk variabele spectrale signaturen en betrouwbaarheidsbewuste classificatie die grensgevallen afwijst. KNN-classificatie levert zeer nauwkeurige resultaten met flexibele trainingsgegevens. De uitvoer bestaat uit een klasselabelraster met gehele klasse-ID's die overeenkomen met de labels van de trainingssamples, een optioneel betrouwbaarheidsraster met stempercentages of afstandsgewogen betrouwbaarheidsscores, en een classificatienauwkeurigheid die bij een optimale keuze van K en voldoende trainingssamples mogelijk die van andere methoden overtreft.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Array van enkelbandige invoerrasters."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters automatisch geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonsteringsmethode bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "training_data": {
                "label": "Trainingsgegevens",
                "description": "Pad van de punt-/polygoonvector met trainingsgegevens."
              },
              "class_field": {
                "label": "Klasseveld",
                "description": "Klasseveld in de attributen van training_data."
              },
              "scaling": {
                "label": "Schaling",
                "description": "Schalingsmodus voor kenmerken: none (standaard), normalize, standardize."
              },
              "k": {
                "label": "K",
                "description": "Aantal buren (standaard 5)."
              },
              "clip": {
                "label": "Uitsnijden",
                "description": "Indien waar, worden verkeerd geclassificeerde trainingssteekproeven verwijderd via een leave-one-out-voorbewerking."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "knn_regression": {
            "name": "KNN-regressie",
            "description": "Voert een gesuperviseerde k-nearest-neighbor-regressie uit op multiband-invoerrasters.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Array van enkelbandige invoerrasters."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters automatisch geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonsteringsmethode bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "training_data": {
                "label": "Trainingsgegevens",
                "description": "Pad van de puntvector met trainingsgegevens."
              },
              "field": {
                "label": "Veld",
                "description": "Numeriek doelveld in de attributen van training_data."
              },
              "scaling": {
                "label": "Schaling",
                "description": "Schalingsmodus voor kenmerken: none (standaard), normalize, standardize."
              },
              "k": {
                "label": "K",
                "description": "Aantal buren (standaard 5)."
              },
              "distance_weighted": {
                "label": "Afstandsgewogen",
                "description": "Indien waar, wordt een omgekeerd-afstandsgewogen middeling gebruikt."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "logistic_regression": {
            "name": "Logistische regressie",
            "description": "Voert een gesuperviseerde classificatie met logistische regressie uit op multiband-invoerrasters.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Array van enkelbandige invoerrasters."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters automatisch geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonsteringsmethode bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "training_data": {
                "label": "Trainingsgegevens",
                "description": "Pad van de punt-/polygoonvector met trainingsgegevens."
              },
              "class_field": {
                "label": "Klasseveld",
                "description": "Klasseveld in de attributen van training_data."
              },
              "scaling": {
                "label": "Schaling",
                "description": "Schalingsmodus voor kenmerken: none (standaard), normalize, standardize."
              },
              "alpha": {
                "label": "Alfa",
                "description": "L2-regularisatiegewicht (standaard 0.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "min_dist_classification": {
            "name": "Minimale-afstandsclassificatie",
            "description": "Voert een gesuperviseerde minimale-afstandsclassificatie uit op multispectrale rasters met polygoontrainingsgegevens.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Array van enkelbandige invoerrasters (één per spectrale band), als paden of als gescheiden tekenreeks."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters automatisch geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonsteringsmethode bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "training_data": {
                "label": "Trainingsgegevens",
                "description": "Pad naar een polygoonvectorbestand met trainingsgebieden."
              },
              "class_field": {
                "label": "Klasseveld",
                "description": "Naam van het attribuutveld in de trainingsgegevens dat de klasse-identificatie bevat."
              },
              "dist_threshold": {
                "label": "Afstandsdrempel",
                "description": "Optionele z-scoredrempelwaarde; pixels die verder dan deze waarde van het dichtstbijzijnde klassegemiddelde liggen, blijven ongeclassificeerd. Standaard: geen drempelwaarde (alles classificeren)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad. Indien weggelaten, blijft het resultaat in het geheugen."
              }
            }
          },
          "modified_k_means_clustering": {
            "name": "Aangepaste K-means-clustering",
            "description": "Modified K-means-clustering verbetert standaard-K-means met spectrale voorbewerking, geautomatiseerde adaptieve selectie van K en verbeterde convergentiecriteria voor een robuustere en nauwkeurigere niet-gesuperviseerde multispectrale classificatie. Het algoritme past optionele voorbewerking toe, waaronder spectrale standaardisatie die schaaleffecten verwijdert, een hoofdcomponententransformatie die de dominante variantierichtingen benadrukt en ruisfiltering die onechte spectrale variaties verwijdert. Adaptieve selectie van K gebruikt elleboogmethoden of silhouetanalyse om het optimale aantal clusters automatisch te bepalen in plaats van handmatige opgave te vereisen. Belangrijke kenmerken zijn spectrale voorbewerking die de schaalgevoeligheid vermindert en dominante spectrale variatierichtingen benadrukt, geautomatiseerde selectie van K die het optimale aantal clusters objectief bepaalt, verbeterde convergentiecriteria waaronder drempels voor de relatieve verplaatsing van centra en gelijkenismaten op basis van de spectrale hoek, en optionele nabewerking die vergelijkbare clusters samenvoegt of diffuse clusters splitst. Toepassingen omvatten verbeterde verkennende landbedekkingsclassificatie die spectrale schalen automatisch verwerkt, robuuste anomaliedetectie die signaal van ruis scheidt via voorbewerking, adaptieve beeldsegmentatie die automatisch geschikte detailniveaus bepaalt en integratie van meerdere sensoren door normalisatie van de spectrale schalen van verschillende sensoren. De uitvoer van Modified K-means toont robuuste natuurlijke spectrale klassen. De uitvoer bestaat uit een geoptimaliseerd raster met clusterlidmaatschap met een automatisch bepaald aantal klassen, clustercentra met gedocumenteerde voorbewerkingstransformaties en diagnostische statistieken die de clusterkwaliteit, scheiding en convergentie kwantificeren; aanbevelingen van de adaptieve selectie van K sturen de afweging tussen interpreteerbaarheid en detail.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Lijst van invoerrasters als array van paden of als door komma's/puntkomma's gescheiden tekenreeks."
              },
              "start_clusters": {
                "label": "Startclusters",
                "description": "Initieel aantal clusters vóór samenvoeging (standaard 1000)."
              },
              "merge_dist": {
                "label": "Samenvoegafstand",
                "description": "Afstandsdrempelwaarde voor het samenvoegen van clusters (euclidisch)."
              },
              "max_iterations": {
                "label": "Maximaal aantal iteraties",
                "description": "Maximaal aantal iteraties (standaard 10)."
              },
              "class_change": {
                "label": "Klassewijziging",
                "description": "Stoppen wanneer het percentage gewijzigde geldige cellen onder deze drempelwaarde zakt (standaard 2.0)."
              },
              "out_html": {
                "label": "Uitvoer-HTML",
                "description": "Optioneel uitvoerpad van het HTML-rapport."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van het klasseraster. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "nnd_classification": {
            "name": "NND-classificatie",
            "description": "Voert een classificatie op basis van de dichtstbijzijnde genormaliseerde afstand uit met optionele afwijzing van uitschieters.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Array van enkelbandige invoerrasters."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters automatisch geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonsteringsmethode bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "training_data": {
                "label": "Trainingsgegevens",
                "description": "Pad van de punt-/polygoonvector met trainingsgegevens."
              },
              "class_field": {
                "label": "Klasseveld",
                "description": "Klasseveld in de attributen van training_data."
              },
              "scaling": {
                "label": "Schaling",
                "description": "Schalingsmodus voor kenmerken: none (standaard), normalize, standardize."
              },
              "z_threshold": {
                "label": "Z-drempelwaarde",
                "description": "Maximaal geaccepteerde z-score van de genormaliseerde afstand voordat uitschieters worden gemarkeerd (standaard 1.96)."
              },
              "outlier_is_zero": {
                "label": "Uitschieter is nul",
                "description": "Indien waar, krijgen uitschieters klassewaarde 0; anders NoData."
              },
              "k": {
                "label": "K",
                "description": "Omgevingsgrootte voor de schatting van de klasseafstand (standaard 25)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "otsu_thresholding": {
            "name": "Otsu-drempelbepaling",
            "description": "Otsu-drempeling is een automatische beeldsegmentatiemethode die de optimale globale drempelwaarde bepaalt door de variantie tussen klassen in histogrammen van pixelintensiteiten te maximaliseren. Algoritme: onderzoekt het histogram van een grijswaarden- of enkelbandbeeld, test iteratief alle mogelijke drempelwaarden, berekent voor elke drempel de variantie tussen klassen en selecteert de waarde die de scheiding tussen de voorgrond- en achtergrondklasse maximaliseert. Niet-parametrisch, vereist geen handmatige opgave van de drempel. Belangrijkste kenmerken: volledig automatische bepaling van de drempel, robuust tegen verlichtingsvariaties, de histogramgebaseerde benadering maakt snelle berekening mogelijk, geen externe parameters, levert één globale drempel. Mogelijkheden: binaire segmentatie, optimalisatie van unimodale en bimodale histogrammen, verwerkt beelden met een smal dynamisch bereik of hoog contrast. Toepassingen: automatische beeldsegmentatie zonder tussenkomst van de gebruiker, binarisatie van documenten, extractie van waterlichamen, wolkendetectie in satellietbeelden, kartering van ijs/sneeuw. Toepassingsgebieden: voorbewerking voor veranderingsdetectie, eenvoudige landbedekkingsclassificatie, generatie van watermaskers, voorlopige segmentatie vóór geavanceerde classificatie. Interpretatie van de uitvoer: pixels onder de drempel worden als de ene klasse geclassificeerd, pixels erboven als de andere; de bimodaliteit van het histogram geeft de kwaliteit van de scheiding aan; slecht gescheiden histogrammen wijzen erop dat binaire classificatie ongeschikt is; statistische maten zoals de variantie tussen klassen en de uniformiteit geven de segmentatiekwaliteit aan.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "parallelepiped_classification": {
            "name": "Parallellepipedumclassificatie",
            "description": "Voert een gesuperviseerde parallellepipedumclassificatie uit op multispectrale rasters met polygoontrainingsgegevens.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Array van enkelbandige invoerrasters (één per spectrale band), als paden of als gescheiden tekenreeks."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters automatisch geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonsteringsmethode bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "training_data": {
                "label": "Trainingsgegevens",
                "description": "Pad naar een polygoonvectorbestand met trainingsgebieden."
              },
              "class_field": {
                "label": "Klasseveld",
                "description": "Naam van het attribuutveld in de trainingsgegevens dat de klasse-identificatie bevat."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad. Indien weggelaten, blijft het resultaat in het geheugen."
              }
            }
          },
          "random_forest_classification": {
            "name": "Random-forest-classificatie",
            "description": "Random Forest-classificatie kent labels toe via een ensemble van beslissingsbomen die zijn getraind op bootstrapsamples met willekeurige deelverzamelingen van kenmerken. Elke boom groeit onafhankelijk zonder snoeien en legt complexe niet-lineaire relaties en interacties tussen kenmerken vast. De classificatie aggregeert de stemmen over doorgaans 100-1000 bomen; de uiteindelijke klasse is de meerderheidsstem. Bootstraptraining en willekeurige kenmerkselectie verminderen overfitting terwijl hoogdimensionale patronen worden vastgelegd. Het kenmerkbelang kan worden berekend uit veranderingen in de out-of-bag-fout, waarmee de diagnostische spectrale banden of afgeleide kenmerken worden geïdentificeerd die het meest relevant zijn voor de classificatie. Belangrijke kenmerken zijn een rangschikking van het variabelebelang die de belangrijkste classificatiekenmerken identificeert, classificatiebetrouwbaarheid per pixel op basis van de stemconsensus over de bomen van het ensemble, automatische verwerking van hoogdimensionale hyperspectrale gegevens, robuustheid tegen spectrale uitschieters en ruis, en paralleliseerbare training en voorspelling. Het hulpmiddel verwerkt multiklasseproblemen met onevenwichtige trainingssets efficiënt. Toepassingen omvatten landbedekkingsclassificatie uit multispectrale en hyperspectrale gegevens, veranderingsdetectie die spectrale overgangen tussen kaarten identificeert, classificatie van gewastypen uit multitemporele satellietbeelden, classificatie van stedelijke materialen die gebouwtypen en oppervlakken onderscheidt, en anomaliedetectie die spectrale uitschieters identificeert. Random forests behalen in remote-sensingtoepassingen consequent een hoge nauwkeurigheid met relatief bescheiden trainingsgegevens. Interpretatie van de uitvoer: het aantal stemmen geeft de betrouwbaarheid van de classificatie aan; unanieme of sterke meerderheidsstemmen (>80%) wijzen op betrouwbare classificaties, terwijl kleine marges wijzen op dubbelzinnigheid door gemengde pixels. De rangschikking van het kenmerkbelang identificeert de spectrale banden of afgeleide indices die het meest diagnostisch zijn voor de classificatie. De out-of-bag-fout schat de generalisatieprestatie zonder validatie op een achtergehouden set. Kenmerkinteracties zijn impliciet; een hoge nauwkeurigheid met bepaalde bandcombinaties suggereert niet-lineaire spectrale relaties.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Array van enkelbandige invoerrasters."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters automatisch geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonsteringsmethode bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "training_data": {
                "label": "Trainingsgegevens",
                "description": "Pad van de punt-/polygoonvector met trainingsgegevens."
              },
              "class_field": {
                "label": "Klasseveld",
                "description": "Klasseveld in de attributen van training_data."
              },
              "scaling": {
                "label": "Schaling",
                "description": "Schalingsmodus voor kenmerken: none (standaard), normalize, standardize."
              },
              "n_trees": {
                "label": "Aantal bomen",
                "description": "Aantal bomen in het bos (standaard 200)."
              },
              "min_samples_leaf": {
                "label": "Minimaal aantal monsters per blad",
                "description": "Minimaal aantal steekproeven dat in een bladknoop vereist is (standaard 1)."
              },
              "min_samples_split": {
                "label": "Minimaal aantal monsters per splitsing",
                "description": "Minimaal aantal steekproeven dat vereist is om een interne knoop te splitsen (standaard 2)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "random_forest_regression": {
            "name": "Random-forest-regressie",
            "description": "Voert een gesuperviseerde Random Forest-regressie uit op multiband-invoerrasters.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Array van enkelbandige invoerrasters."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters automatisch geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonsteringsmethode bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "training_data": {
                "label": "Trainingsgegevens",
                "description": "Pad van de puntvector met trainingsgegevens."
              },
              "field": {
                "label": "Veld",
                "description": "Numeriek doelveld in de attributen van training_data."
              },
              "scaling": {
                "label": "Schaling",
                "description": "Schalingsmodus voor kenmerken: none (standaard), normalize, standardize."
              },
              "n_trees": {
                "label": "Aantal bomen",
                "description": "Aantal bomen in het bos (standaard 200)."
              },
              "min_samples_leaf": {
                "label": "Minimaal aantal monsters per blad",
                "description": "Minimaal aantal steekproeven dat in een bladknoop vereist is (standaard 1)."
              },
              "min_samples_split": {
                "label": "Minimaal aantal monsters per splitsing",
                "description": "Minimaal aantal steekproeven dat vereist is om een interne knoop te splitsen (standaard 2)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "svm_classification": {
            "name": "SVM-classificatie",
            "description": "Support Vector Machine-classificatie (SVM) past machine-learningalgoritmen van het type Support Vector Machine toe op multispectrale remote-sensinggegevens en scheidt trainingsklassen door een optimaal hypervlak te plaatsen in de hoogdimensionale spectrale kenmerkruimte. Algoritme: transformeert spectrale kenmerkvectoren naar een hoogdimensionale ruimte via kernelfuncties (lineair, RBF, polynomiaal), identificeert het hypervlak met maximale marge dat de trainingsklassen scheidt en classificeert nieuwe pixels op basis van hun positie ten opzichte van het hypervlak; tolerantieparameters en de kernelkeuze bepalen de generalisatie. Verwerkt niet-lineaire klassescheiding effectief. Belangrijkste kenmerken: robuust bij hoogdimensionale spectrale gegevens, uitstekende generalisatie met beperkte trainingssamples, de flexibiliteit van de kernel past zich aan diverse spectrale verdelingen aan, levert waarschijnlijkheids-/betrouwbaarheidsschattingen. Mogelijkheden: multiklasseclassificatie, tolerantie met zachte marge, automatische balancering van klassegewichten. Toepassingen: gedetailleerde landclassificatie met schaarse trainingsgegevens, integratie van spectrale en ruimtelijke kenmerken, veranderingsdetectie, precisielandbouw, stedelijke kartering. Toepassingsgebieden: classificatie van hyperspectrale beelden, kartering van complexe ecosystemen, afbakening van gewastypen, classificatie van infrastructuur. Interpretatie van de uitvoer: het klasselidmaatschap geeft de voorspelde categorie aan, waarbij de ruimtelijke samenhang de classificatiekwaliteit toont; waarschijnlijkheidsschattingen kwantificeren de betrouwbaarheid op pixelniveau; misclassificatiepatronen wijzen op tekortkomingen in de trainingsgegevens of problemen met spectrale overlap.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Array van enkelbandige invoerrasters."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters automatisch geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonsteringsmethode bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "training_data": {
                "label": "Trainingsgegevens",
                "description": "Pad van de punt-/polygoonvector met trainingsgegevens."
              },
              "class_field": {
                "label": "Klasseveld",
                "description": "Klasseveld in de attributen van training_data."
              },
              "scaling": {
                "label": "Schaling",
                "description": "Schalingsmodus voor kenmerken: none (standaard), normalize, standardize."
              },
              "kernel": {
                "label": "Kernel",
                "description": "Kerneltype: linear (standaard) of rbf."
              },
              "c": {
                "label": "C",
                "description": "SVM-regularisatieparameter (standaard 1.0)."
              },
              "gamma": {
                "label": "Gamma",
                "description": "Gamma van de RBF-kernel; standaard 1 / number_of_features."
              },
              "epoch": {
                "label": "Epoch",
                "description": "Aantal trainingsepochs (standaard 2)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "svm_regression": {
            "name": "SVM-regressie",
            "description": "Voert een gesuperviseerde support-vector-machine-regressie uit op multiband-invoerrasters.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Array van enkelbandige invoerrasters."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters automatisch geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonsteringsmethode bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "training_data": {
                "label": "Trainingsgegevens",
                "description": "Pad van de puntvector met trainingsgegevens."
              },
              "field": {
                "label": "Veld",
                "description": "Numeriek doelveld in de attributen van training_data."
              },
              "scaling": {
                "label": "Schaling",
                "description": "Schalingsmodus voor kenmerken: none (standaard), normalize, standardize."
              },
              "kernel": {
                "label": "Kernel",
                "description": "Kerneltype: linear (standaard) of rbf."
              },
              "c": {
                "label": "C",
                "description": "SVM-regularisatieparameter (standaard 1.0)."
              },
              "gamma": {
                "label": "Gamma",
                "description": "Gamma van de RBF-kernel; standaard 1 / number_of_features."
              },
              "eps": {
                "label": "Eps",
                "description": "Breedte van het epsilon-ongevoelige verlies (standaard 0.1)."
              },
              "tol": {
                "label": "Tol",
                "description": "Tolerantie van de optimalisator (standaard 1e-3)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "change_vector_analysis": {
            "name": "Veranderingsvectoranalyse",
            "description": "Voert een veranderingsvectoranalyse uit op multispectrale gegevenssets van twee datums en retourneert rasters met grootte en richting.",
            "params": {
              "date1": {
                "label": "Datum1",
                "description": "Lijst van rasters van de eerdere datum als array van paden of als door komma's/puntkomma's gescheiden tekenreeks."
              },
              "date2": {
                "label": "Datum2",
                "description": "Lijst van rasters van de latere datum als array van paden of als door komma's/puntkomma's gescheiden tekenreeks."
              },
              "magnitude_output": {
                "label": "Magnitude-uitvoer",
                "description": "Optioneel uitvoerpad voor het raster met de vectormagnitude."
              },
              "direction_output": {
                "label": "Richtingsuitvoer",
                "description": "Optioneel uitvoerpad voor het raster met richtingscodes."
              }
            }
          },
          "image_difference_change_detection": {
            "name": "Veranderingsdetectie via beeldverschil",
            "description": "Veranderingsdetectie via beeldverschillen identificeert landbedekkingsveranderingen door multispectrale verschillen per pixel te berekenen tussen gecoregistreerde multitemporele satellietopnamen, waarbij gebieden worden benadrukt waar de spectrale signaturen voldoende zijn veranderd om de statistische achtergrondvariatie te overschrijden. Het algoritme coregistreert beelden naar een gemeenschappelijk pixelraster, berekent verschillen in geselecteerde banden of vegetatie-indices (bijv. NDVI-verschil), past statistische drempeling toe op basis van het gemiddelde absolute verschil en betrouwbaarheidsintervallen om verandering van ruis te onderscheiden, en geeft binaire veranderingsmaskers of continue rasters met de verschilgrootte als uitvoer. Beeldverschillen zijn rekenkundig eenvoudig, interpreteerbaar en effectief voor het detecteren van grote veranderingen in vegetatie, stedelijke ontwikkeling of waterlichamen. Belangrijke kenmerken zijn flexibele bandselectie die gerichte veranderingsdetectie in specifieke spectrale domeinen mogelijk maakt, statistische drempeling met automatische of handmatige betrouwbaarheidsniveaus, optionele voorbewerking (normalisatie, indexberekening) die de signaal-ruisverhouding van veranderingen verbetert, en snelle verwerking die grootschalige veranderingsdetectie mogelijk maakt. Toepassingen omvatten kartering van ontbossing en monitoring van bosverlies, het volgen van stedelijke uitbreiding uit multispectrale satelliettijdreeksen, overstromingskartering vóór/na een gebeurtenis uit SAR- of optische gegevens en detectie van veranderingen in de landbouw die gewasovergangen volgt. De uitvoer van beeldverschillen benadrukt veranderingsgebieden. De uitvoer bestaat uit een veranderingsmaskerraster (binair verandering/geen verandering) met instelbare drempels, een continu raster met de verschilgrootte dat de veranderingsintensiteit kwantificeert en een optioneel raster met veranderingsklassen dat het type verandering onderscheidt (toename, afname); temporele aggregatie maakt het volgen van veranderingen over meerjarige perioden mogelijk.",
            "params": {
              "t1_inputs": {
                "label": "T1-invoeren",
                "description": "Array van rasterpaden van datum 1."
              },
              "t2_inputs": {
                "label": "T2-invoeren",
                "description": "Array van rasterpaden van datum 2; moet in lengte en volgorde overeenkomen met t1_inputs."
              },
              "mode": {
                "label": "Modus",
                "description": "Verschilmodus: magnitude (standaard) of signed."
              },
              "threshold_sigma": {
                "label": "Drempel-sigma",
                "description": "Optionele sigma-drempelwaarde voor het genereren van een binair veranderingsmasker."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters geherprojecteerd naar t1_inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonstering bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad voor het verschilbeeld."
              },
              "output_absolute": {
                "label": "Absolute uitvoer",
                "description": "Optioneel uitvoerrasterpad voor het absolute verschil met teken (|mean(t2-t1)|)."
              },
              "output_signed": {
                "label": "Uitvoer met teken",
                "description": "Optioneel uitvoerrasterpad voor het verschil met teken mean(t2-t1)."
              },
              "output_mask": {
                "label": "Uitvoermasker",
                "description": "Optioneel uitvoerrasterpad voor het gedrempelde binaire veranderingsmasker."
              }
            }
          },
          "pca_based_change_detection": {
            "name": "Veranderingsdetectie op basis van PCA",
            "description": "Veranderingsdetectie via hoofdcomponentenanalyse identificeert landbedekkingsveranderingen door hoofdcomponenten te berekenen uit multitemporeel gestapelde spectrale gegevens, waarbij de eerste componenten gemeenschappelijke patronen over de tijd vastleggen en latere componenten temporele veranderingen isoleren. Het algoritme stapelt multitemporele multispectrale gegevens (gecoregistreerd naar een gemeenschappelijk raster), berekent een PCA die ze transformeert naar ongecorreleerde orthogonale spectraal-temporele componenten, interpreteert latere PC's als veranderingsgevoelig en past statistische drempeling toe op de PC-ladingen/-scores voor veranderingsdetectie. Op PCA gebaseerde detectie blinkt uit wanneer veranderingssignalen spectraal subtiel zijn, omdat PCA de variantie maximaliseert en temporeel consistente spectrale patronen (eerste PC's) scheidt van temporele variatie (latere PC's). Belangrijke kenmerken zijn fusie van gegevens van meerdere datums met een variabel aantal beelden en coregistratievereisten, automatische variantiemaximalisatie die belangrijke spectraal-temporele patronen benadrukt, multivariate statistiek die het onderscheid van veranderingen verbetert ten opzichte van univariate verschilberekening, en optionele ruimtelijke filtering die pixelruis vermindert. Toepassingen omvatten detectie van subtiele vegetatiestress voordat die visueel herkenbaar is, multispectrale detectie van stedelijke veranderingen die de ontwikkeling over decennia volgt, beoordeling van de impact van natuurrampen via snelle schadekartering en milieumonitoring die toestandsovergangen in ecosystemen detecteert. De uitvoer van op PCA gebaseerde detectie onderscheidt temporele patronen. De uitvoer bestaat uit hoofdcomponentbeelden met interpreteerbare spectraal-temporele ladingen, een veranderingswaarschijnlijkheidsraster afgeleid van de scores van latere componenten en een optionele veranderingsclassificatie die veranderingstypen onderscheidt; ruimtelijke patronen van de PC's maken visuele patroonherkenning mogelijk als aanvulling op statistische detectie.",
            "params": {
              "t1_inputs": {
                "label": "T1-invoeren",
                "description": "Array van rasterpaden van datum 1."
              },
              "t2_inputs": {
                "label": "T2-invoeren",
                "description": "Array van rasterpaden van datum 2; moet in lengte en volgorde overeenkomen met t1_inputs."
              },
              "component": {
                "label": "Component",
                "description": "Op 1 gebaseerde index van de uit te voeren hoofdcomponent (standaard 1)."
              },
              "standardized": {
                "label": "Gestandaardiseerd",
                "description": "Indien waar, wordt PCA op basis van de correlatiematrix toegepast op de veranderingsvectoren (standaard false)."
              },
              "threshold_sigma": {
                "label": "Drempel-sigma",
                "description": "Optionele sigma-drempelwaarde op de absolute PC-score voor de uitvoer van een binair masker."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters geherprojecteerd naar t1_inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonstering bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad voor de absolute score van de geselecteerde PC."
              },
              "output_mask": {
                "label": "Uitvoermasker",
                "description": "Optioneel uitvoerrasterpad voor het gedrempelde binaire masker (0/1)."
              },
              "output_report": {
                "label": "Uitvoerrapport",
                "description": "Optioneel uitvoerpad van het JSON-rapport met eigenwaarden, verklaarde variantie en componentladingen."
              }
            }
          },
          "post_classification_change": {
            "name": "Verandering na classificatie",
            "description": "Veranderingsdetectie na classificatie kwantificeert overgangen in landbedekking/landgebruik (LULC) door onafhankelijk geclassificeerde kaarten uit verschillende perioden rechtstreeks te vergelijken. Klassevergelijkingen per pixel identificeren overgangen met een 'van'- en een 'naar'-klasse. Kruistabellen (confusiematrices) kwantificeren overgangsfrequenties en tonen de dominante veranderingstrajecten. De methode vereist consistente classificatieschema's over de datums; de nauwkeurigheid hangt af van de classificatiekwaliteit op elk tijdstip. Belangrijkste kenmerken: directe kartering van overgangen van klasse naar klasse; onafhankelijkheid van afzonderlijke classificaties; maakt combinaties van heterogene sensoren mogelijk; kwantificeert overgangsfrequenties; identificeert hotspots van verandering. Toepassingen: monitoring van ontbossing; kartering van stedelijke groei; volgen van landbouwkundig landgebruik; detectie van verlies van wetlands; beoordeling van habitatfragmentatie. Interpretatie van de uitvoer: overgangsmatrices tonen waarden zonder verandering op de diagonaal en overgangsfrequenties buiten de diagonaal. Veranderingskaarten benadrukken gewijzigde pixels; overgangsgecodeerde uitvoer codeert zowel de bron- als de doelklasse, wat interpretatie mogelijk maakt. Een hoge nauwkeurigheid vereist classificaties van goede kwaliteit; classificatiefouten op een van beide datums planten zich voort tot fouten in de veranderingsdetectie. Aggregatie van overgangen toont dominante patronen (bijv. bos→landbouw, grasland→stedelijk). Overgangen op subpixelniveau kunnen met de methode na classificatie niet worden gedetecteerd; fijnschalige veranderingen kunnen worden gemist.",
            "params": {
              "t1_classified": {
                "label": "T1 geclassificeerd",
                "description": "Pad van het geclassificeerde raster van datum 1."
              },
              "t2_classified": {
                "label": "T2 geclassificeerd",
                "description": "Pad van het geclassificeerde raster van datum 2."
              },
              "transition_scale": {
                "label": "Overgangsschaal",
                "description": "Schaalfactor voor de overgangscodering (standaard 1000): code = class1 * scale + class2."
              },
              "t1_class_remap": {
                "label": "T1-klassehertoewijzing",
                "description": "Optionele hercoderingstabel voor de klassen van datum 1 als object {\"old\": new, ...}."
              },
              "t2_class_remap": {
                "label": "T2-klassehertoewijzing",
                "description": "Optionele hercoderingstabel voor de klassen van datum 2 als object {\"old\": new, ...}."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) wordt t2_classified indien nodig geherprojecteerd naar het CRS van t1_classified."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonstering bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van het raster met overgangscodes."
              }
            }
          },
          "write_function_memory_insertion": {
            "name": "Write-function-memory-insertie",
            "description": "Maakt een verpakt RGB-composiet voor visualisatie van veranderingen uit twee of drie enkelbanddatums.",
            "params": {
              "input1": {
                "label": "Invoer1",
                "description": "Enkelbandig raster van de eerste datum."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Enkelbandig raster van de tweede datum."
              },
              "input3": {
                "label": "Invoer3",
                "description": "Optioneel enkelbandig raster van de derde datum; indien weggelaten, wordt input2 voor het blauwe kanaal gebruikt."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "brdf_normalization": {
            "name": "BRDF-normalisatie",
            "description": "BRDF-normalisatie van één scène met de C-correctie- of Minnaert-benadering op basis van de helling-/expositiegeometrie van een DEM.",
            "params": {
              "input_raster": {
                "label": "Invoerraster",
                "description": "Te normaliseren invoerreflectantieraster (enkelbandig of multibandstack)."
              },
              "input_dem": {
                "label": "Invoer-DEM",
                "description": "DEM-raster dat met de invoer is geregistreerd (zelfde raster, of wordt passend herbemonsterd)."
              },
              "solar_zenith_deg": {
                "label": "Zonzenit (graden)",
                "description": "Zenithoek van de zon in graden op het moment van opname."
              },
              "solar_azimuth_deg": {
                "label": "Zonazimut (graden)",
                "description": "Azimut van de zon in graden (met de klok mee vanaf het noorden) op het moment van opname."
              },
              "method": {
                "label": "Methode",
                "description": "Correctiemethode: c_correction (standaard) of minnaert."
              },
              "minnaert_k": {
                "label": "Minnaert-k",
                "description": "Minnaert-k-coëfficiënt in [0,1] (standaard 0.5). Alleen gebruikt wanneer method=minnaert."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Verticale overdrijving voor de berekening van helling/expositie uit het DEM (standaard 1.0)."
              },
              "output_prefix": {
                "label": "Uitvoervoorvoegsel",
                "description": "Voorvoegsel voor uitvoerbestanden (standaard brdf_normalized)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het genormaliseerde raster (overschrijft output_prefix in de modus met één uitvoer)."
              }
            }
          },
          "correct_vignetting": {
            "name": "Vignettering corrigeren",
            "description": "Correctie van lensvignettering verwijdert radiometrische artefacten die worden veroorzaakt door de optische eigenschappen van de lens buiten de as, waarbij de beeldranden minder licht ontvangen dan het beeldcentrum, wat kunstmatige helderheidsgradiënten veroorzaakt die losstaan van variatie in de oppervlaktereflectie. De vignetteringscorrectie past ruimtelijk variërende vermenigvuldigingsfactoren toe die worden berekend uit modellen van het vignetteringsprofiel (Gaussische of cos⁴-wetformuleringen), gekalibreerd op de sensorkenmerken, en herstelt zo een uniforme radiometrische respons over het gezichtsveld van het beeld. Deze voorbewerkingsstap is cruciaal voor multispectrale en hyperspectrale remote sensing, waar vignettering de spectrale analyse zou verstoren en systematische fouten zou introduceren in classificatie- en veranderingsdetectieworkflows. Belangrijke kenmerken zijn automatische schatting van het vignetteringsprofiel uit beeldstatistieken of door de gebruiker opgegeven kalibratieparameters, ruimtelijk variërende correctiefactoren die per pixel worden toegepast zonder interpolatieartefacten, optionele maskering van overgecorrigeerde randpixels om versterking van ruisende randen te voorkomen, en bandspecifieke correctie die variabele vignettering over spectrale banden verwerkt. Toepassingen omvatten voorbewerking voor spectrale classificatiealgoritmen die gevoelig zijn voor radiometrische consistentie, voorbereiding van mozaïeken waar vignetteringsgrenzen zichtbare discontinuïteiten veroorzaken, nauwkeurige radiometrische vergelijking over het beeldframe en hyperspectrale analyse die een uniforme verlichtingsrespons vereist. Voor vignettering gecorrigeerde beelden tonen een uniforme helderheid over het gezichtsveld. De uitvoer vertoont geen randverdonkering meer en een uniforme radiometrische respons van het beeldcentrum tot de randen; randpixels kunnen verhoogde ruis vertonen bij sterke correctie; gecorrigeerde beelden integreren naadloos in multispectrale analyseworkflows zonder radiometrische artefacten.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerrasterbeeld."
              },
              "pp": {
                "label": "Pp",
                "description": "Pad van de puntvector (of getypt vectorobject) met het hoofdpunt."
              },
              "focal_length": {
                "label": "Brandpuntsafstand",
                "description": "Brandpuntsafstand van de camera in mm (standaard 304.8)."
              },
              "image_width": {
                "label": "Beeldbreedte",
                "description": "Afstand tussen de linker- en rechterrand van het beeld in mm (standaard 228.6)."
              },
              "n": {
                "label": "N",
                "description": "Exponent n van het cosinusmodel (standaard 4.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "dark_object_subtraction": {
            "name": "Dark object subtraction",
            "description": "Dark Object Subtraction (DOS) is een eenvoudige maar effectieve heuristiek voor het verwijderen van atmosferische nevel zonder aanvullende meteorologische gegevens of complexe stralingsoverdrachtsmodellen. De techniek maakt gebruik van het principe dat een reflectie van nul een reflectiesignaal van nul zou moeten opleveren (Rayleigh-verstrooiing buiten beschouwing gelaten); elk signaal dat wordt waargenomen van optisch zwarte oppervlakken (diep water, dichte bosschaduw, stedelijk asfalt) wordt toegeschreven aan atmosferische padradiantie veroorzaakt door verstrooiing aan aerosolen. Dit hulpmiddel identificeert het minimale digitale getal in elke band over het beeld, interpreteert dit als atmosferische nevel en trekt het als constante offset per band af van alle pixels; meer geavanceerde varianten (DOS2, DOS3, DOS4) houden rekening met Rayleigh-verstrooiing en variabele aerosol-optische diepte met behulp van vegetatie-indices of clustering van donkere pixels. Belangrijke mogelijkheden zijn histogramanalyse om donkere objecten te isoleren en scèneafhankelijke nevel te onderscheiden van werkelijke nulreflectie, optionele maskering van bekende elementen met hoge reflectie (stedelijk gebied, sneeuw, wolken) die de identificatie van donkere objecten zouden vertekenen, bandspecifieke nevelcorrectie en snelle berekening die geschikt is voor realtime of grootschalige verwerking. Toepassingen omvatten snelle reflectieschattingen, monitoring van vegetatie en waterkwaliteit waarbij absolute kalibratie minder belangrijk is dan relatieve veranderingen, snelle kartering bij rampenbestrijding en gearchiveerde oudere gegevens waarvoor geen nauwkeurige aerosolinformatie beschikbaar is. De invoer bestaat uit reflectie aan de top van de atmosfeer of gekalibreerde radiantie, optionele landbedekkingsmaskers om heldere elementen uit te sluiten en scènemetadata. De uitvoer bestaat uit voor nevel gecorrigeerde reflectie, schattingen van de atmosferische padradiantie per band en kwaliteitsvlaggen die de betrouwbaarheid van de identificatie van donkere objecten aangeven (bijv. weinig donkere pixels, scène die wordt gedomineerd door stedelijk gebied). Hoewel DOS grof is in vergelijking met stralingsoverdrachtsmodellen, blijft het praktisch voor multitemporele analyse en kartering met wereldwijde dekking wanneer geavanceerde atmosferische gegevens niet beschikbaar zijn.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Invoerrasterstack (één of meer rasters)."
              },
              "percentile": {
                "label": "Percentiel",
                "description": "Donker-objectpercentiel per band (standaard 1.0)."
              },
              "clamp_non_negative": {
                "label": "Niet-negatief begrenzen",
                "description": "Indien waar, worden gecorrigeerde waarden onder nul op nul afgekapt (standaard true)."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden de invoerrasters geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonstering bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              },
              "output_diagnostic_offsets": {
                "label": "Diagnostische offsets uitvoeren",
                "description": "Optioneel uitvoerrasterpad voor de diagnostiek van de donker-objectoffset per band."
              }
            }
          },
          "dn_to_toa_reflectance": {
            "name": "DN naar TOA-reflectantie",
            "description": "Conversie van digitale getallen naar reflectie aan de top van de atmosfeer (TOA) zet ruwe digitale sensorgetallen om in fysisch betekenisvolle spectrale reflectiewaarden door radiometrische kalibratiecoëfficiënten per band toe te passen die zijn afgeleid uit de satellietmetadata. De conversie past radiometrische herschaling, correctie voor de exoatmosferische spectrale zonne-irradiantie, compensatie voor de zenithoek van de zon en optionele normalisatie voor de afstand aarde-zon toe om reflectiewaarden te verkrijgen die rechtstreeks vergelijkbaar zijn tussen sensoren, opnametijden en geografische locaties. Reflectie aan de top van de atmosfeer vertegenwoordigt het aandeel van de invallende zonne-energie dat door doelen aan het aardoppervlak wordt gereflecteerd, gemeten bij de sensor vóór atmosferische effecten, en dient als basis voor kwantitatieve remote-sensinganalyse. Belangrijke kenmerken zijn toepassing van kalibratiecoëfficiënten per band met volledige parsing van metadata uit standaard satellietproducten, automatische berekening van de zonnegeometrie uit het tijdstip en de locatie van de opname, optionele correctie voor de afstand aarde-zon voor seizoensvariatie en flexibele verwerking van meerdere sensortypen met gestandaardiseerde coëfficiëntformaten. Toepassingen omvatten kwantitatieve veranderingsdetectie met consistente fysische eenheden, absolute radiometrische vergelijking tussen multitemporele opnamen en verschillende sensoren, berekening van spectrale vegetatie-indices die nauwkeurige reflectie vereisen en kruisvalidatie tussen sensoren bij werk met satellietconstellaties. TOA-reflectie maakt rigoureuze analyseworkflows en wetenschappelijk verdedigbare resultaten mogelijk. De reflectiewaarden in de uitvoer liggen tussen 0-1 (soms uitgedrukt als 0-10000 voor gehele precisie) en vertegenwoordigen dimensieloze verhoudingen; de metadata bevatten de gebruikte kalibratiecoëfficiënten en de parameters van de sensorgeometrie; negatieve waarden wijzen op problemen met de gegevenskwaliteit die vóór de analyse moeten worden gemaskeerd.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Invoer-DN-rasterstack (één of meer rasters)."
              },
              "reflectance_mult": {
                "label": "Reflectantievermenigvuldiger",
                "description": "Multiplicatieve coëfficiënt(en) per band, als scalair of als array met de grootte van inputs."
              },
              "reflectance_add": {
                "label": "Reflectantie-optelwaarde",
                "description": "Additieve coëfficiënt(en) per band, als scalair of als array met de grootte van inputs (standaard 0)."
              },
              "sensor_bundle_root": {
                "label": "Sensorbundel-hoofdmap",
                "description": "Optionele hoofdmap van een Landsat-/Sentinel-2-bundel om automatisch coëfficiënten af te leiden wanneer geen expliciete coëfficiënten zijn opgegeven."
              },
              "sun_elevation_deg": {
                "label": "Zonhoogte (graden)",
                "description": "Optionele zonshoogte in graden voor de cosinuscorrectie. Wordt automatisch afgeleid uit de bundelmetadata indien beschikbaar."
              },
              "apply_solar_correction": {
                "label": "Zonnecorrectie toepassen",
                "description": "Indien waar (standaard) wordt gedeeld door sin(sun_elevation)."
              },
              "clamp_unit_interval": {
                "label": "Begrenzen op eenheidsinterval",
                "description": "Indien waar (standaard) wordt de uitvoer afgekapt op [0, 1]."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden de invoerrasters geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonstering bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "terrain_corrected_optical_analytics": {
            "name": "Terreingecorrigeerde optische analyse",
            "description": "Topografische C-correctie van multispectrale optische banden met behulp van een gecoregistreerde DEM. Geeft een stapel met oppervlaktereflectie, een correctiefactor, een wolken-/schaduwmasker en een kwaliteitsbetrouwbaarheid als uitvoer.",
            "params": {
              "input_dem": {
                "label": "Invoer-DEM",
                "description": "DEM-raster dat met de optische banden is geregistreerd."
              },
              "bundle_root": {
                "label": "Bundel-hoofdmap",
                "description": "Optionele hoofdmap van een optische sensorbundel (momenteel Sentinel-2 SAFE, Landsat of DIMAP SPOT/Pleiades) om automatisch de vereiste banden, QA indien beschikbaar en zonnemetadata op te lossen wanneer geen expliciete invoer is opgegeven."
              },
              "input_red": {
                "label": "Invoer rood",
                "description": "Raster van de rode band (optioneel wanneer bundle_root is opgegeven)."
              },
              "input_nir": {
                "label": "Invoer NIR",
                "description": "Raster van de NIR-band (optioneel wanneer bundle_root is opgegeven)."
              },
              "input_green": {
                "label": "Invoer groen",
                "description": "Raster van de groene band (optioneel)."
              },
              "input_blue": {
                "label": "Invoer blauw",
                "description": "Raster van de blauwe band (optioneel). Wordt automatisch uit de bundelmetadata opgelost wanneer bundle_root is opgegeven."
              },
              "solar_mode": {
                "label": "Zonmodus",
                "description": "Modus voor het bepalen van de zonnehoeken: auto, manual, metadata, datetime_location."
              },
              "solar_zenith_deg": {
                "label": "Zonzenit (graden)",
                "description": "Zenithoek van de zon in graden (vereist in de modus manual)."
              },
              "solar_azimuth_deg": {
                "label": "Zonazimut (graden)",
                "description": "Azimut van de zon in graden (met de klok mee vanaf het noorden, vereist in de modus manual)."
              },
              "acquisition_datetime_utc": {
                "label": "Opnametijdstip (UTC)",
                "description": "Opnametijdstip in RFC3339 UTC voor de modus datetime_location."
              },
              "latitude": {
                "label": "Breedtegraad",
                "description": "Optionele breedtegraad voor de modus datetime_location."
              },
              "longitude": {
                "label": "Lengtegraad",
                "description": "Optionele lengtegraad voor de modus datetime_location."
              },
              "profile": {
                "label": "Profiel",
                "description": "Verwerkingsprofiel: conservative, balanced, fast."
              },
              "cloud_threshold": {
                "label": "Wolkendrempel",
                "description": "Optionele wolkendrempelwaarde in de eenheden van de bronband. Wordt automatisch afgeleid indien weggelaten."
              },
              "shadow_threshold": {
                "label": "Schaduwdrempel",
                "description": "Optionele drempelwaarde voor wolkenschaduw in de eenheden van de bronband. Wordt automatisch afgeleid indien weggelaten."
              },
              "qa_mask": {
                "label": "QA-masker",
                "description": "Optioneel pad van het QA-maskerraster."
              },
              "qa_mask_format": {
                "label": "QA-maskerformaat",
                "description": "Codering van het QA-masker: auto, landsat_qa_pixel, sentinel2_scl, sentinel2_qa60, binary."
              },
              "mask_strategy": {
                "label": "Maskerstrategie",
                "description": "Maskeerstrategie: auto, qa_only, heuristic_only, qa_plus_heuristic."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Verticale overdrijving voor helling/expositie."
              },
              "output_prefix": {
                "label": "Uitvoervoorvoegsel",
                "description": "Voorvoegsel voor alle uitvoerartefacten."
              }
            }
          },
          "land_surface_temperature_single_channel": {
            "name": "Landoppervlaktetemperatuur (enkel kanaal)",
            "description": "Bepaling van de landoppervlaktetemperatuur uit één thermisch infraroodkanaal schat de radiatieve huidtemperatuur via inversie van de stralingsoverdrachtsvergelijking. Digitale sensorgetallen worden omgezet in spectrale radiantie met sensorspecifieke kalibratiecoëfficiënten; de radiantie wordt via de Planck-functie met bandspecifieke thermische constanten geïnverteerd tot helderheidstemperatuur; de helderheidstemperatuur wordt via empirische emissiviteitscorrecties omgezet in de fysische LST. De emissiviteit wordt afgeleid uit vegetatie-indices of rechtstreeks opgegeven, waarmee wordt gecorrigeerd voor materiaalafhankelijke variaties in thermische emissiviteit. Belangrijkste kenmerken: vereist één thermische band; eenvoudige radiometrische verwerking; snelle berekening; geen meerkanaalsvereiste; schatting van de emissiviteit op basis van vegetatie-indices; directe uitvoer van de fysische temperatuur. Toepassingen: kartering van stedelijke hitte-eilanden; monitoring van droogtestress; detectie van geothermische elementen; het volgen van thermische signaturen van natuurbranden; agrarisch waterbeheer. Interpretatie van de uitvoer: de uitvoer is de radiatieve huidtemperatuur in Kelvin (of Celsius indien omgerekend). Bepaling met één kanaal kan de effecten van atmosferische waterdamp niet volledig verwijderen; de resterende atmosferische bias bedraagt doorgaans 2-5 K. Emissiviteitsfouten planten zich direct voort: een emissiviteitsfout van ±0.05 ≈ een temperatuurfout van ±1-2 K. De op vegetatie gebaseerde emissiviteit varieert met de NDVI; kale bodem vertoont een lagere emissiviteit dan vegetatie. LST-tijdreeksen tonen opwarmings-/afkoelingstrends; LST-anomalieën > achtergrond ± 5K wijzen op thermische elementen.",
            "params": {
              "thermal_input": {
                "label": "Thermische invoer",
                "description": "Pad van het thermische raster (standaard DN, of helderheidstemperatuur als input_is_brightness_temp=true)."
              },
              "input_is_brightness_temp": {
                "label": "Invoer is helderheidstemperatuur",
                "description": "Indien waar, is thermal_input al een helderheidstemperatuur in kelvin (standaard false)."
              },
              "emissivity_input": {
                "label": "Emissiviteitsinvoer",
                "description": "Optioneel pad van het emissiviteitsraster, uitgelijnd op thermal_input."
              },
              "emissivity_constant": {
                "label": "Emissiviteitsconstante",
                "description": "Terugvalemissiviteit wanneer emissivity_input niet is opgegeven (standaard 0.98)."
              },
              "sensor_bundle_root": {
                "label": "Sensorbundel-hoofdmap",
                "description": "Optionele hoofdmap van een Landsat-bundel om de thermische radiantie en de Planck-constanten af te leiden."
              },
              "thermal_band_number": {
                "label": "Thermisch bandnummer",
                "description": "Thermisch bandnummer voor het opzoeken van metadata (standaard 10)."
              },
              "radiance_mult": {
                "label": "Radiantievermenigvuldiger",
                "description": "Multiplicatieve factor van de thermische radiantie voor de conversie DN->radiantie."
              },
              "radiance_add": {
                "label": "Radiantie-optelwaarde",
                "description": "Additieve factor van de thermische radiantie voor de conversie DN->radiantie."
              },
              "k1_constant": {
                "label": "K1-constante",
                "description": "Thermische Planck-constante K1."
              },
              "k2_constant": {
                "label": "K2-constante",
                "description": "Thermische Planck-constante K2."
              },
              "wavelength_um": {
                "label": "Golflengte (µm)",
                "description": "Effectieve thermische golflengte in micrometer (standaard afgeleid van thermal_band_number)."
              },
              "output_units": {
                "label": "Uitvoereenheden",
                "description": "Uitvoereenheden: celsius (standaard) of kelvin."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) wordt emissivity_input indien nodig geherprojecteerd naar het CRS van thermal_input."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonstering bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "land_surface_temperature_split_window": {
            "name": "Landoppervlaktetemperatuur (split-window)",
            "description": "Split-window-bepaling van de LST gebruikt twee thermische infraroodbanden om de oppervlaktetemperatuur en de emissiviteit gelijktijdig te schatten via inversie van de stralingsoverdrachtsvergelijking. Het verschil in atmosferische absorptie tussen twee banden (doorgaans in het gebied van 10-12 μm) maakt correctie voor atmosferische waterdamp mogelijk, wat de nauwkeurigheid verbetert ten opzichte van methoden met één kanaal. De helderheidstemperaturen van beide banden worden geïnverteerd met een emissiviteitsparametrisatie op basis van de vegetatiefractie of met door de gebruiker aangeleverde emissiviteitsgrids. Belangrijkste kenmerken: vereist twee thermische banden; atmosferische correctie via differentiële absorptie; gelijktijdige bepaling van temperatuur en emissiviteit; gepubliceerde algoritmen voor standaardsensoren; betere atmosferische compensatie dan met één kanaal. Toepassingen: kartering van stedelijke hitte-eilanden; detectie van landbouwdroogte; detectie van geothermische elementen; studies naar de interactie tussen land en atmosfeer; detectie van vulkanische/thermische anomalieën. Interpretatie van de uitvoer: de uitvoer is de radiatieve oppervlaktetemperatuur met verbeterde atmosferische correctie. Split-window-bepaling vermindert de bias door atmosferische waterdamp tot <1-2 K, vergeleken met fouten van 2-5 K bij één kanaal. De afweging tussen temperatuur en emissiviteit blijft bestaan: gebieden met een hoge vegetatie-index vertonen een lage emissiviteit die zorgvuldige interpretatie vereist. Heterogene oppervlakken (gemengde vegetatie/bodem) tonen tussenliggende waarden. Temporele consistentie verbetert de betrouwbaarheid van veranderingsdetectie; LST-trends > ±3K wijzen op significante thermische veranderingen.",
            "params": {
              "thermal1_input": {
                "label": "Thermische invoer 1",
                "description": "Pad van het eerste thermische raster (bijv. Landsat B10)."
              },
              "thermal2_input": {
                "label": "Thermische invoer 2",
                "description": "Pad van het tweede thermische raster (bijv. Landsat B11)."
              },
              "input_is_brightness_temp": {
                "label": "Invoer is helderheidstemperatuur",
                "description": "Indien waar, zijn de thermische invoerrasters al helderheidstemperaturen in kelvin (standaard false)."
              },
              "emissivity_mean_input": {
                "label": "Invoer gemiddelde emissiviteit",
                "description": "Optioneel pad van het raster met de gemiddelde emissiviteit."
              },
              "emissivity_delta_input": {
                "label": "Invoer emissiviteitsverschil",
                "description": "Optioneel pad van het raster met het emissiviteitsverschil (epsilon1 - epsilon2)."
              },
              "emissivity_mean_constant": {
                "label": "Constante gemiddelde emissiviteit",
                "description": "Terugvalconstante voor de gemiddelde emissiviteit wanneer emissivity_mean_input ontbreekt (standaard 0.98)."
              },
              "emissivity_delta_constant": {
                "label": "Constante emissiviteitsverschil",
                "description": "Terugvalconstante voor het emissiviteitsverschil wanneer emissivity_delta_input ontbreekt (standaard 0.0)."
              },
              "sensor_bundle_root": {
                "label": "Sensorbundel-hoofdmap",
                "description": "Optionele hoofdmap van een Landsat-bundel om de thermische radiantie en de Planck-constanten af te leiden."
              },
              "thermal_band1_number": {
                "label": "Thermisch bandnummer 1",
                "description": "Bandnummer voor het opzoeken van de metadata van thermal1_input (standaard 10)."
              },
              "thermal_band2_number": {
                "label": "Thermisch bandnummer 2",
                "description": "Bandnummer voor het opzoeken van de metadata van thermal2_input (standaard 11)."
              },
              "radiance1_mult": {
                "label": "Radiantievermenigvuldiger 1",
                "description": "Multiplicatieve radiantiefactor van band 1."
              },
              "radiance1_add": {
                "label": "Radiantie-optelwaarde 1",
                "description": "Additieve radiantiefactor van band 1."
              },
              "k1_1": {
                "label": "K1 1",
                "description": "Planck-constante K1 van band 1."
              },
              "k2_1": {
                "label": "K2 1",
                "description": "Planck-constante K2 van band 1."
              },
              "radiance2_mult": {
                "label": "Radiantievermenigvuldiger 2",
                "description": "Multiplicatieve radiantiefactor van band 2."
              },
              "radiance2_add": {
                "label": "Radiantie-optelwaarde 2",
                "description": "Additieve radiantiefactor van band 2."
              },
              "k1_2": {
                "label": "K1 2",
                "description": "Planck-constante K1 van band 2."
              },
              "k2_2": {
                "label": "K2 2",
                "description": "Planck-constante K2 van band 2."
              },
              "coeff_a0": {
                "label": "Coëfficiënt A0",
                "description": "Split-window-coëfficiënt a0 (standaard 0.0)."
              },
              "coeff_a1": {
                "label": "Coëfficiënt A1",
                "description": "Split-window-coëfficiënt a1 voor de term T1 (standaard 1.0)."
              },
              "coeff_a2": {
                "label": "Coëfficiënt A2",
                "description": "Split-window-coëfficiënt a2 voor de term (T1-T2) (standaard 0.0)."
              },
              "coeff_a3": {
                "label": "Coëfficiënt A3",
                "description": "Split-window-coëfficiënt a3 voor de term (T1-T2)^2 (standaard 0.0)."
              },
              "coeff_a4": {
                "label": "Coëfficiënt A4",
                "description": "Split-window-coëfficiënt a4 voor de term (1-emissivity_mean) (standaard 0.0)."
              },
              "coeff_a5": {
                "label": "Coëfficiënt A5",
                "description": "Split-window-coëfficiënt a5 voor de term emissivity_delta (standaard 0.0)."
              },
              "output_units": {
                "label": "Uitvoereenheden",
                "description": "Uitvoereenheden: celsius (standaard) of kelvin."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden aanvullende rasters indien nodig geherprojecteerd naar het CRS van thermal1_input."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonstering bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "ndvi_based_emissivity": {
            "name": "Emissiviteit op basis van NDVI",
            "description": "Schatting van de emissiviteit van het landoppervlak op basis van NDVI leidt de breedbandige thermische emissiviteit af uit de vegetatiefractie die uit de NDVI wordt berekend, wat thermische stralingsoverdrachtscorrecties mogelijk maakt voor de bepaling van de landoppervlaktetemperatuur uit thermisch-infrarode satellietgegevens. Het algoritme berekent de NDVI uit de rode en nabij-infrarode reflectie, transformeert de NDVI naar de vegetatiefractie en past vervolgens empirische relaties tussen vegetatiefractie en emissiviteit toe die zijn gevalideerd met veldmetingen en gesimuleerde stralingsoverdracht. Vegetatie beïnvloedt de thermische emissiviteit sterk; meer vegetatie verhoogt de emissiviteit richting ~0.99, terwijl de emissiviteit van kale bodem varieert van ~0.90-0.98, afhankelijk van de bodemsamenstelling en de oppervlakteruwheid. Belangrijke kenmerken zijn automatische berekening van de vegetatiefractie uit de NDVI zonder veldkalibratie, standaard empirische relaties die zijn gebaseerd op de fysische stralingsoverdrachtstheorie, optionele gevoeligheidsanalyse van emissiviteitsvariaties en directe compatibiliteit met thermisch-infrarode satellietgegevens. Toepassingen omvatten bepaling van de landoppervlaktetemperatuur uit thermische satellietgegevens die nauwkeurige emissiviteitscorrecties vereisen (Landsat, MODIS, Sentinel-3), analyse van stedelijke hitte-eilanden met correctie voor variabele vegetatie, thermische modellering in toepassingen voor waterbeheer en landbouw, en klimaattoepassingen die consistente wereldwijde thermische gegevenssets vereisen. Emissiviteit op basis van NDVI maakt nauwkeurige thermische correctie mogelijk. De uitvoer bestaat uit een emissiviteitsraster (0-1) dat geschikt is voor thermische stralingsoverdrachtscorrectie, de vegetatiefractie als tussenproduct voor interpretatie, en metadata die de empirische relaties en de aangenomen bodem-/oppervlakte-eigenschappen documenteren; de emissiviteitswaarden geven inzicht in de onzekerheid van de thermische correctie en de geschiktheid voor specifieke toepassingen.",
            "params": {
              "red_input": {
                "label": "Rode invoer",
                "description": "Pad van het raster van de rode band."
              },
              "nir_input": {
                "label": "NIR-invoer",
                "description": "Pad van het raster van de NIR-band."
              },
              "ndvi_soil": {
                "label": "NDVI bodem",
                "description": "NDVI-drempelwaarde voor de fractie kale bodem (standaard 0.2)."
              },
              "ndvi_vegetation": {
                "label": "NDVI vegetatie",
                "description": "NDVI-drempelwaarde voor de fractie volledige vegetatie (standaard 0.5)."
              },
              "emissivity_soil": {
                "label": "Emissiviteit bodem",
                "description": "Aangenomen emissiviteit van de bodem (standaard 0.97)."
              },
              "emissivity_vegetation": {
                "label": "Emissiviteit vegetatie",
                "description": "Aangenomen emissiviteit van de vegetatie (standaard 0.99)."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) wordt nir_input indien nodig geherprojecteerd naar het CRS van red_input."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonstering bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "continuum_removal": {
            "name": "Continuümverwijdering",
            "description": "Continuümverwijdering normaliseert multispectrale spectra door de bovenste convexe omhullende (het continuüm) rond het spectrum te schatten en elke band te delen door de overeenkomstige continuümwaarde. Verwijdert de algehele spectrale helling en helderheidsvariaties, wat een betere visualisatie van absorptiekenmerken (banden, diepten) mogelijk maakt. Absorptiediepten en -posities worden gestandaardiseerd, wat identificatie van mineralen/materialen via spectrale bibliotheken mogelijk maakt. De continuümlijn wordt berekend met een algoritme voor de convexe omhullende dat lokale maxima over het spectrale bereik verbindt. Belangrijkste kenmerken: verwijdert het spectrale continuüm; versterkt absorptiekenmerken; normaliseert voor helderheidsvariaties; maakt vergelijking met spectrale bibliotheken mogelijk; standaardiseert de spectrale vorm. Toepassingen: identificatie van mineralen; materiaalclassificatie; spectrale analyse van vegetatie; detectie van spectrale anomalieën; kartering van absorptiekenmerken. Interpretatie van de uitvoer: spectra zonder continuüm vertonen absorptiekenmerken (waarden <1.0) die materiaalspecifieke banden aangeven. Absorptiediepten geven de sterkte van het kenmerk aan; ondiepe kenmerken (<0.2) wijzen op ondergeschikte componenten; diepe kenmerken (>0.5) wijzen op dominante absorpties. De posities van kenmerken in de golflengteruimte maken identificatie van materialen via referentiebibliotheken mogelijk. Vlakke spectra zonder continuüm (rond 1.0) wijzen op spectraal neutrale materialen.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Invoerrasterstack (één raster per band)."
              },
              "wavelengths": {
                "label": "Golflengten",
                "description": "Optionele strikt stijgende array van golflengten die overeenkomt met de lengte van inputs."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonstering bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van het multibandraster."
              }
            }
          },
          "linear_spectral_unmixing": {
            "name": "Lineaire spectrale ontmenging",
            "description": "Lineaire spectrale ontmenging ontleedt de multispectrale vector van elke pixel als een niet-negatieve lineaire combinatie van eindlidspectra die zuivere materiaalsignaturen vertegenwoordigen. Optimalisatie met niet-negatieve kleinste kwadraten lost min ||y - Ax||² op onder de voorwaarde x ≥ 0, waarbij y het pixelspectrum is, A de eindlidsignaturen bevat en x de abundantiefracties voorstelt. Een som-tot-één-voorwaarde wordt afgedwongen, zodat de abundantiewaarden fysische verhoudingen vertegenwoordigen. Eindleden worden afgeleid uit trainingsgegevens of bibliotheekdatabases, of geëxtraheerd met algoritmen voor eindlidextractie. Belangrijkste kenmerken: schatting van materialen op subpixelniveau; fysische interpretatie van abundantiefracties; ondersteunt meerdere eindleden; uitvoer beperkt tot geldige bereiken [0,1]; maakt detectie van materiaalveranderingen mogelijk. Toepassingen: kartering van de abundantie van landbedekking; schatting van de mineraalsamenstelling; inventarisatie van stedelijke materialen; fracties van vegetatie/bodem/verhard oppervlak; classificatie op basis van spectrale bibliotheken. Interpretatie van de uitvoer: de abundantiekaarten in de uitvoer tonen materiaalfracties per pixel die optellen tot 1.0. Abundanties <0.1 wijzen op ondergeschikte componenten; abundanties >0.7 wijzen op dominante materialen. De restfout geeft de kwaliteit van de ontmenging aan; lage residuen wijzen op een goede spectrale fit; hoge residuen wijzen op een verkeerde keuze van eindleden of complexe pixels.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Invoerrasterstack (één raster per band)."
              },
              "endmembers": {
                "label": "Eindleden",
                "description": "Eindledensignaturen als array van objecten {name, values} of als numerieke arrays."
              },
              "sum_to_one": {
                "label": "Som gelijk aan één",
                "description": "Indien waar (standaard) worden niet-negatieve fracties genormaliseerd zodat ze optellen tot één."
              },
              "iterations": {
                "label": "Iteraties",
                "description": "Aantal iteraties van de geprojecteerde gradiënt (standaard 80)."
              },
              "step_size": {
                "label": "Stapgrootte",
                "description": "Stapgrootte van de geprojecteerde gradiënt (standaard 0.05)."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonstering bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van het multiband-fractieraster."
              },
              "output_residual": {
                "label": "Residu uitvoeren",
                "description": "Optioneel uitvoerpad van het raster met de RMS van de residuen."
              }
            }
          },
          "minimum_noise_fraction": {
            "name": "Minimum Noise Fraction",
            "description": "Minimum noise fraction transformeert hyperspectrale gegevens via een proces in twee stappen: schatting van de ruiscovariantie gevolgd door ruiswitting en hoofdcomponentenanalyse. Ruiswitting decorreleert de ruis over de banden; PCA in de gewitte ruimte identificeert door signaal gedomineerde richtingen. De uitvoercomponenten zijn geordend op signaal-ruisverhouding, waarbij de eerste componenten signaal vertegenwoordigen en latere componenten ruis. Maakt ruisreductie mogelijk via afkapping van componenten zonder de artefacten van conventionele afvlakking. Belangrijkste kenmerken: scheidt signaal van ruis; ruis geconcentreerd in latere componenten; selectie van componenten maakt ruisfiltering mogelijk; behoudt de spectrale getrouwheid; maakt dimensiereductie mogelijk. Toepassingen: ruisonderdrukking in hyperspectrale beelden; dimensiereductie voor classificatie; signaalversterking; karakterisering van ruis; beoordeling van de beeldkwaliteit. Interpretatie van de uitvoer: de eerste 1-3 MNF-componenten bevatten doorgaans 70-90% van het signaal; latere componenten bevatten steeds meer ruis. Afkapping van componenten (behoud van de eerste N componenten) verwijdert ruis en behoudt tegelijk de essentiële spectrale informatie. Beelden van MNF-componenten maken een visuele beoordeling van de ruis mogelijk; de standaardafwijking van de latere componenten geeft het ruisniveau aan.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Invoerrasterstack (één raster per band)."
              },
              "num_components": {
                "label": "Aantal componenten",
                "description": "Aantal uit te voeren MNF-componenten (standaard: alle banden)."
              },
              "noise_mode": {
                "label": "Ruismodus",
                "description": "Modus van de ruisschatter: 'difference_x' (standaard) of 'difference_y'."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonstering bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van het multibandraster met MNF-componenten."
              },
              "output_inverse": {
                "label": "Inverse uitvoeren",
                "description": "Optioneel pad van het gereconstrueerde multibandraster uit de behouden MNF-componenten."
              }
            }
          },
          "spectral_angle_mapper": {
            "name": "Spectral Angle Mapper",
            "description": "Spectral Angle Mapping classificeert pixels door spectrale hoeken te berekenen tussen elk pixelspectrum en de spectra van een referentiebibliotheek, waarbij pixels worden toegewezen aan het bibliotheekspectrum met de kleinste hoek, wat de grootste spectrale gelijkenis vertegenwoordigt, onafhankelijk van de verlichtingsintensiteit. SAM behandelt elk pixel- en referentiespectrum als vectoren in een N-dimensionale spectrale ruimte en berekent de hoeken tussen vectoren met inproductbewerkingen en inverse cosinustransformaties. Deze classificatie op basis van de spectrale hoek is invariant voor verlichtings- en topografische effecten die de algehele helderheid schalen maar de spectrale vorm behouden, waardoor ze robuust is voor complex terrein en wisselende opnameomstandigheden. Belangrijke kenmerken zijn automatische definitie van een drempel voor de spectrale hoek die probabilistische classificatiebetrouwbaarheid mogelijk maakt, import van referentiebibliotheken die door de gebruiker aangeleverde spectrale signaturen uit veldmonsters of spectrale bibliotheken ondersteunt, invariantie voor verlichting die variabele belichting verwerkt met behoud van spectraal onderscheid, en snelle berekening die realtime classificatie van grote beelden mogelijk maakt. Veelvoorkomende toepassingen zijn identificatie van materialen en geologische kartering met USGS-spectrale bibliotheken, classificatie van vegetatiesoorten door multispectrale satellietgegevens te combineren met in het veld verzamelde spectra, mineraalprospectie in hyperspectrale luchtopnamen en nauwkeurigheidsbeoordeling door beeldspectra te vergelijken met in het veld verzamelde referentiesignaturen. De SAM-uitvoer maakt betrouwbare identificatie van materialen mogelijk op basis van signaturen van de spectrale vorm. De classificatie-uitvoer levert een enkelbandbeeld met gehele klasselabels die overeenkomen met bibliotheekitems; een betrouwbaarheidsraster registreert optioneel de minimale spectrale hoeken voor elke pixel, wat filtering op basis van drempels mogelijk maakt; de uitvoer maakt directe identificatie van materialen en filtering op basis van betrouwbaarheid mogelijk.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Invoerrasterstack (één raster per band)."
              },
              "endmembers": {
                "label": "Eindleden",
                "description": "Eindledensignaturen als array van objecten {name, values} of als numerieke arrays."
              },
              "threshold_angle_deg": {
                "label": "Drempelhoek (graden)",
                "description": "Optionele maximaal geaccepteerde spectrale hoek in graden; niet-overeenkomende pixels krijgen klasse 0."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonstering bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van het klasseraster."
              },
              "output_angle": {
                "label": "Hoek uitvoeren",
                "description": "Optioneel uitvoerrasterpad voor de minimale spectrale hoek (graden)."
              }
            }
          },
          "spectral_library_matching": {
            "name": "Spectrale bibliotheekmatching",
            "description": "Vergelijking met spectrale bibliotheken voert een classificatie uit door de spectra van beeldpixels te vergelijken met de spectra van een referentiebibliotheek met behulp van meerdere gelijkenismaten, waaronder de spectrale hoek (hoek tussen spectrumvectoren), de euclidische afstand (verschil in grootte) en de spectrale informatiedivergentie. Het algoritme accepteert een door de gebruiker aangeleverde spectrale referentiebibliotheek met spectra van bekende materialen/klassen, berekent gelijkenismaten tussen elke beeldpixel en de bibliotheekitems, identificeert het bibliotheekspectrum met de beste overeenkomst (kleinste hoek, kleinste afstand of kleinste divergentie) en geeft klasselabels met optionele betrouwbaarheids-/gelijkenisscores als uitvoer. Vergelijking met bibliotheken maakt identificatie van materialen mogelijk zonder trainingssamples uit het veld, door gebruik te maken van referentiespectra van de USGS, veldonderzoeken of laboratoriumspectroscopie. Belangrijke kenmerken zijn meerdere gelijkenismaten waaruit een maat kan worden gekozen voor specifieke spectrale kenmerken en klasseverdelingen, flexibele import van bibliotheken die diverse formaten van spectrale bibliotheken ondersteunt, optionele kwantificering van betrouwbaarheid/onzekerheid en uitvoer van direct identificeerbare materialen. Toepassingen omvatten geologische kartering met de USGS-spectrale bibliotheek voor mineralogie, vegetatieclassificatie met spectrale referentiebibliotheken van planten, identificatie van bouwmaterialen in stedelijke gebieden en analyse van hyperspectrale luchtopnamen. Vergelijking met spectrale bibliotheken maakt geautomatiseerde identificatie van materialen mogelijk. De uitvoer bestaat uit een geclassificeerde kaart met de ID's van bibliotheekitems als klasselabels, een gelijkenis-/betrouwbaarheidsraster dat de kwaliteit van de overeenkomst kwantificeert en een optionele volledige stapel met spectrale hoeken/afstanden voor elk bibliotheekitem die filtering op basis van drempels mogelijk maakt; de metadata documenteren de bron van de referentiebibliotheek en de gebruikte gelijkenismaat.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Invoerrasterstack (één raster per band)."
              },
              "library": {
                "label": "Bibliotheek",
                "description": "Spectrale-bibliotheekitems als array van objecten {name, values} of als numerieke arrays."
              },
              "library_csv": {
                "label": "Bibliotheek-CSV",
                "description": "Optioneel pad van een CSV-spectrale bibliotheek (rijen name,b1,b2,... of b1,b2,...). Gebruikt wanneer 'library' niet is opgegeven."
              },
              "metric": {
                "label": "Maat",
                "description": "Overeenkomstmaat: 'sam' (standaard), 'euclidean' of 'sid'."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonstering bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van het klasseraster."
              },
              "output_score": {
                "label": "Score uitvoeren",
                "description": "Optioneel uitvoerpad van het raster met de beste overeenkomstscore (hoek of afstand)."
              }
            }
          },
          "canny_edge_detection": {
            "name": "Canny-randdetectie",
            "description": "Past de meerfasige Canny-randdetectie toe (Gaussische vervaging → Sobel-gradiënt → onderdrukking van niet-maxima → dubbele drempel → hysterese).",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster (enkelbandig of gepakt RGB)."
              },
              "sigma": {
                "label": "Sigma",
                "description": "Standaardafwijking van de Gaussiaanse gladstrijkkernel in pixels. Standaard: 0.5."
              },
              "low_threshold": {
                "label": "Lage drempelwaarde",
                "description": "Lage hysteresisdrempelwaarde (fractie 0–1 van de maximale gradiënt). Standaard: 0.05."
              },
              "high_threshold": {
                "label": "Hoge drempelwaarde",
                "description": "Hoge hysteresisdrempelwaarde (fractie 0–1 van de maximale gradiënt). Standaard: 0.15."
              },
              "add_back": {
                "label": "Terug optellen",
                "description": "Indien waar, worden randpixels in het oorspronkelijke beeld op nul gezet in plaats van een binaire randkaart te maken. Standaard: false."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad. Indien weggelaten, blijft het resultaat in het geheugen."
              }
            }
          },
          "corner_detection": {
            "name": "Hoekdetectie",
            "description": "Identificeert hoekpatronen in binaire rasters met hit-and-miss-sjablonen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "laplacian_filter": {
            "name": "Laplace-filter",
            "description": "Het Laplace-filter berekent de tweede ruimtelijke afgeleide van de beeldintensiteit en biedt krachtige randdetectie via isotrope (in alle richtingen) gradiëntmeting. De implementatie past een vaste kernel toe die de Laplace-operator benadert (de som van de tweede afgeleiden in x- en y-richting) en legt intensiteitsveranderingen vast ongeacht de oriëntatie van de rand. In tegenstelling tot richtingsfilters behandelt deze benadering alle randrichtingen gelijk, waardoor ze ideaal is voor kenmerkdetectie die oriëntatieonafhankelijkheid vereist. De wiskundige basis berust op de discrete benadering: ∇²I ≈ I(x+1,y) + I(x-1,y) + I(x,y+1) + I(x,y-1) - 4·I(x,y). Belangrijke kenmerken zijn de mogelijkheid tot detectie van nuldoorgangen (echte randen liggen waar de uitvoer door nul gaat), ongevoeligheid voor de randrichting en het vermogen om overgangen van licht naar donker en van donker naar licht op identieke wijze te detecteren. Laplace-filtering blinkt uit in geologische kartering, waar structuurgrenzen verschijnen als nuldoorgangen, afbakening van vegetatiegrenzen, extractie van wegennetwerken uit beelden met hoge resolutie en detectie van gebouwcontouren. De interpretatie van de uitvoer draait om het begrijpen van tekenovergangen: sterk positieve waarden wijzen op lokale donkere minima, negatieve waarden op lokale heldere maxima, en nuldoorgangen markeren echte randen. De uitvoer ligt doorgaans tussen -1000 en +1000 voor 8-bits bronbeelden, afhankelijk van het lokale contrast. Een grote uitvoerwaarde wijst op scherpe, goed gedefinieerde randen; een kleine waarde op geleidelijke overgangen. Detectie van nuldoorgangen vereist een zorgvuldige keuze van de drempel. Merk op dat de Laplace-operator gevoelig is voor ruis (hoogfrequente ruis wordt versterkt), dus voorfiltering met Gaussische afvlakking wordt vóór toepassing doorgaans aanbevolen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "variant": {
                "label": "Variant",
                "description": "Kernelvariant: 3x3(1), 3x3(2), 3x3(3), 3x3(4), 5x5(1), 5x5(2)."
              },
              "clip_amount": {
                "label": "Afkaphoeveelheid",
                "description": "Optioneel symmetrisch afkappingspercentage van de staarten (0-40)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "laplacian_of_gaussians_filter": {
            "name": "Laplacian-of-Gaussian-filter",
            "description": "Voert randversterking met Laplacian-of-Gaussians (LoG) uit, die Gaussische afvlakking combineert met Laplace-randdetectie. Rekenkundig benaderd via difference-of-Gaussians (DoG). Vlakt eerst het beeld af (vermindert ruis) en past daarna de Laplace-operator toe (detecteert randen). Klassieke multischalige randdetectietechniek. Detectie van nuldoorgangen in de LoG-uitvoer identificeert nauwkeurige randlocaties. LoG is standaard voor randdetectie in de schaalruimte: de Gauss-functie verwijdert ruis, de Laplace-operator versterkt randen. De sigmaparameter bepaalt de schaal van de gedetecteerde randen: een kleine sigma detecteert fijne randen, een grote sigma brede randen. LoG wordt voor efficiëntie benaderd via DoG. Meerdere sigmawaarden maken multischalige randdetectie mogelijk (identificatie van kenmerken op verschillende schalen). Toepassingen: (1) robuuste randdetectie (ruisbestendig), (2) multischalige randdetectie (gebruik meerdere sigma's), (3) lokalisatie van randen via nuldoorgangen, (4) voorbewerking voor segmentatie, (5) blobdetectie via LoG-nuldoorgangen. Workflow: LoG toepassen→nuldoorgangen identificeren→randen traceren→vectorisatie of verdere verwerking.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "sigma": {
                "label": "Sigma",
                "description": "Gaussiaanse sigma van de LoG-kernel (0.5-20.0, standaard 0.75)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "prewitt_filter": {
            "name": "Prewitt-filter",
            "description": "De Prewitt-operator voert gradiëntgebaseerde randdetectie uit, vergelijkbaar met Sobel, maar met alternatieve kernelgewichten die zijn geoptimaliseerd voor andere ruiskenmerken. De implementatie gebruikt twee 3×3-convolutiekernels die de afgeleiden in x- en y-richting berekenen met een uniforme weging van de middelste en aangrenzende rijen/kolommen, wat afwijkt van de op het centrum gerichte benadering van Sobel. De gradiëntgrootte combineert de richtingscomponenten via √(Gx² + Gy²) en levert een uniforme richtingsrespons. De wiskundige basis berust op discrete differentiatiebenaderingen die alle bijdragende pixels gelijk wegen in plaats van de centra te benadrukken. Belangrijke kenmerken zijn een iets andere ruisrespons dan Sobel (soms beter bij extreem ruisende beelden), een echte ontleding in grootte en richting die geavanceerde randanalyse mogelijk maakt, rekenkundige efficiëntie waarvoor alleen standaardconvolutiebewerkingen nodig zijn, en bewezen effectiviteit op radar-, optische en thermische beelden. Prewitt-filtering blinkt uit in de analyse van SAR-beelden, waar uniforme weging spikkelartefacten beter vermindert dan Sobel, in de detectie van thermische anomalieën met nadruk op lijnvormige elementen en in multispectrale randextractie die richtingsonafhankelijke verwerking vereist. De interpretatie van de uitvoer is vergelijkbaar met Sobel: de grootte geeft de randsterkte aan (hoger = scherper), de richting berekend via atan2(Gy, Gx) geeft de randoriëntatie in radialen. De grootte ligt doorgaans tussen 0-256 voor 8-bits invoer; waarden boven 80 wijzen over het algemeen op significante randen. Richtingswaarden liggen tussen -π en +π; 0 radialen wijst op zuiver horizontale randen, ±π/2 op zuiver verticale randen. De uniforme kernelweging levert doorgaans iets gladdere gradiëntresponsen op dan Sobel, wat mogelijk beter is voor schaarse of fijne beeldkenmerken. Pas aanvullende mediaanfiltering toe om door ruis veroorzaakte fout-positieven te verminderen. Combineer de richtingsuitvoer met drempelselectie voor workflows voor het koppelen van randen en het extraheren van grenzen die cruciaal zijn voor segmentatiepijplijnen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "clip_tails": {
                "label": "Staarten afkappen",
                "description": "Optioneel symmetrisch afkappingspercentage van de staarten (0-40)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "roberts_cross_filter": {
            "name": "Roberts-cross-filter",
            "description": "Het Roberts Cross-filter is een van de vroegste randdetectieoperatoren en gebruikt een eenvoudig maar effectief diagonaal kruiskernelpatroon van 2×2 om beeldgradiënten te berekenen met minimale rekenkundige overhead. Deze operator gebruikt twee orthogonale 2×2-matrices die 45° zijn gedraaid ten opzichte van de horizontaal-verticale uitlijning, wat kruisvormige convolutiemaskers oplevert die randen detecteren met nadruk op hoeken en diagonale overgangen. Het filter past afzonderlijke kernels toe voor de X- en Y-gradiënten en berekent de grootte via de som van de absolute waarden of de euclidische norm. Belangrijke kenmerken zijn een uitzonderlijke rekenkundige efficiëntie dankzij de kleine 2×2-kernel, minimale geheugenvereisten en snelle verwerking van grote rastergegevenssets. Het Roberts Cross-filter is bijzonder effectief voor het detecteren van fijnschalige kenmerken en scherpe overgangen in beelden met hoge resolutie. De belangrijkste toepassingen zijn snelle randdetectie in tijdkritische toepassingen, realtime verwerking van videostreams, voorlopige grensdetectie vóór geavanceerde algoritmen en omgevingen met beperkte middelen. Toepassingsgebieden zijn onder meer voorbewerking van luchtopnamen, kwaliteitsbeoordeling van satellietbeelden, kenmerkextractie voor machine-learningpijplijnen en mobiele GIS-implementaties. De uitvoer toont randlocaties als pixels met een grote waarde waar spectrale veranderingen optreden binnen de 2×2-omgeving. Achtergrondgebieden tonen doorgaans waarden rond nul; randen verschijnen als heldere lijnvormige elementen die grenzen tussen verschillende landbedekkingsklassen aangeven. De uitvoer is inherent schaars en bevat alleen randen waar de gradiënten de drempels van de rekenprecisie overschrijden. Pas het filter bij multispectrale beelden afzonderlijk toe op elke band of bereken eerst een genormaliseerde verschilindex. Na toepassing van Roberts volgt vaak een nabewerking voor randverdunning om de uitvoer te verfijnen voor workflows voor vectorconversie.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "clip_amount": {
                "label": "Afkaphoeveelheid",
                "description": "Optioneel symmetrisch afkappingspercentage van de staarten (0-50)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "sobel_filter": {
            "name": "Sobel-filter",
            "description": "De Sobel-operator detecteert randen via schatting van de richtingsgradiënt in zowel de x-richting (horizontaal) als de y-richting (verticaal) en combineert orthogonale afgeleide kernels in één representatie van de grootte. De implementatie past twee 3×3-convolutiekernels onafhankelijk toe (de ene benadrukt horizontale randen, de andere verticale) en combineert de resultaten vervolgens via de euclidische norm: grootte = √(Gx² + Gy²). Deze scheidbare benadering verlaagt de rekenkosten met behoud van de nauwkeurigheid van de randdetectie. De wiskundige basis is afgeleid van discrete benaderingen van beeldgradiënten, waarbij de kernelgewichten de middelste pixels zwaarder laten wegen om de robuustheid tegen ruis te verbeteren. Belangrijke kenmerken zijn meting van de richtingsgradiënt die bepaling van de randoriëntatie mogelijk maakt, relatief lage rekenkundige overhead, bewezen effectiviteit bij satelliet- en luchtbeelden en minimale behoefte aan afstemming van parameters. Sobel-filtering wordt veel toegepast bij de berekening van helling en expositie van het terrein, extractie van grenzen van elementen voor objectdetectieworkflows, afbakening van riviernetwerken uit DEM-gegevens en kartering van infrastructuur (wegen, gebouwen, hoogspanningslijnen) uit beelden met hoge resolutie. De interpretatie van de uitvoer laat zien dat de grootte de randsterkte aangeeft (hogere waarden = scherpere overgangen), terwijl de richtingscomponenten (Gx, Gy) oriëntatieanalyse mogelijk maken. Gradiëntgroottes liggen doorgaans tussen 0-256 voor 8-bits beelden; waarden boven 100 wijzen over het algemeen op significante randen. De verhouding Gx/Gy geeft informatie over de randoriëntatie: een verhouding rond 1 wijst op randen van 45 graden, een verhouding >>1 op horizontale elementen, een verhouding <<1 op verticale elementen. Fout-positieven komen vaak voor in ruisende gebieden; mediaanfiltering of morfologische bewerkingen verminderen onechte detecties effectief. Combineer met drempeling voor binaire randmaskers die geschikt zijn voor segmentatiepijplijnen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "variant": {
                "label": "Variant",
                "description": "Variant van de kernelgrootte: 3x3 (standaard) of 5x5."
              },
              "clip_tails": {
                "label": "Staarten afkappen",
                "description": "Optioneel symmetrisch afkappingspercentage van de staarten (0-40)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "balance_contrast_enhancement": {
            "name": "Gebalanceerde contrastverbetering",
            "description": "Vermindert kleurzweem in een verpakt RGB-beeld met parabolische rekkingen per kanaal.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "band_mean": {
                "label": "Bandgemiddelde",
                "description": "Gewenste gemiddelde uitvoerhelderheid per kanaal (standaard 100.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "create_colour_composite": {
            "name": "Kleurencomposiet maken",
            "description": "Maakt een verpakt RGB-kleurcomposiet uit rasters voor rood, groen, blauw en optioneel dekking.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "red": {
                "label": "Rood",
                "description": "Pad van het raster van de rode band of getypt rasterobject."
              },
              "green": {
                "label": "Groen",
                "description": "Pad van het raster van de groene band of getypt rasterobject."
              },
              "blue": {
                "label": "Blauw",
                "description": "Pad van het raster van de blauwe band of getypt rasterobject."
              },
              "opacity": {
                "label": "Dekking",
                "description": "Optioneel pad van het dekkingsraster of getypt rasterobject."
              },
              "enhance": {
                "label": "Verbeteren",
                "description": "Gebalanceerde contrastverbetering toepassen na het samenstellen (standaard true)."
              },
              "treat_zeros_as_nodata": {
                "label": "Nullen als NoData behandelen",
                "description": "Nulwaarden in de RGB-invoer behandelen als NoData/achtergrond (standaard false)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "direct_decorrelation_stretch": {
            "name": "Directe decorrelatiestretch",
            "description": "Verbetert de kleurverzadiging van een verpakt RGB-beeld door de achromatische component te verminderen en de kanalen lineair uit te rekken.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "achromatic_factor": {
                "label": "Achromatische factor",
                "description": "Reductiefactor van de grijscomponent van 0 tot 1 (standaard 0.5)."
              },
              "clip_percent": {
                "label": "Afkappercentage",
                "description": "Afkappingspercentage van de staarten voor de lineaire herschaling na het uitrekken (standaard 1.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "false_colour_composite": {
            "name": "Valse-kleurencomposiet",
            "description": "Maakt een valse-kleurencomposietraster (NIR/Rood/Groen) uit een ondersteunde bundel van een optische sensor.",
            "params": {
              "wbe": {
                "label": "WBE",
                "description": "WBE"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoer"
              }
            }
          },
          "gamma_correction": {
            "name": "Gammacorrectie",
            "description": "Gammacorrectie past een niet-lineaire helderheidsaanpassing toe via een machtswettransformatie om het beeldcontrast, de weergavegetrouwheid en de perceptuele luminantieverdeling te optimaliseren. De wiskundige transformatie is I_corrected = I^(1/γ), waarbij γ (gamma) een door de gebruiker opgegeven exponent is die de richting en de mate van de helderheidsaanpassing bepaalt. Waarden γ > 1 maken beelden donkerder (compensatie voor een heldere weergave), terwijl γ < 1 beelden helderder maakt (compensatie voor een donkere weergave). De implementatie werkt onafhankelijk op elke pixel of spectrale band en behoudt de ruimtelijke relaties terwijl de intensiteitsschaal wordt aangepast. Belangrijke kenmerken zijn het behoud van de beeldstructuur terwijl toonwaarden worden herverdeeld, rekenkundige efficiëntie waarvoor alleen opzoektabellen nodig zijn, toepasbaarheid op alle radiometrische gegevens inclusief 16/32-bits beelden, en omkeerbaarheid die een inverse correctie mogelijk maakt. Gammacorrectie is essentieel bij het voorbereiden van satellietbeelden voor visuele interpretatie door sensorkenmerken te compenseren, het normaliseren van de helderheid van orthofoto's over vluchtlijnen of sensortypen, het verbeteren van thermische beelden voor de zichtbaarheid van elementen en het voorbewerken van multispectrale gegevens voor machine-learningpijplijnen, waar normalisatie van de invoer de convergentie verbetert. De interpretatie van de uitvoer laat zien dat gecorrigeerde waarden een machtswetschaling volgen: middentonen ondergaan de grootste relatieve aanpassing, terwijl extremen minder worden gecomprimeerd. Voor 8-bits invoer (0-255) maakt een typische gamma van 0.4-0.6 beelden aanzienlijk helderder; een gamma van 1.4-1.6 maakt ze aanzienlijk donkerder. Histogramvormen transformeren voorspelbaar: linksscheve histogrammen (donkere beelden) hebben baat bij γ < 1, terwijl rechtsscheve histogrammen (heldere beelden) baat hebben bij γ > 1. Controleer de gecorrigeerde uitvoer met histogramvisualisatie en visuele inspectie. Pas consistente instellingen toe op beeldcollecties die een uniforme voorbewerking vereisen. Gangbare workflows plaatsen gammacorrectie vóór drempelselectie of classificatie om een evenwichtige zichtbaarheid van elementen te garanderen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "gamma": {
                "label": "Gamma",
                "description": "Gamma-exponent in [0, 4], standaard 0.5."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "gaussian_contrast_stretch": {
            "name": "Gaussiaanse contraststretch",
            "description": "Rekt het contrast uit door af te stemmen op een Gaussische referentieverdeling.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "num_tones": {
                "label": "Aantal tinten",
                "description": "Aantal uitvoertinten (standaard 256)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "histogram_equalization": {
            "name": "Histogramegalisatie",
            "description": "Past histogramegalisatie toe om het beeldcontrast te verbeteren.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "num_tones": {
                "label": "Aantal tinten",
                "description": "Aantal uitvoertinten (standaard 256)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "histogram_matching": {
            "name": "Histogrammatching",
            "description": "Stemt een beeldhistogram af op een opgegeven referentiehistogram.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "histogram": {
                "label": "Histogram",
                "description": "Referentiehistogram als [[value, frequency], ...] of [{x, y}, ...]."
              },
              "is_cumulative": {
                "label": "Is cumulatief",
                "description": "Waar als de opgegeven histogramwaarden al cumulatief zijn."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "histogram_matching_two_images": {
            "name": "Histogrammatching van twee beelden",
            "description": "Stemt het histogram van een invoerbeeld af op het histogram van een referentiebeeld.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "reference": {
                "label": "Referentie",
                "description": "Pad van het referentieraster of getypt rasterobject."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "ihs_to_rgb": {
            "name": "IHS naar RGB",
            "description": "De inverse transformatie van IHS naar RGB zet de componenten intensiteit-tint-verzadiging terug om naar de rood-groen-blauwkleurruimte, waardoor natuurlijke kleuren kunnen worden hersteld uit ontlede remote-sensinggegevens. De inverse formules werken op cilindrische poolcoördinaten en zetten de tinthoek en de verzadigingsgrootte plus de intensiteit terug om naar cartesische RGB-coördinaten, met behoud van numerieke stabiliteit en minimalisatie van kwantisatieartefacten. Deze transformatie is de cruciale tegenhanger van RGB-naar-IHS-bewerkingen, met name in pansharpeningworkflows waarin de intensiteit is vervangen door panchromatische gegevens met hoge resolutie. Belangrijke kenmerken zijn een exacte wiskundige inversie van de voorwaartse transformatie die consistentie bij heen-en-terugbewerkingen garandeert, automatische verwerking van achromatische pixels zonder gedefinieerde tint die voortplanting van numerieke artefacten voorkomt, numerieke stabiliteit bij extreme verzadigingswaarden rond nul, en rekenkundige efficiëntie die naadloze integratie in snelle verwerkingspijplijnen mogelijk maakt. De inverse transformatie voltooit pansharpeningworkflows door natuurlijke kleurenbeelden te herstellen na vervanging van de intensiteit door panchromatische gegevens, maakt kleurvisualisatie van gegevens met verbeterde resolutie mogelijk, ondersteunt spectrale reconstructie uit ontlede componenten en valideert de consistentie van transformaties in kwaliteitscontroleworkflows. De IHS-naar-RGB-uitvoer levert driebandige natuurlijke kleurenbeelden met de ruimtelijke resolutie van de invoerintensiteitsband, geschikt voor directe visualisatie en verdere analyse. De uitvoerbanden vertegenwoordigen het rode, groene en blauwe kanaal in de standaardvolgorde; de kleuren vertonen meer ruimtelijk detail als de intensiteit is vervangen door panchromatische gegevens met hogere resolutie, met behoud van de spectrale kenmerken van de oorspronkelijke tint- en verzadigingscomponenten.",
            "params": {
              "intensity": {
                "label": "Intensiteit",
                "description": "Raster van de intensiteitsband (0–1)."
              },
              "hue": {
                "label": "Tint",
                "description": "Raster van de tintband (0–2π radialen)."
              },
              "saturation": {
                "label": "Verzadiging",
                "description": "Raster van de verzadigingsband (0–1)."
              },
              "red_output": {
                "label": "Rode uitvoer",
                "description": "Optioneel uitvoerpad voor de rode band."
              },
              "green_output": {
                "label": "Groene uitvoer",
                "description": "Optioneel uitvoerpad voor de groene band."
              },
              "blue_output": {
                "label": "Blauwe uitvoer",
                "description": "Optioneel uitvoerpad voor de blauwe band."
              }
            }
          },
          "min_max_contrast_stretch": {
            "name": "Min-max-contraststretch",
            "description": "Rekt waarden lineair uit tussen een door de gebruiker opgegeven minimum en maximum.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "min_val": {
                "label": "Minimale waarde",
                "description": "Minimale invoerwaarde voor de schaling."
              },
              "max_val": {
                "label": "Maximale waarde",
                "description": "Maximale invoerwaarde voor de schaling."
              },
              "num_tones": {
                "label": "Aantal tinten",
                "description": "Aantal uitvoertinten (standaard 256)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "mosaic": {
            "name": "Mozaïek",
            "description": "Mozaïekvorming combineert meerdere overlappende rasters tot een naadloze uitvoer via geometrische registratie, herbemonstering naar een gemeenschappelijke projectie en een gemeenschappelijk pixelraster, en randvermenging om discontinuïteiten te minimaliseren. Het algoritme registreert rasters met geografische coördinaten of grondcontrolepunten, herbemonstert naar de doelresolutie en -omvang en past gewogen vermenging toe (feather-vermenging of exponentiële weging) in de overlapgebieden. Overlappende pixels worden vermengd met afstandsgewogen middeling vanaf de rasterranden, wat vloeiende overgangen oplevert met behoud van de nauwkeurigheid van de binnenste pixels. Dit levert naadloze continentale of wereldwijde rastermozaïeken op zonder randartefacten en radiometrische discontinuïteiten. Belangrijke kenmerken zijn geometrische uitlijning van meerdere rasters op een gemeenschappelijke projectie, keuze van de herbemonsteringsmethode (bilineair, kubisch, dichtstbijzijnde buur), randvermenging die naden verwijdert, radiometrische normalisatie die verschillen in sensor of verlichting compenseert en ondersteuning voor duizenden invoerrasters. Het hulpmiddel beheert automatisch de rasterprioriteit en voorkomt gaten met intelligente opvulstrategieën. Toepassingen omvatten het maken van continentale satellietbeeldmozaïeken uit scènecollecties, het genereren van naadloze digitale hoogtemodellen uit meerdere vluchtlijnen, het maken van samengestelde optische mozaïeken uit multitemporele beelden, het opbouwen van orthomozaïeken uit onderzoeken met onbemande luchtvaartuigen (UAV) en het maken van basiskaarten voor grote gebieden uit overlappende satellietscènes. Mozaïekvorming is essentieel voor continentale en wereldwijde analyseworkflows. Interpretatie van de uitvoer: uitvoerrasters nemen de projectie en resolutie van de invoer over; vermengingsgebieden tonen geïnterpoleerde waarden die de invoerrasters in evenwicht brengen. Randartefacten wijzen op onvoldoende overlap of slechte radiometrische normalisatie; bij de beoordeling worden de naden en de kleurconsistentie langs de mozaïekgrenzen onderzocht. De verwerking van NoData aan de mozaïekranden vereist aandacht voor opvulwaarden en de definitie van de omvang. De kwaliteitsbeoordeling omvat geometrische verificatie via grondcontrolepunten en radiometrische beoordeling door de mozaïekwaarden te vergelijken met de invoerrasters.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Lijst van invoerrasters als array van paden of als door komma's/puntkomma's gescheiden tekenreeks."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters automatisch geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonsteringsmethode bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "method": {
                "label": "Methode",
                "description": "Herbemonsteringsmethode: 'nn' (standaard), 'bilinear' of 'cc'."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "mosaic_with_feathering": {
            "name": "Mozaïek met feathering",
            "description": "Maakt een mozaïek van twee rasters en vermengt overlappende cellen vloeiend met gewichten op basis van de afstand tot de rand.",
            "params": {
              "input1": {
                "label": "Invoer1",
                "description": "Eerste invoerraster."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Tweede invoerraster."
              },
              "method": {
                "label": "Methode",
                "description": "Herbemonsteringsmethode: 'cc' (standaard), 'nn' of 'bilinear'."
              },
              "weight": {
                "label": "Gewicht",
                "description": "Exponent van het afstandsgewicht voor het uitvloeien van de overlap (standaard 4.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "normalized_difference_index": {
            "name": "Genormaliseerde verschilindex",
            "description": "Berekent (band1 - band2) / (band1 + band2) uit een multibandraster.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "band1": {
                "label": "Band1",
                "description": "Op 1 gebaseerde index van de eerste band (standaard 1)."
              },
              "band2": {
                "label": "Band2",
                "description": "Op 1 gebaseerde index van de tweede band (standaard 2)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "panchromatic_sharpening": {
            "name": "Panchromatische verscherping",
            "description": "Panchromatische verscherping voegt panchromatische beelden met hoge resolutie samen met multispectrale gegevens met lagere resolutie met behulp van de Brovey-methode, een spectrale vermenigvuldigingstechniek die het ruimtelijke detail verbetert met behoud van de spectrale informatie. De methode herbemonstert eerst de multispectrale banden naar de panchromatische resolutie en berekent vervolgens de intensiteitsverhouding tussen het panchromatische beeld en de berekende multispectrale intensiteit om elke band dienovereenkomstig te schalen. Deze benadering behoudt de spectrale getrouwheid en verbetert de ruimtelijke resolutie aanzienlijk. Belangrijke kenmerken zijn het behoud van de oorspronkelijke spectrale kenmerken, lineair-algebraïsche efficiëntie die snelle verwerking van grote beelden mogelijk maakt, automatische compatibiliteit van de herbemonstering met bandgeregistreerde invoer en automatische normalisatie voor radiometrische consistentie tussen heterogene sensoren. De techniek wordt veel gebruikt voor de verbetering van satellietbeelden voor karteringstoepassingen, waaronder ruimtelijke planning, landbouwmonitoring en exploratie van hulpbronnen, waar zowel spectraal als ruimtelijk detail cruciaal is. Panchromatische verscherping levert een verbeterde multispectrale uitvoer met een superieure ruimtelijke definitie, geschikt voor visuele interpretatie en gedetailleerde kartering. De uitvoerbanden behouden de oorspronkelijke volgorde van de multispectrale banden, maar met een resolutie op panchromatisch niveau, wat naadloze integratie in standaardworkflows voor beeldanalyse en GIS-systemen mogelijk maakt. De toename in ruimtelijke resolutie komt overeen met de panchromatische invoerresolutie, wat kenmerkextractie op fijnere schalen mogelijk maakt dan met de oorspronkelijke multispectrale gegevens.",
            "params": {
              "red": {
                "label": "Rood",
                "description": "Raster van de rode band (vereist tenzij 'composite' is opgegeven)."
              },
              "green": {
                "label": "Groen",
                "description": "Raster van de groene band (vereist tenzij 'composite' is opgegeven)."
              },
              "blue": {
                "label": "Blauw",
                "description": "Raster van de blauwe band (vereist tenzij 'composite' is opgegeven)."
              },
              "composite": {
                "label": "Composiet",
                "description": "Gepakt multispectraal RGB-composiet (sluit red/green/blue uit)."
              },
              "pan": {
                "label": "Panchromatisch",
                "description": "Panchromatische rasterband."
              },
              "method": {
                "label": "Methode",
                "description": "Fusiemethode: 'brovey' (standaard) of 'ihs'."
              },
              "output_mode": {
                "label": "Uitvoermodus",
                "description": "Uitvoercodering: 'packed' (standaard) of 'bands' (RGB-raster met 3 banden)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "percentage_contrast_stretch": {
            "name": "Percentagecontraststretch",
            "description": "Percentage Contrast Stretch voert een lineaire contrastverbetering uit door opgegeven percentages van de extreme waarden (staarten) uit het histogram te verwijderen voordat wordt uitgerekt naar het volledige dynamische bereik. Algoritme: verwijdert de onderste en bovenste percentielwaarden van elke band afzonderlijk, projecteert het resterende bereik lineair op het uitvoerbereik (doorgaans 0-255 of de volledige bitdiepte) en verwijdert radiometrische extremen die een slecht contrast veroorzaken. De keuze van het percentiel (gewoonlijk 2-3%) brengt contrastverbetering en behoud van de gegevensintegriteit in evenwicht. Belangrijkste kenmerken: verwijdert radiometrische uitschieters automatisch, voorkomt contrastcompressie door afwijkende waarden, toepasbaar per band of globaal, rekenkundig efficiënte lineaire transformatie, omkeerbare bewerking. Mogelijkheden: verwerkt radiometrische artefacten, verbetert de zichtbaarheid van subtiele elementen, past zich aan variabele invoerbereiken aan. Toepassingen: voorbewerking vóór classificatie of fusie, benutting van een onderbenut dynamisch bereik, voorbereiding voor multispectrale weergave, radiometrische normalisatie tussen scènes. Toepassingsgebieden: verbetering van satellietbeelden voor visuele interpretatie, voorbewerking voor detectie van aardverschuivingen op basis van satellietbeelden, normalisatie vóór classificatie, herstel van gearchiveerde beelden. Interpretatie van de uitvoer: verbeterde beelden tonen een beter contrast; extreme waarden worden afgekapt; voorheen verborgen subtiele elementen worden zichtbaar; bandspecifieke afkapwaarden geven inzicht in de kwaliteit van de radiometrische verdeling.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "clip": {
                "label": "Uitsnijden",
                "description": "Afkappingspercentage van de percentielen (standaard 1.0)."
              },
              "tail": {
                "label": "Staart",
                "description": "Afkappingsmodus van de staarten: both (standaard), upper of lower."
              },
              "num_tones": {
                "label": "Aantal tinten",
                "description": "Aantal uitvoertinten (standaard 256)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "piecewise_contrast_stretch": {
            "name": "Stuksgewijze contraststretch",
            "description": "Voert een stuksgewijs lineaire contrastrekking uit met door de gebruiker opgegeven breekpunten.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "function": {
                "label": "Functie",
                "description": "Tekenreeks met breekpuntopgave, bijv. '(50,0.1);(120,0.6);(180,0.85)'."
              },
              "greytones": {
                "label": "Grijstinten",
                "description": "Aantal uitvoertinten voor niet-RGB-rasters (standaard 1024)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "resample": {
            "name": "Herbemonsteren",
            "description": "Herbemonstering van beelden wijzigt de pixelresolutie met interpolatiemethoden zoals dichtstbijzijnde buur (snelst, minste afvlakking), bilineair (lineaire interpolatie tussen aangrenzende pixels), bicubisch (fitting met kubische polynomen) en kubische spline (vloeiende continue interpolatie). Herbemonstering is essentieel voor geometrische registratie, het maken van multispectrale stapels met uniforme resolutie uit sensoren met gemengde resoluties en het integreren van aanvullende gegevens op verschillende schalen. Elke methode past lokale interpolatiekernels aan op de oorspronkelijke pixelwaarden, evalueert de kernels op nieuwe pixellocaties en retourneert geïnterpoleerde waarden. Dichtstbijzijnde buur behoudt de radiometrische waarden (geschikt voor categorische gegevens); methoden van hogere orde vlakken randen af en verminderen aliasing, maar vervagen scherpe grenzen. Belangrijke kenmerken zijn selecteerbare interpolatiemethoden die de afweging tussen snelheid en nauwkeurigheid optimaliseren, opgave van de uitvoerresolutie via de doelpixelgrootte of afmetingen, automatische verwerking van achtergrondwaarden voor gebieden buiten de invoeromvang en optionele anti-aliasingfiltering die herbemonsteringsartefacten vermindert. Toepassingen omvatten beeldregistratie die gegevens uitlijnt op gemeenschappelijke rasters, harmonisatie van resoluties die multispectrale stapels met verschillende oorspronkelijke resoluties op elkaar afstemt, downsampling die het gegevensvolume vermindert met behoud van ruimtelijke patronen, en upsampling die het visuele detail voor visualisatie verbetert. De herbemonsteringsuitvoer integreert beelden met een consistente resolutie. De uitvoerresolutie komt overeen met de opgave van de gebruiker; de interpolatiemethode beïnvloedt de definitie van randen (dichtstbijzijnde buur behoudt randen; methoden van hogere orde vlakken af); achtergrondgebieden (buiten de invoeromvang) krijgen instelbare opvulwaarden; de uitvoer integreert naadloos in multispectrale analyseworkflows.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Lijst van invoerrasters als array van paden of als door komma's/puntkomma's gescheiden tekenreeks."
              },
              "base": {
                "label": "Basis",
                "description": "Optioneel basisraster dat de uitvoerextent en het uitvoerraster definieert. Heeft voorrang op cell_size."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Optionele celgrootte van de uitvoer wanneer base niet is opgegeven."
              },
              "method": {
                "label": "Methode",
                "description": "Herbemonsteringsmethode: 'cc' (standaard), 'nn' of 'bilinear'."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "rgb_to_ihs": {
            "name": "RGB naar IHS",
            "description": "De transformatie van RGB naar intensiteit-tint-verzadiging ontleedt de rood-groen-blauwkleurruimte in perceptueel relevante componenten: intensiteit (helderheid), tint (kleur) en verzadiging (kleurzuiverheid). De ontleding gebruikt standaard wiskundige formules die RGB-tristimuluswaarden omzetten in cilindrische poolcoördinaten, waarbij de intensiteit de luminantie vertegenwoordigt, de tint de kleurhoek codeert en de verzadiging de kleurconcentratie meet. Deze kleurruimte is bijzonder nuttig voor remote sensing, omdat de intensiteit kan worden vervangen door gegevens met hoge resolutie terwijl de oorspronkelijke kleurkenmerken via de inverse transformatie behouden blijven. Belangrijke kenmerken zijn een numeriek stabiele formulering die randgevallen (achromatische pixels) robuust verwerkt, behoud van het volledige dynamische bereik zonder afkapping of informatieverlies, automatische bandschaling voor consistente resultaten bij verschillende invoerbereiken en rekenkundige efficiëntie die geschikt is voor grote multispectrale stapels. De techniek heeft meerdere toepassingen: pansharpeningworkflows waarin de intensiteit wordt vervangen door panchromatische gegevens, verbetering van kleurvisualisatie, spectrale voorbewerking voor classificatiealgoritmen en conversies van kleur naar grijswaarden met behoud van perceptuele informatie. De transformatie van RGB naar IHS is essentieel voor fusietechnieken die panchromatische resolutie combineren met multispectrale kleurinformatie. De uitvoer bestaat uit drie enkelbandbestanden die de intensiteits-, tint- en verzadigingscomponenten vertegenwoordigen en onafhankelijk in analyseworkflows kunnen worden gebruikt. De intensiteitsband benadert de luminantie; de tint ligt tussen 0-360 graden en codeert de kleurinformatie; de verzadiging ligt tussen 0-100 procent en geeft de kleurzuiverheid aan.",
            "params": {
              "red": {
                "label": "Rood",
                "description": "Raster van de rode band (sluit 'composite' uit)."
              },
              "green": {
                "label": "Groen",
                "description": "Raster van de groene band (sluit 'composite' uit)."
              },
              "blue": {
                "label": "Blauw",
                "description": "Raster van de blauwe band (sluit 'composite' uit)."
              },
              "composite": {
                "label": "Composiet",
                "description": "Gepakt RGB-composietraster (sluit red/green/blue uit)."
              },
              "intensity_output": {
                "label": "Intensiteitsuitvoer",
                "description": "Optioneel uitvoerpad voor de intensiteitsband."
              },
              "hue_output": {
                "label": "Tintuitvoer",
                "description": "Optioneel uitvoerpad voor de tintband."
              },
              "saturation_output": {
                "label": "Verzadigingsuitvoer",
                "description": "Optioneel uitvoerpad voor de verzadigingsband."
              }
            }
          },
          "sigmoidal_contrast_stretch": {
            "name": "Sigmoïdale contraststretch",
            "description": "Voert een sigmoïde contrastrekking uit met versterking en afkappunt.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "cutoff": {
                "label": "Afkapwaarde",
                "description": "Middelpunt van de sigmoïde in genormaliseerde eenheden (standaard 0.0)."
              },
              "gain": {
                "label": "Versterking",
                "description": "Versterkingsparameter van de sigmoïde (standaard 1.0)."
              },
              "num_tones": {
                "label": "Aantal tinten",
                "description": "Aantal uitvoertinten (standaard 256)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "split_colour_composite": {
            "name": "Kleurencomposiet splitsen",
            "description": "Splitst een verpakt RGB-kleurcomposietraster in drie afzonderlijke enkelbandrasters die het rode, groene en blauwe kanaal vertegenwoordigen. Algoritme: dit hulpmiddel extraheert afzonderlijke kleurbanden uit een composietbeeld waarin de R-, G- en B-waarden in één raster zijn verpakt (vaak met standaard 24-bits RGB- of 32-bits RGBA-codering). De scheiding wordt uitgevoerd via bitsgewijze bewerkingen om elke 8-bits kanaalcomponent te isoleren. Belangrijkste kenmerken: behoudt de oorspronkelijke radiometrische waarden (0–255), verwerkt standaard RGB-composieten en uitgebreide formaten, levert drie onafhankelijke gegeorefereerde rasters als uitvoer. Toepassingen: spectrale analyse waarbij afzonderlijke banden apart moeten worden verwerkt; het maken van invoergegevenssets voor berekeningen van vegetatie-indices (NDVI, EVI); het voorbereiden van gegevens voor bandalgebrabewerkingen; het mogelijk maken van geavanceerde kleurtransformaties zoals conversie van RGB naar IHS; het extraheren van specifieke banden voor gesuperviseerde of niet-gesuperviseerde classificatieworkflows. Toepassingsgebieden: analyse van remote-sensingbeelden, voorbewerking van satellietgegevens, voorbereiding van multispectrale analyse, pijplijnen voor beeldverbetering. Interpretatie van de uitvoer: er worden drie enkelbandrasters gemaakt met dezelfde ruimtelijke omvang, projectie en georeferentie als het invoercomposiet. Elke uitvoerband bevat 8-bits radiometrische waarden (0–255) die de intensiteit van die kleurcomponent over de scène weergeven. De bandstatistieken (min, max, gemiddelde) weerspiegelen de spectrale kenmerken van dat kleurkanaal; dominante waarden wijzen op kleurdominantie over het beeld. De uitvoerrasters zijn direct geschikt voor bandberekeningen, spectrale indices of verdere multibandverwerkingsworkflows.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Gepakt RGB-invoerraster."
              },
              "red_output": {
                "label": "Rode uitvoer",
                "description": "Optioneel uitvoerpad voor de rode band."
              },
              "green_output": {
                "label": "Groene uitvoer",
                "description": "Optioneel uitvoerpad voor de groene band."
              },
              "blue_output": {
                "label": "Blauwe uitvoer",
                "description": "Optioneel uitvoerpad voor de blauwe band."
              }
            }
          },
          "standard_deviation_contrast_stretch": {
            "name": "Standaardafwijkingscontraststretch",
            "description": "Voert een lineaire contrastrekking uit met het gemiddelde plus/min een vermenigvuldiger van de standaardafwijking.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "clip": {
                "label": "Uitsnijden",
                "description": "Vermenigvuldigingsfactor van de standaardafwijking waaruit de afkapgrenzen worden afgeleid (standaard 2.0)."
              },
              "num_tones": {
                "label": "Aantal tinten",
                "description": "Aantal uitvoertinten (standaard 256)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "true_colour_composite": {
            "name": "Ware-kleurencomposiet",
            "description": "Maakt een ware-kleurencomposietraster (RGB) uit een ondersteunde bundel van een optische sensor.",
            "params": {
              "wbe": {
                "label": "WBE",
                "description": "WBE"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoer"
              }
            }
          },
          "adaptive_filter": {
            "name": "Adaptief filter",
            "description": "Het adaptieve filter past de filtersterkte dynamisch aan op basis van lokale beeldstatistieken (gemiddelde, variantie, kurtosis), wat contextbewuste afvlakking mogelijk maakt die reageert op de kenmerken van de scène. De implementatie verdeelt beelden in bewegende vensters, berekent lokale statistieken (detectie van door ruis gedomineerde versus door kenmerken gedomineerde gebieden) en kiest de filterparameters dienovereenkomstig. Vlakke gebieden worden sterk afgevlakt; complexe gebieden worden voorzichtig gefilterd. De wiskundige basis gebruikt statistische toetsen om het lokale karakter te bepalen: gebieden met een variantie onder de drempel worden sterk afgevlakt; gebieden die de drempel overschrijden behouden hun detail. Belangrijke kenmerken zijn automatische aanpassing van parameters (de gebruiker geeft bereiken op; het algoritme kiest lokaal), toepasbaarheid op elke filterkernel (Gaussisch, mediaan, morfologisch) en effectiviteit op optische en radarbeelden. Adaptieve filtering blinkt uit in de voorbewerking van heterogene satellietmozaïeken (verschillende sensoren, opnameomstandigheden), afvlakking van LiDAR-puntenwolken (behoudt vegetatieranden in bossen; vlakt de grond af in open gebieden), selectieve reductie van SAR-spikkels met respect voor zowel doelen als achtergrond, en het stapelen van multitemporele beelden. De interpretatie van de uitvoer laat zien dat homogene gebieden intensief worden gefilterd (lage lokale variantie → sterke afvlakking); complexe gebieden worden conservatief gefilterd (hoge variantie → minimale verwerking). De afvlakkingsstraal wordt per gebied dynamisch aangepast: vlakke gebieden krijgen filtering met een grote straal; getextureerde gebieden krijgen filtering met een kleine straal of geen filtering. De uitvoerbereiken blijven binnen die van de invoer; onderzoek de ruimtelijke kaart van de filtersterkte om de aanpassing te valideren. Statistieken verschuiven in gladde gebieden richting de lokale gemiddelden; complexe gebieden blijven grotendeels ongewijzigd. Veelvoorkomende artefacten zijn mogelijke overmatige afvlakking bij gebiedsgrenzen (doorgaans wordt een vloeiende overgang toegepast) en gevoeligheid voor relaties tussen ruis en variantie. Controleer de aanpassing door lokale variantiekaarten te analyseren. Pas toe in geautomatiseerde voorbewerkingspijplijnen voor gegevens uit meerdere bronnen waar uniforme filtering onvoldoende is.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "filter_size_x": {
                "label": "Filtergrootte X",
                "description": "Omgevingsbreedte in pixels (oneven geheel getal, standaard 11)."
              },
              "filter_size_y": {
                "label": "Filtergrootte Y",
                "description": "Omgevingshoogte in pixels (oneven geheel getal, standaard 11)."
              },
              "threshold": {
                "label": "Drempelwaarde",
                "description": "Absolute z-scoredrempelwaarde voor vervanging door het gemiddelde (standaard 2.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "anisotropic_diffusion_filter": {
            "name": "Anisotroop diffusiefilter",
            "description": "Anisotrope diffusiefiltering implementeert iteratieve randbehoudende afvlakking via gerichte diffusieprocessen die onderscheid maken tussen randen en vlakke gebieden. Het algoritme werkt elke pixel iteratief bij op basis van gewogen verschillen met de buren, met behulp van een geleidbaarheidsfunctie die diffusie over grenzen met een hoge gradiënt vermindert en afvlakking binnen homogene gebieden toestaat. De implementatie lost de partiële differentiaalvergelijking ∂I/∂t = div(c(|∇I|)∇I) op, waarbij de geleidbaarheid c(·) zich aanpast aan de lokale gradiëntgrootte. Deze datagedreven benadering behoudt scherpe overgangen en vermindert geleidelijk de ruis in uniforme gebieden. Belangrijke kenmerken zijn echt randbehoud zonder expliciete randmaskers, automatische schaalselectie via het aantal iteraties, effectieve ruisreductie met behoud van de scherpte van kenmerken en toepasbaarheid op enkelvoudige en multispectrale gegevens. Anisotrope diffusie blinkt uit in de afvlakking van LiDAR-puntenwolken met behoud van terreinbreuken, ruisonderdrukking in satellietbeelden voor de detectie van subtiele geologische kenmerken, reductie van SAR-spikkels met behoud van de randen van radardoelen en medische/wetenschappelijke beelden waarbij de getrouwheid van randen cruciaal is. Voor de interpretatie van de uitvoer moet men begrijpen dat gladde gebieden geleidelijk homogeniseren (waarden convergeren naar het lokale gemiddelde), terwijl randen steiler worden tot ze stabiliseren. Vroege iteraties (t<5) leveren een milde ruisreductie op; tussenliggende iteraties (t=5-20) zorgen voor aanzienlijke afvlakking; overmatige iteraties (t>50) brengen het risico van overmatige grensversterking of onechte kenmerken met zich mee. De uitvoerwaarden blijven binnen de bereiken van de brongegevens; de statistieken verschuiven naarmate de verwerking vordert richting de regionale gemiddelden. Volg de variantie van de uitvoer om te beoordelen of de afvlakking volledig is. Gangbare maten zijn de verbetering van de signaal-ruisverhouding en indices voor de randscherpte. Pas zorgvuldig toe in multischalige workflows waar de precisie van het randbehoud direct invloed heeft op de nauwkeurigheid van verdere classificatie of veranderingsdetectie.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "iterations": {
                "label": "Iteraties",
                "description": "Aantal diffusie-iteraties (standaard 10)."
              },
              "kappa": {
                "label": "Kappa",
                "description": "Randgevoeligheidsparameter (standaard 20.0)."
              },
              "lambda": {
                "label": "Lambda",
                "description": "Tijdstap in (0, 0.25], standaard 0.2."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "bilateral_filter": {
            "name": "Bilateraal filter",
            "description": "Randbehoudende bilaterale afvlakking via ruimtelijke kernels en intensiteitskernels. Beter dan Gaussisch voor het behoud van detail. Sigma_dist=straal, sigma_int=drempel voor randbehoud. Geschikt voor RGB.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "sigma_dist": {
                "label": "Sigma afstand",
                "description": "Standaardafwijking van de ruimtelijke Gaussiaanse kernel in pixels (0.5–20.0, standaard 0.75)."
              },
              "sigma_int": {
                "label": "Sigma intensiteit",
                "description": "Standaardafwijking van de intensiteits-Gaussiaanse kernel in rasterwaarde-eenheden (standaard 1.0)."
              },
              "treat_as_rgb": {
                "label": "Als RGB behandelen",
                "description": "Op waar zetten om gepakte RGB-HSI-verwerking te forceren. Indien onwaar kan gepakt RGB nog steeds automatisch uit de rastermetadata worden gedetecteerd."
              },
              "assume_three_band_rgb": {
                "label": "Driebands-RGB aannemen",
                "description": "Indien waar (standaard) mogen uint8-/uint16-rasters met 3 banden als RGB worden behandeld in filters die RGB-intensiteitsverwerking met 3 banden ondersteunen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen bewaard."
              }
            }
          },
          "closing": {
            "name": "Sluiting (closing)",
            "description": "Voert een morfologische sluiting uit met een rechthoekig structuurelement.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "filter_size_x": {
                "label": "Filtergrootte X",
                "description": "Oneven omgevingsbreedte (standaard 11)."
              },
              "filter_size_y": {
                "label": "Filtergrootte Y",
                "description": "Oneven omgevingshoogte (standaard gelijk aan filter_size_x)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "conservative_smoothing_filter": {
            "name": "Conservatief gladstrijkfilter",
            "description": "Conservative Smoothing implementeert niet-lineaire filtering door elke pixel te vervangen door het gemiddelde van vergelijkbare buren (binnen een gedefinieerd intensiteitsbereik), waarbij randen behouden blijven en ruis wordt verminderd. De implementatie onderzoekt omgevingen, identificeert pixels die binnen de intensiteitsdrempel van de centrale pixel liggen en middelt deze pixels met vergelijkbare waarden. Wiskundige formulering: F = (1/N) Σ(I_j : |I_j - I_center| < T), waarbij T de gelijkenisdrempel is en N het aantal vergelijkbare pixels. Belangrijke kenmerken zijn een eenvoudige, op een drempel gebaseerde definitie van gelijkenis, effectiviteit op optische en radarbeelden, interpreteerbare parameters (de drempel bepaalt de randscherpte) en minimale rekenkundige overhead. Conservative Smoothing blinkt uit in de voorbewerking van multispectrale satellietbeelden (vermindert ruis met behoud van spectrale grenzen), verbetering van thermische beelden (vlakt radiometrische ruis af met behoud van temperatuurdiscontinuïteiten), afvlakking van LiDAR-classificaties (behoudt grenzen tussen vegetatie en grond) en voorbewerking van ruisende meetgegevens. De interpretatie van de uitvoer laat zien dat homogene gebieden volledig worden gemiddeld (alle buren zijn vergelijkbaar); randen worden minimaal gefilterd (vergelijkbare pixels alleen aan dezelfde kant). De drempelparameter bepaalt het randbehoud: een kleine drempel (strikte gelijkenis) levert een milde afvlakking op; een grote drempel (ruime gelijkenis) levert een agressieve afvlakking op waarbij randen verloren kunnen gaan. De uitvoerwaarden komen exact overeen met de waarden van de invoerburen (geen interpolatie; de uitvoer is het gemiddelde van bestaande waarden). Statistieken verschuiven richting lokale clusters; heterogene gebieden vertonen minimale verandering. Controleer de effectiviteit van de drempel via visuele inspectie en lokale histogramanalyse. Veelvoorkomende artefacten zijn onvoldoende afvlakking als de drempels te strikt zijn en randvervaging als de drempels te ruim zijn. Het aantal iteraties maakt progressieve filtering mogelijk: één doorgang levert een zachte afvlakking op; meerdere doorgangen versterken het effect. Pas toe vóór classificatie wanneer door ruis veroorzaakte verwarring tussen categorieën moet worden verminderd terwijl klassegrenzen scherp blijven.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "filter_size_x": {
                "label": "Filtergrootte X",
                "description": "Omgevingsbreedte in pixels (oneven geheel getal, standaard 3)."
              },
              "filter_size_y": {
                "label": "Filtergrootte Y",
                "description": "Omgevingshoogte in pixels (oneven geheel getal, standaard 3)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "diff_of_gaussians_filter": {
            "name": "Difference-of-Gaussians-filter",
            "description": "Difference of Gaussians-filtering (DoG) detecteert randen en fijne kenmerken door twee met verschillende stralen Gaussisch vervaagde versies van elkaar af te trekken, wat een banddoorlaatfilter oplevert dat tussenliggende ruimtelijke frequenties benadrukt. De implementatie berekent twee Gaussische vervagingen (kleine straal σ₁ en grote straal σ₂) en trekt ze vervolgens af: DoG = G(σ₁) - G(σ₂). Deze niet-lineaire combinatie versterkt randen en ruggen en onderdrukt zowel fijne ruis als brede verlichtingstrends. Belangrijke kenmerken zijn een instelbare frequentierespons (de verhouding σ₂/σ₁ bepaalt de banddoorlaatkenmerken), een op nul gecentreerde uitvoer (bipolair: positieve en negatieve waarden), toepasbaarheid op randdetectie en kenmerkextractie, en rekenkundige efficiëntie door hergebruik van de Gauss-functie. Difference of Gaussians blinkt uit in de detectie van geologische structuren (breuken en lineamenten verschijnen als een hoge DoG-respons), extractie van gebouwen uit orthofoto's, versterking van fijne texturen in remote-sensingmozaïeken en op de neurowetenschap geïnspireerde verwerkingsmodellen. De interpretatie van de uitvoer laat zien dat randen piekresponsen opleveren (positief aan de heldere kant, negatief aan de donkere kant) met een nuldoorgang precies bij de overgangen. Detectie van nuldoorgangen toont echte randen onafhankelijk van de randrichting. De DoG-grootte geeft de randsterkte aan; het typische bereik loopt van -1000 tot +1000 voor 8-bits invoer, afhankelijk van het lokale contrast. De verhouding σ₂/σ₁ bepaalt het centrum van de doorlaatband: een verhouding van ~2 benadrukt zeer fijne kenmerken; een verhouding van ~5 benadrukt tussenliggende kenmerken; een verhouding van ~10 benadrukt grovere kenmerken. Bimodale uitvoerverdelingen (pieken bij positieve en negatieve extremen) wijzen op een goede randscheiding. Veelvoorkomende artefacten zijn halo's rond sterke randen en een mogelijk te zwakke respons als de frequentieband niet overeenkomt met de schaal van de kenmerken. Combineer met drempeling op de grootte voor randextractie. Pas toe vóór morfologische nabewerking voor robuuste kenmerkextractie uit ruisende satellietbeelden.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "filter_size_x": {
                "label": "Filtergrootte X",
                "description": "Kleinere Gaussiaanse sigma (0.25-20.0, standaard 2.0)."
              },
              "sigma2": {
                "label": "Sigma2",
                "description": "Grotere Gaussiaanse sigma (0.5-20.0, standaard 4.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "diversity_filter": {
            "name": "Diversiteitsfilter",
            "description": "Berekent de diversiteit in een bewegend venster als het aantal unieke waarden/klassen binnen de omgeving. Meet lokale heterogeniteit: hoge diversiteit = gevarieerd terrein/gevarieerde klassen, lage diversiteit = homogeen. Toont textuur, fragmentatie en patroondiversiteit. Wordt vaak toegepast op geclassificeerde of categorische beelden om overgangs-/randzones te identificeren.\n\nHet diversiteitsfilter maakt een maat voor lokale variatie die onafhankelijk is van specifieke waarden. Nuttig voor landschapsecologie (habitatdiversiteit, fragmentatiematen), beoordeling van de classificatiekwaliteit (hoge diversiteit = gemengde/onzekere gebieden) en textuuranalyse. Toegepast op hoogtegegevens geeft de diversiteit de ruwheid op omgevingsschaal aan. Toegepast op een classificatie identificeert het gemengde zones, ecotonen en grenszones.\n\nToepassingen: (1) kartering van landschapsfragmentatie (hoge diversiteit = divers mozaïek, lage diversiteit = uniforme vlakken), (2) beoordeling van classificatiebetrouwbaarheid/-onzekerheid (hoge diversiteit = onzeker gebied), (3) textuuranalyse (kartering van heterogeniteit), (4) detectie van randen/grenzen via diversiteitspieken, (5) habitatdiversiteit voor ecologische analyse (geschiktheid hangt af van de lokale diversiteit).",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "filter_size_x": {
                "label": "Filtergrootte X",
                "description": "Vensterbreedte in pixels (oneven geheel getal, standaard 11). Alias: filterx."
              },
              "filter_size_y": {
                "label": "Filtergrootte Y",
                "description": "Vensterhoogte in pixels (oneven geheel getal, standaard = filter_size_x). Alias: filtery."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen bewaard."
              }
            }
          },
          "edge_preserving_mean_filter": {
            "name": "Randbehoudend gemiddeldefilter",
            "description": "Het Edge-Preserving Mean-filter voert selectieve middeling van pixels uit door lokale gemiddelden te berekenen en daarbij uitschieterpixels uit te sluiten die waarschijnlijk randen of ruis vertegenwoordigen. De implementatie sorteert pixelomgevingen, verwijdert extreme waarden (de laagste en hoogste, of waarden die een statistische drempel overschrijden) en middelt de resterende waarden. Deze robuuste benadering brengt afvlakking en behoud van scherpte in evenwicht. Varianten omvatten gewogen middeling die de centrale pixels benadrukt en adaptieve drempelselectie op basis van lokale statistieken. Belangrijke kenmerken zijn eenvoudige parameterbesturing (aantal uitsluitingen of drempel), rekenkundige efficiëntie door het sorteren van kleine omgevingen, effectieve ruisreductie zonder vervaging van details en toepasbaarheid op optische, radar- en thermische gegevens. Edge-Preserving Mean-filtering blinkt uit in de voorbewerking van optische satellietbeelden voor de berekening van vegetatie-indices (verwijdert schaduwen en wolken zonder elementen te vervagen), afvlakking van DEM's met behoud van hellingsbreuken, ruisonderdrukking in thermische beelden met behoud van de scherpte van grenzen en voorbereiding van orthofoto's voor handmatige digitalisering. De interpretatie van de uitvoer laat zien dat verwijderde uitschieters zich concentreren bij randen en ruisgebieden; de resterende waarden worden gemiddeld, wat een lokale afvlakking oplevert. Uitsluitingsparameters bepalen de randscherpte: het uitsluiten van één extreme waarde verwijdert peper-en-zoutruis; het uitsluiten van meerdere extremen levert gladdere resultaten op met een zachtere randovergang. De uitvoerbereiken blijven binnen die van de invoer; statistieken verschuiven richting de gemiddelden van de inliers. Volg het verschil tussen uitvoer en invoer om gefilterde gebieden te identificeren (doorgaans gebieden met hoge variantie). De kwaliteit van het randbehoud hangt af van de nauwkeurigheid waarmee uitschieters worden geïdentificeerd; controleer visueel of elementen scherp blijven. Veelvoorkomende artefacten zijn onvoldoende afvlakking als de drempels te strikt zijn en overmatige filtering als het aantal uitsluitingen te hoog is. Het aantal iteraties maakt progressieve filtering mogelijk; één doorgang levert een zachte afvlakking op. Pas toe vóór drempelgebaseerde classificatie om door ruis veroorzaakte misclassificatie van categorieën te verminderen met behoud van de grenzen van elementen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "filter_size": {
                "label": "Filtergrootte",
                "description": "Grootte van de vierkante omgeving in pixels (oneven geheel getal, standaard 11)."
              },
              "threshold": {
                "label": "Drempelwaarde",
                "description": "Maximaal absoluut verschil met de buur om in het lokale gemiddelde op te nemen (standaard 15.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "emboss_filter": {
            "name": "Reliëffilter (emboss)",
            "description": "Het embossfilter versterkt randkenmerken via gerichte schaduwwerking en creëert een kenmerkend driedimensionaal reliëfuiterlijk waarbij randen verschijnen als verhoogde of verdiepte oppervlakken, afhankelijk van de gesimuleerde lichtrichting. Dit filter past een 3×3-kernel toe die randdetectie combineert met eenrichtingsverlichting, doorgaans gesimuleerd licht uit het kwadrant linksboven, wat een dramatisch visueel contrast bij grenzen oplevert met behoud van gladde gebieden. De embosstransformatie trekt gewogen burenwaarden in specifieke richtingen af en levert een uitvoer waarin hooglichten en schaduwen topografische discontinuïteiten en discontinuïteiten van elementen accentueren. Belangrijke kenmerken zijn een intuïtieve richtingsbesturing waarmee de gesimuleerde lichtrichting kan worden aangepast (varianten in acht richtingen), een natuurlijke integratie van 3D-waarneming die de visuele interpretatie verbetert en robuuste prestaties bij uiteenlopende lichtomstandigheden in de bronbeelden. Het embossfilter dient toepassingen voor kwaliteitsborging, interpretatieve visualisatie en het benadrukken van grenzen van elementen. Toepassingen omvatten visuele verbetering voor geologische interpretatie, waarbij mineraalgrenzen zichtbaar worden als reliëfpatronen, interpretatie van luchtfoto's met een betere zichtbaarheid van subtiele grenzen, cartografische productie waarbij geëmbosste digitale hoogtemodellen overtuigende reliëfkaarten opleveren, en detectie van archeologische elementen waarbij begraven structuren verschijnen als subtiele topografische variaties. Bij de interpretatie van de uitvoer worden hoge waarden behandeld als verlichte oppervlakken en lage waarden als schaduwen, wat een perceptuele diepte creëert die het menselijk oog van nature als reliëf interpreteert. Geëmbosste uitvoer moet doorgaans worden geschaald naar het visualisatiebereik 0-255; ruwe uitvoer bevat vaak negatieve waarden die schaduwgebieden vertegenwoordigen. Het effect is puur visueel: emboss berekent geen echte verlichting en maakt geen hoogteafgeleiden. Pas het bij multispectrale beelden toe op hoofdcomponenten of geselecteerde banden, afhankelijk van de analytische doelstellingen. Nabewerking omvat vaak contrastverbetering of tonemapping om de visuele impact te optimaliseren.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "direction": {
                "label": "Richting",
                "description": "Reliëfrichting: n,s,e,w,ne,nw,se,sw."
              },
              "clip_amount": {
                "label": "Afkaphoeveelheid",
                "description": "Optioneel symmetrisch afkappingspercentage van de staarten (0-40)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "fast_almost_gaussian_filter": {
            "name": "Snel quasi-gaussiaans filter",
            "description": "Het Fast Almost Gaussian-filter biedt snelle afvlakking die een Gauss-functie benadert via iteratieve scheidbare boxfiltering (middeling), waarmee een bijna-Gaussische vervagingsrespons wordt bereikt met een rekencomplexiteit van O(N), ongeacht de vervagingsstraal. De implementatie past opeenvolgende boxconvoluties toe (die elk lokale pixelgemiddelden berekenen) om de cumulatieve Gaussische verdeling te benaderen; N iteraties benaderen steeds grotere Gaussische kernels. De wiskundige basis gebruikt de centrale limietstelling: herhaalde convolutie van boxfuncties benadert asymptotisch een Gaussische verdeling. Belangrijke kenmerken zijn een rekensnelheid die afvlakking met grote kernels op omvangrijke beelden mogelijk maakt, een scheidbare implementatie die de geheugenvereisten vermindert, parameterbesturing via het aantal iteraties (bepaalt de vervagingsstraal) en effectiviteit op elk gegevenstype. Fast Almost Gaussian-filtering blinkt uit in snelle beeldpiramides voor multischalige analyse, realtime bladeren door satellietbeelden, voorbewerking van enorme remote-sensinggegevenssets vóór classificatie en interactieve beeldviewers die een responsieve afvlakking vereisen. De interpretatie van de uitvoer laat zien dat het aantal iteraties direct samenhangt met de vervagingsstraal: N=1 levert minimale afvlakking op; N=3-5 zorgt voor een matige vervaging; N>10 zorgt voor een sterke afvlakking die Gaussische kernels met een grote straal benadert. De uitvoerwaarden verschuiven naarmate het aantal iteraties toeneemt geleidelijk richting het lokale gemiddelde; de afname van de variantie volgt voorspelbare patronen. De resterende waarden blijven binnen de bereiken van de invoergegevens. Vergelijking met echte Gaussische filtering toont voor de meeste toepassingen een aanvaardbare benadering met een fout van 2-5%. De snelheidswinst ten opzichte van echte Gaussische filtering neemt bij grote stralen sterk toe: 5-20× sneller bij een straal >20 pixels. Kleine artefacten zijn onder meer een subtiele golving langs randen (boxartefacten die zich over de iteraties opstapelen) en een iets andere randverwerking dan bij Gaussische filtering. Volg de uitvoerhistogrammen op multimodale verdelingen die wijzen op voldoende afvlakking. Pas toe in voorbewerkingspijplijnen voor beelden waar snelheid kleine benaderingsfouten rechtvaardigt.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "sigma": {
                "label": "Sigma",
                "description": "Benaderde Gaussiaanse sigma (>=1.8 aanbevolen, standaard 1.8)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "flip_image": {
            "name": "Beeld spiegelen",
            "description": "Spiegelt een beeld verticaal, horizontaal of beide.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "direction": {
                "label": "Richting",
                "description": "Spiegelrichting: vertical (standaard), horizontal of both."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "frangi_filter": {
            "name": "Frangi-filter",
            "description": "Voert een multischalige Frangi-vesselness-versterking uit voor het detecteren van vaatachtige (buisvormige) structuren op meerdere schalen. Gebaseerd op analyse van de eigenwaarden van de Hessiaanse matrix. Reageert sterk op lijnvormige elementen (vaten, wegen, rivieren) en zwak op blobachtige structuren. Multischalige analyse (probeer meerdere sigmawaarden) detecteert automatisch vaten van verschillende breedtes. Veel gebruikt in medische beeldvorming en remote sensing voor de detectie van lijnvormige elementen. Frangi-vesselness gebruikt de hoofdkrommingen (eigenwaarden van de Hessiaan) om de lokale structuur te classificeren: hoge vesselness voor lijnvormige elementen, lage voor plateaus of blobs. De multischalige implementatie wordt toegepast bij meerdere sigmawaarden (breedtes) en combineert de responsen. Uitstekend voor het detecteren van wegen, rivieren en vaatnetwerken. Rekenkundig matig zwaar bij meerdere schalen. Zeer goed interpreteerbare uitvoer: reageert op herkenbare elementen. Toepassingen: (1) detectie van wegen in satellietbeelden, (2) extractie van rivier-/waterloopnetwerken, (3) detectie van lijnvormige elementen in het algemeen, (4) detectie van vaten (medische beeldvorming), (5) multischalige structuurdetectie.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "scales": {
                "label": "Schalen",
                "description": "Lijst van Gaussiaans-achtige schalen in pixels (standaard [1.0, 2.0, 3.0])."
              },
              "beta": {
                "label": "Bèta",
                "description": "Frangi-bètaparameter voor blobonderdrukking (standaard 0.5)."
              },
              "c": {
                "label": "C",
                "description": "Frangi-c-parameter voor structuurgevoeligheid (standaard 15.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "gabor_filter_bank": {
            "name": "Gabor-filterbank",
            "description": "Voert Gabor-responsfiltering in meerdere oriëntaties uit: gerichte textuuranalyse. Past een reeks Gabor-filters in meerdere oriëntaties toe (doorgaans 0°, 45°, 90°, 135°) om gerichte textuurkenmerken te extraheren. Gabor-responsen geven de sterkte en oriëntatie van de textuur aan. Nuttig voor gerichte kenmerkdetectie, textuurkarakterisering en analyse van georiënteerde patronen. Elke oriëntatie wordt afzonderlijk uitgevoerd. Gabor-filtering extraheert gerichte textuur door convolutie met oriëntatiespecifieke wavelets. Elke oriëntatie toont kenmerken die in die richting zijn uitgelijnd. Levert meerdere banden (één per oriëntatie) die de lokale textuurrichting en -sterkte tonen. Gabor-responsen vormen de basis voor textuurkenmerkextractie en objectdetectie in computervisie. Een reeks filters maakt een uitgebreide richtingsanalyse mogelijk. Toepassingen: (1) gerichte textuuranalyse, (2) detectie van georiënteerde elementen (ruggen, dalen, lijnvormige structuren), (3) kartering van gerichte erosie/afzetting, (4) detectie van wegen/waterlopen (lijnvormige elementen), (5) textuurgebaseerde classificatie.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "sigma": {
                "label": "Sigma",
                "description": "Sigma van de Gaussiaanse envelop in pixels (standaard 2.0)."
              },
              "frequency": {
                "label": "Frequentie",
                "description": "Ruimtelijke frequentie van de sinusoïde in cycli/pixel (standaard 0.2)."
              },
              "orientations": {
                "label": "Oriëntaties",
                "description": "Aantal oriëntaties in de filterbank (standaard 6)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "gaussian_filter": {
            "name": "Gaussiaans filter",
            "description": "Wiskundig optimale Gaussische afvlakking met een afstandsgewogen kernel. Basis voor multischalige analyse, randdetectie en banddoorlaatfiltering. De sigmaparameter bepaalt de afvlakkingsintensiteit; geschikt voor RGB.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "sigma": {
                "label": "Sigma",
                "description": "Gaussiaanse standaardafwijking in pixels (0.5-20.0, standaard 0.75)."
              },
              "treat_as_rgb": {
                "label": "Als RGB behandelen",
                "description": "Zet op true om RGB-intensiteitsruimtegedrag af te dwingen."
              },
              "assume_three_band_rgb": {
                "label": "Driebands-RGB aannemen",
                "description": "Indien true (standaard) mogen 3-bands uint8/uint16-rasters als RGB worden behandeld als expliciete metadata ontbreekt."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen bewaard."
              }
            }
          },
          "glcm_texture": {
            "name": "GLCM-textuur",
            "description": "De textuuranalyse met de Gray-Level Co-occurrence Matrix (GLCM) extraheert statistische textuurmaten van de tweede orde die ruimtelijke relaties tussen grijswaarden van pixels kwantificeren bij opgegeven verplaatsingsafstanden en -richtingen, wat geavanceerde textuurclassificatie mogelijk maakt die landbouwkundige vegetatiepatronen, structuren van de gebouwde omgeving en geologische formaties onderscheidt. GLCM berekent waarschijnlijkheidsmatrices die vastleggen hoe vaak grijswaardeparen bij vaste verschuivingen voorkomen en berekent vier canonieke Haralick-statistieken: contrast (meet lokale variatie), correlatie (meet lineaire afhankelijkheid), homogeniteit (meet de nabijheid tot de diagonaal) en energie (meet uniformiteit). Het hulpmiddel ondersteunt acht gerichte verschuivingen (0°, 45°, 90°, 135° en hun tegengestelde richtingen), wat richtingsgevoeligheid voor textuur mogelijk maakt: detectie van georiënteerde patronen zoals gewasrijen, uitlijningen van gebouwen of geologische structuren. Belangrijke kenmerken zijn analyse in meerdere richtingen die anisotrope textuureigenschappen blootlegt, afstemming van de verplaatsingsparameter die de schaalgevoeligheid optimaliseert, gelijktijdige berekening van meerdere textuurmaten die de verwerkingsoverhead vermindert en het inherente vermogen om visueel subtiele oppervlakte-eigenschappen te onderscheiden. Toepassingen omvatten precisielandbouw (classificatie van gewastypen, detectie van perceelgrenzen, beoordeling van gewasstress), stedelijke analyse (kartering van bebouwingsdichtheid, extractie van verharde oppervlakken) en geologische remote sensing (onderscheid van gesteentetypen, herkenning van structurele patronen). Toepassingsgebieden zijn onder meer landbedekkingsclassificatie die spectrale en textuurkenmerken combineert, objectgebaseerde beeldanalyse die de classificatienauwkeurigheid verbetert, kwaliteitscontrole die instrumentele artefacten in satellietbeelden detecteert en veranderingsdetectie die betekenisvolle veranderingen isoleert van sensorruis. Voor de interpretatie van de uitvoer moet de betekenis van elke statistiek worden begrepen: een hoog contrast wijst op ruwe/gevarieerde texturen; een hoge correlatie wijst op lineaire patronen; een hoge homogeniteit wijst op uniforme texturen; een hoge energie wijst op ordelijke, zich herhalende patronen. Uitvoerbanden kunnen worden gecombineerd tot textuurindices (bijv. GLCM-homogeniteit gedeeld door contrast versterkt homogene gebieden). De modi voor richtingsaggregatie (gemiddelde/min/max/afzonderlijk) beïnvloeden de dimensionaliteit en interpretatie van de uitvoer. Typische textuuranalyse gebruikt meerdere GLCM-maten tegelijk voor een robuuste classificatie.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerraster met één band."
              },
              "window_size": {
                "label": "Venstergrootte",
                "description": "Oneven grootte van het bewegend venster in pixels (standaard 7)."
              },
              "distance": {
                "label": "Afstand",
                "description": "Pixelafstand voor de offsets van de co-occurrentieparen (standaard 1)."
              },
              "angles": {
                "label": "Hoeken",
                "description": "Kommagescheiden hoeken uit 0,45,90,135 (standaard '0,45,90,135')."
              },
              "features": {
                "label": "Kenmerken",
                "description": "Kommagescheiden kenmerken: contrast,dissimilarity,homogeneity,asm,energy,entropy,mean,variance,correlation."
              },
              "direction_aggregation": {
                "label": "Richtingsaggregatie",
                "description": "Aggregatiemodus voor richtingen: mean (standaard), min, max, range, separate."
              },
              "levels": {
                "label": "Niveaus",
                "description": "Aantal kwantisatieniveaus (standaard 32; bereik 8-128)."
              },
              "symmetric": {
                "label": "Symmetrisch",
                "description": "Indien true (standaard) worden symmetrische GLCM's opgebouwd."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad (multiband GeoTIFF)."
              }
            }
          },
          "guided_filter": {
            "name": "Geleid filter (guided filter)",
            "description": "Het geleide filter implementeert randbehoudende afvlakking door de filteruitvoer te beperken tot lokaal lineaire relaties met een geleidebeeld, doorgaans het origineel of een verwante referentielaag. De implementatie verdeelt het beeld in overlappende rechthoekige gebieden en berekent binnen elk gebied lineaire regressieparameters om de gladheid van de uitvoer af te dwingen met respect voor de structuur van het geleidebeeld. De wiskundige formulering minimaliseert ||Fᵢ - a·Gᵢ - b||² + ε||a||², waarbij Fᵢ de gefilterde uitvoer is, Gᵢ het geleidebeeld en (a, b) de lokaal lineaire parameters. Belangrijke kenmerken zijn flexibiliteit (het geleidebeeld kan onafhankelijk zijn van het gefilterde beeld), rekenkundige efficiëntie via een scheidbare O(N)-implementatie, parameterbesturing waarmee de sterkte van het randbehoud kan worden aangepast en effectiviteit met enkelvoudige of multispectrale geleiding. Geleide filtering blinkt uit in fusieworkflows met meerdere sensoren, waarbij optische gegevens de ruisonderdrukking van SAR sturen, verfijning van LiDAR-classificaties met gelijktijdige orthofoto's, verwijdering van schaduwen/wolken in satellietmozaïeken met temporele referentiebeelden en detailversterking bij het regulariseren van kaarten. De interpretatie van de uitvoer laat zien dat gefilterde gebieden lokaal vergelijkbaar blijven met de structuur van het geleidebeeld, terwijl de intensiteit binnen homogene gebieden wordt gemiddeld. De afvlakkingsstraal bepaalt de ruimtelijke omvang (grotere straal = sterkere afvlakking); de regularisatieparameter ε brengt gladheid en getrouwheid aan de structuur in evenwicht (grotere ε = gladder, kleinere ε = meer detail). De uitvoerbereiken komen overeen met de invoer; visuele vergelijking met het geleidebeeld valideert de getrouwheid van het randbehoud. Veelvoorkomende artefacten zijn overmatige afvlakking bij sterke discontinuïteiten (kies geschikte parameters) en onvoldoende afvlakking in gebieden met weinig geleidingsinformatie (controleer de kwaliteit van het geleidebeeld). Volg de kruiscorrelatie tussen de gefilterde uitvoer en het geleidebeeld om de kwaliteit van de uitlijning te beoordelen. Pas strategisch toe in workflows voor beeldfusie, verscherping en reconstructie waarbij randinformatie uit de ene bron de filtering van een andere stuurt.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "radius": {
                "label": "Straal",
                "description": "Vensterstraal van het guided filter in pixels (standaard 4)."
              },
              "epsilon": {
                "label": "Epsilon",
                "description": "Regularisatieparameter voor de lokale variantie (standaard 0.01)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "high_pass_bilateral_filter": {
            "name": "Hoogdoorlaat-bilateraal filter",
            "description": "Berekent een hoogdoorlaatresidu door bilaterale afvlakking af te trekken van het invoerraster.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "sigma_dist": {
                "label": "Sigma afstand",
                "description": "Standaardafwijking van de ruimtelijke (afstands-)Gaussiaanse kernel, in pixels (0.5–20.0, standaard 0.75)."
              },
              "sigma_int": {
                "label": "Sigma intensiteit",
                "description": "Standaardafwijking van de intensiteits-Gaussiaanse kernel, in rasterwaarde-eenheden (standaard 1.0)."
              },
              "treat_as_rgb": {
                "label": "Als RGB behandelen",
                "description": "Zet op true om HSI-intensiteitsfiltering af te dwingen voor gepakte RGB-rasters vóór de hoogdoorlaatverschilberekening."
              },
              "assume_three_band_rgb": {
                "label": "Driebands-RGB aannemen",
                "description": "Indien true (standaard) en er geen expliciete kleurmetadata aanwezig is, wordt 3-bands uint8/uint16-RGB-interpretatie toegestaan."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerbestandspad. Indien weggelaten blijft de uitvoer in het geheugen."
              }
            }
          },
          "high_pass_filter": {
            "name": "Hoogdoorlaatfilter",
            "description": "Het hoogdoorlaatfilter isoleert hoogfrequente ruimtelijke componenten in beelden door een laagfrequente (afgevlakte) versie van het oorspronkelijke beeld af te trekken. Wiskundig wordt dit bereikt door het beeld te convolueren met een kernel die is ontworpen om gradiënten te benadrukken en brede tonale variaties te onderdrukken. De implementatie gebruikt directe convolutie of verwerking in het frequentiedomein, afhankelijk van de kernelgrootte en de beeldafmetingen. Het filter versterkt randen, fijne textuurdetails en kleinschalige variaties en verwijdert grootschalige verlichtingstrends. Belangrijke onderscheidende kenmerken zijn het behoud van randcontrast zonder grensartefacten, selectieve frequentiedemping op basis van de kernelstraal en directe toepasbaarheid op zowel grijswaarden- als multispectrale beelden. Hoogdoorlaatfiltering is van onschatbare waarde voor terreinanalyse waarbij subtiele topografische kenmerken moeten worden versterkt, het verscherpen van satellietbeelden voor visuele interpretatie, het detecteren van kleinschalige geologische structuren en het voorbewerken van gegevens voor machine-learningclassificatie. Het is ook essentieel voor het voorbereiden van orthofoto's voor veranderingsdetectie en het verbeteren van producten die van LiDAR zijn afgeleid. Voor de interpretatie van de uitvoer moet men begrijpen dat positieve waarden lokale maxima (heldere randen) aangeven en negatieve waarden lokale minima (donkere randen). Het typische bereik is ±100 voor 8-bits beelden; een uitvoer met een gemiddelde van nul wijst op een geslaagde extractie van hoge frequenties. Veelvoorkomende artefacten zijn ringing bij sterke discontinuïteiten en versterkte ruis als de bronbeelden ruisend zijn. De schaalinterpretatie hangt af van de kernelstraal: kleinere kernels versterken fijne textuur (afzonderlijke pixels), terwijl grotere kernels kenmerken op middelgrote schaal benadrukken (terreinvariaties over tientallen pixels). Volg de uitvoerstatistieken; overmatige centrering rond nul wijst op mogelijke overbewerking. Pas toe samen met aanvullende laagdoorlaatresultaten om het origineel te reconstrueren of voor multischalige decompositieworkflows.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "filter_size_x": {
                "label": "Filtergrootte X",
                "description": "Vensterbreedte in pixels (oneven geheel getal, standaard 11). Alias: filterx."
              },
              "filter_size_y": {
                "label": "Filtergrootte Y",
                "description": "Vensterhoogte in pixels (oneven geheel getal, standaard = filter_size_x). Alias: filtery."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "high_pass_median_filter": {
            "name": "Hoogdoorlaat-mediaanfilter",
            "description": "Voert hoogdoorlaatfiltering uit door de lokale mediaan af te trekken van de centrale waarden: uitvoer = pixel - mediaan_omgeving. Combineert hoogdoorlaatfiltering (versterkt detail) met de robuustheid van de mediaan (verwijdert ruis). Uitvoer gecentreerd rond nul (negatief = donkerder dan de omgeving, positief = helderder). Robuust tegen uitschieters in vergelijking met Gaussisch gebaseerde hoogdoorlaatfilters. Het hoogdoorlaatresidu toont lokale afwijkingen van de mediaantrend. Bijzonder robuust voor ruisende gegevens: de mediaan is stabieler dan het gemiddelde bij uitschieters. De uitvoer benadrukt fijnschalige variatie. Wordt vaak toegepast op Gaussisch afgevlakte versies (levert een banddoorlaatfilter op). Nuttig voor textuurversterking en kenmerkextractie uit ruisende beelden. Toepassingen: (1) textuurversterking uit ruisende gegevens, (2) detailextractie vóór classificatie, (3) robuuste kenmerkdetectie, (4) voorbewerking voor textuurgebaseerde segmentatie, (5) SAR-voorbewerking.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "filter_size_x": {
                "label": "Filtergrootte X",
                "description": "Omgevingsbreedte in pixels (oneven geheel getal, standaard 11)."
              },
              "filter_size_y": {
                "label": "Filtergrootte Y",
                "description": "Omgevingshoogte in pixels (oneven geheel getal, standaard 11)."
              },
              "sig_digits": {
                "label": "Significante cijfers",
                "description": "Aantal significante cijfers voor de histogrambinning (standaard 2)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "integral_image_transform": {
            "name": "Integraalbeeldtransformatie",
            "description": "Berekent voor elke band een summed-area-transformatie (integraalbeeld).",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "k_nearest_mean_filter": {
            "name": "K-nearest-mean-filter",
            "description": "Voert randbehoudende k-nearest-neighbor-gemiddeldeafvlakking uit: sorteert de omgeving op afstand tot de centrale waarde en middelt de k dichtstbijzijnde waarden. Hybride benadering die randen behoudt via gelijkenisweging. De centrale pixel en de k-1 meest vergelijkbare buren worden gemiddeld. Geavanceerder dan eenvoudige k-NN (houdt rekening met zowel ruimtelijke als intensiteitsgelijkenis). Rekenkundig efficiënt in vergelijking met bilateraal. De k-nearest-benadering kiest de buren adaptief: pixelwaarden dicht bij het centrum worden gemiddeld, afwijkende pixels worden genegeerd. De parameter k bepaalt de afvlakking: k=1 (geen afvlakking), k=n (alle buren = gemiddeldefilter). Doorgaans k=n/2 (de helft van de omgeving). Efficiënt alternatief voor het bilaterale filter: vergelijkbaar randbehoud tegen lagere rekenkosten. Bijzonder nuttig voor beelden met sterke intensiteitsdiscontinuïteiten. Toepassingen: (1) randbehoudende afvlakking (alternatief voor bilateraal), (2) snelle voorbewerking voor classificatie, (3) voorbewerking waarbij efficiëntie cruciaal is, (4) filtering van multibandbeelden. Typische parameters: k=neighborhood_size/2 tot 3/4.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "filter_size_x": {
                "label": "Filtergrootte X",
                "description": "Omgevingsbreedte in pixels (oneven geheel getal, standaard 3)."
              },
              "filter_size_y": {
                "label": "Filtergrootte Y",
                "description": "Omgevingshoogte in pixels (oneven geheel getal, standaard 3)."
              },
              "k": {
                "label": "K",
                "description": "Aantal dichtstbijzijnde buren om te middelen (standaard 5)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "kuwahara_filter": {
            "name": "Kuwahara-filter",
            "description": "Het Kuwahara-filter implementeert niet-lineaire randbehoudende afvlakking door de omgeving van elke pixel in vier kwadranten te verdelen, statistieken binnen elk kwadrant te berekenen en het kwadrant met de laagste variantie als uitvoerwaarde te kiezen. De implementatie verdeelt een venster van (2k+1)×(2k+1) in vier overlappende subvensters van k×k, berekent het gemiddelde en de variantie van elk kwadrant en geeft het gemiddelde van het kwadrant met de minimale variantie als uitvoer. Deze op rangorde gebaseerde benadering vlakt homogene gebieden af en verscherpt tegelijk randen. Belangrijke kenmerken zijn echt randbehoud via kwadrantselectie (randen tussen kwadranten onderdrukken vervaging van de uitvoer), rekenkundige eenvoud waarvoor alleen berekeningen van gemiddelde/variantie nodig zijn, parameterbesturing via de kwadrantgrootte k en effectiviteit op optische, radar- en thermische beelden. Kuwahara-filtering blinkt uit in de afvlakking van van LiDAR afgeleide DEM's met behoud van steilranden en terrassen, extractie van wegennetwerken uit beelden met hoge resolutie met behoud van de scherpte van de hartlijn, afbakening van gebouwcontouren uit luchtfoto's en detectie van de grenzen van olielozingen in SAR-beelden. De interpretatie van de uitvoer laat zien dat homogene gebieden het natuurlijk middelende kwadrant (laagste variantie) als uitvoer geven; randen geven het kwadrant met een uniforme structuur het dichtst bij de rand als uitvoer, waardoor de uitvoer effectief aan de schonere kant wordt verankerd. De kwadrantgrootte k bepaalt het detailbehoud: k=1 (minimale afvlakking) behoudt fijne randen; k=3-4 zorgt voor een evenwichtige afvlakking en randbehoud; bij k>5 dreigt detailverlies. De uitvoerwaarden komen exact overeen met de invoerpixelwaarden uit de geselecteerde kwadranten (geen interpolatie). Volg de uitvoerhistogrammen op bimodale verdelingen (randen en homogene gebieden duidelijk gescheiden); unimodale verdelingen wijzen op randvervaging. Pas aanvullende verscherping toe als overmatige afvlakking optreedt. Veelvoorkomende artefacten zijn een richtingsbias afhankelijk van de uitlijning van de kwadranten en blokvorming bij zwakke randen. Gebruik bij voorbewerking voor segmentatie, waar randbehoud een nauwkeurige extractie van grenzen garandeert.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "radius": {
                "label": "Straal",
                "description": "Kuwahara-kwadrantstraal in pixels (standaard 2)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "lee_filter": {
            "name": "Lee-filter",
            "description": "Het Lee-filter voert SAR-spikkelreductie uit met het multiplicatieve model van Lee, waarbij wordt aangenomen dat radarreflecties multiplicatieve ruis volgen: I = S·N, waarbij S het signaal is en N de multiplicatieve ruis. De implementatie berekent lokale gemiddelden en varianties, schat de spikkelvariantie en filtert vervolgens via: F = μ + (1 - σₙ²/σ_I²)·(I - μ), waarbij σₙ² de spikkelvariantie is en σ_I² de totale variantie. Deze modelgebaseerde benadering behoudt elementen met hoge coherentie en onderdrukt spikkels. Belangrijke kenmerken zijn een SAR-specifiek ruismodel (multiplicatief in plaats van Gaussisch), behoud van puntdoelen en randen, een eenvoudige interpretatie van de parameters (de venstergrootte bepaalt de coherentiemeting) en bewezen effectiviteit op single-pol- en multi-pol-SAR. Lee-filtering blinkt uit in SAR-voorbewerking voor landbouwmonitoring, bosclassificatie, monitoring van het zeeoppervlak en workflows voor overstromingskartering. De interpretatie van de uitvoer laat zien dat gebieden met hoge coherentie (puntdoelen, sterke randen) minimaal worden gefilterd; gebieden met lage coherentie (spikkelruis, zwakke grenzen) worden agressief gefilterd. De schatting van de spikkelvariantie beïnvloedt de uitvoer: een nauwkeurige schatting vereist voldoende homogene pixels; een onderschatte variantie leidt tot te weinig afvlakking; een overschatte variantie veroorzaakt overmatige afvlakking. De venstergrootte bepaalt de resolutie van de coherentiemeting: kleine vensters (3×3) behouden fijn detail; grote vensters (7×7) verbeteren de variantieschatting maar riskeren detailverlies. De schaling van de uitvoer komt overeen met de invoer; logaritmische visualisatie verbetert de zichtbaarheid. Typische ruisreductie bereikt een variantieafname van 5-10 dB, afhankelijk van het aantal looks. Volg het uitvoerhistogram op resterende spikkelsignaturen; gladde verdelingen wijzen op voldoende filtering. Artefacten zijn onder meer mogelijke randvervaging in gebieden met zwakke coherentie en een richtingsbias bij lijnvormige elementen. Pas strategisch toe bij SAR-classificatie die spikkelonderdrukking vereist met behoud van de integriteit van classificatiekenmerken.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "filter_size_x": {
                "label": "Filtergrootte X",
                "description": "Omgevingsbreedte in pixels (oneven geheel getal, standaard 11)."
              },
              "filter_size_y": {
                "label": "Filtergrootte Y",
                "description": "Omgevingshoogte in pixels (oneven geheel getal, standaard 11)."
              },
              "sigma": {
                "label": "Sigma",
                "description": "Halve breedte van het intensiteitsbereik rond de centrale waarde (standaard 10.0)."
              },
              "m_value": {
                "label": "M-waarde",
                "description": "Minimaal aantal steekproefpunten binnen het bereik vóór terugvalmiddeling (standaard 5.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "line_detection_filter": {
            "name": "Lijndetectiefilter",
            "description": "Het lijndetectiefilter is een gespecialiseerde randdetector die is ontworpen om lijnvormige elementen (wegen, rivieren, hoogspanningslijnen en geologische lineamenten) in vier hoofdrichtingen (horizontaal, verticaal en beide diagonalen) te versterken door gerichte convolutiekernels toe te passen die zijn geoptimaliseerd voor de connectiviteit en continuïteit van lijnen. Dit filter gebruikt 3×3-kernels die lijnvormige structuren benadrukken die in elke hoofdrichting zijn uitgelijnd en loodrechte ruis en willekeurige variaties van elementen onderdrukken. De gerichte benadering scheidt detecties naar oriëntatie, zodat verdere toepassingen horizontale infrastructuur (pijpleidingen, perceelgrenzen) kunnen onderscheiden van verticale structuren (bomenrijen, nutscorridors). Belangrijke kenmerken zijn een ontleding in meerdere richtingen die afzonderlijke banden voor grootte en richting genereert, adaptieve afstemming van de gevoeligheid voor variaties in lijnbreedte en contrast, en uitzonderlijke prestaties bij subtiele lijnvormige elementen in complex terrein. Toepassingen omvatten kartering van infrastructuur (wegen, spoorwegen, hoogspanningslijnen), extractie van natuurlijke elementen (waterlopen, ruggen, breuken) en afbakening van grenzen van landgebruik. Toepassingsgebieden zijn onder meer voorbewerking voor vectorconversie bij kadastrale digitalisering, extractie van transportnetwerken uit orthofotografie, kartering van geologische structuren uit satellietbeelden en patroonherkenning in remote-sensinganalyse. Voor de interpretatie van de uitvoer moet men begrijpen dat elke richtingscomponent de lijnsterkte in die specifieke oriëntatie toont; onderzoek alle vier de uitvoeren van de hoofdrichtingen om de overheersende richtingen van elementen te bepalen. Hogere waarden wijzen op een sterkere lijncontinuïteit; lage waarden wijzen op ruis of onderbrekingen. De uitvoer is van nature schaars en benadrukt alleen pixels die lijnvormige elementen vertegenwoordigen; achtergrondgebieden blijven rond nul. De uitvoer in meerdere richtingen maakt een nabewerkende classificatie mogelijk waarbij wegen (in bebouwde gebieden doorgaans horizontaal/verticaal) worden onderscheiden van natuurlijke lineamenten (willekeurige oriëntatie). Combineer de richtingscomponenten tot een uniforme lijnenkaart of analyseer elke richting afzonderlijk voor de kartering van georiënteerde structuren.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "variant": {
                "label": "Variant",
                "description": "Variant van de lijnrichting: v, h, 45 of 135."
              },
              "abs_values": {
                "label": "Absolute waarden",
                "description": "Indien true worden absolute responswaarden uitgevoerd."
              },
              "clip_tails": {
                "label": "Staarten afkappen",
                "description": "Optioneel symmetrisch afkappingspercentage van de staarten (0-40)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "line_thinning": {
            "name": "Lijnverdunning",
            "description": "Reduceert verbonden binaire rasterelementen tot skeletlijnen met een breedte van één cel.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "lidar_ground_point_filter": {
            "name": "LiDAR-grondpuntfilter",
            "description": "Scheidt het terrein van punten boven de grond: hellingsgebaseerde classificatie/filtering met behulp van lokale vlakgeometrie en hoogtedrempels. Efficiënte grondsegmentatie.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object. Indien weggelaten wordt in batchmodus over de LiDAR-bestanden in de huidige map gewerkt."
              },
              "search_radius": {
                "label": "Zoekstraal",
                "description": "Zoekstraal van de omgeving (standaard 2.0)."
              },
              "min_neighbours": {
                "label": "Minimaal aantal buren",
                "description": "Beoogd minimumaantal buren (standaard 0)."
              },
              "slope_threshold": {
                "label": "Hellingsdrempel",
                "description": "Hellingsdrempelwaarde in graden (standaard 45.0, max 88)."
              },
              "height_threshold": {
                "label": "Hoogtedrempel",
                "description": "Minimale verticale scheiding om als niet-terrein te markeren (standaard 1.0)."
              },
              "classify": {
                "label": "Classificeren",
                "description": "Indien true worden punten geclassificeerd (grond=2, niet-terrein=1); anders worden niet-terreinpunten weggefilterd."
              },
              "slope_norm": {
                "label": "Hellingsnormalisatie",
                "description": "Indien true wordt top-hat-terreinnormalisatie toegepast vóór de hellingstest (standaard true)."
              },
              "height_above_ground": {
                "label": "Hoogte boven maaiveld",
                "description": "Indien true worden z-waarden uitgevoerd als lokale hoogte boven de dichtstbijzijnde lagere buur."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-LiDAR-pad voor de modus met één invoer."
              }
            }
          },
          "majority_filter": {
            "name": "Meerderheidsfilter",
            "description": "Berekent voor elke pixel de modus (meest voorkomende waarde/klasse) in een bewegend venster. Niet-lineair filter dat categorische grenzen en dominante patronen behoudt. Bijzonder nuttig voor geclassificeerde beelden waarbij de uitvoer binnen de oorspronkelijke klassenset moet blijven (in tegenstelling tot een gemiddeldefilter, dat geïnterpoleerde waarden maakt). Essentieel voor morfologische opschoning van classificatie-uitvoer.\n\nMeerderheidsfiltering is het op de modus gebaseerde equivalent van mediaanfiltering. Voor categorische gegevens (geclassificeerde beelden, landbedekking) behoudt het meerderheidsfilter de klassedefinities en vlakt het tegelijk ruis af. Voor continue gegevens kan het meerderheidsfilter lokale pieken in de waardeverdeling blootleggen. Wordt vaak gevolgd door het verwijderen van minderheidsklassen (opschoning na classificatie) om peper-en-zoutartefacten uit de classificatie te verwijderen.\n\nToepassingen: (1) afvlakking na classificatie (verwijdert kleine onechte klassevlakjes), (2) kaart van de meerderheidsklasse uit meervoudig geclassificeerde uitvoer, (3) opschoning van vectorgegevens (klassedesaggregatie), (4) ruisonderdrukking in gedrempelde beelden, (5) afvlakking van attributen in segmentatie-uitvoer. Typische workflow: classificeren→meerderheidsfilter→verwijdering van minderheidsklassen→definitieve opgeschoonde kaart.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "filter_size_x": {
                "label": "Filtergrootte X",
                "description": "Vensterbreedte in pixels (oneven geheel getal, standaard 11). Alias: filterx."
              },
              "filter_size_y": {
                "label": "Filtergrootte Y",
                "description": "Vensterhoogte in pixels (oneven geheel getal, standaard = filter_size_x). Alias: filtery."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen bewaard."
              }
            }
          },
          "maximum_filter": {
            "name": "Maximumfilter",
            "description": "Berekent de maximumwaarde in een bewegend venster, wat lokale pieken en ruggen blootlegt. Dilatatieoperator in morfologische beeldverwerking. Nuttig voor het detecteren van pieken, ruglijnen en elementen met maximale amplitude. Gevoelig voor een enkele uitschieter (één hoge waarde in het venster levert een hoge uitvoer op).\n\nHet maximumfilter is de morfologische 'dilatatie'-operator: het vergroot lichte gebieden en verkleint donkere gebieden. Bij herhaalde toepassing (dilatatie in meerdere doorgangen) ontstaan afgevlakte pieken en groeien geïsoleerde elementen tot ze hun omgeving vullen. In combinatie met het minimumfilter zijn sluiting (dilatatie gevolgd door erosie) en opening (erosie gevolgd door dilatatie) mogelijk. Essentieel voor morfologische kenmerkdetectie en multischalige analyse.\n\nToepassingen: (1) morfologische dilatatie voor filtering op grootte, (2) sluiting via dilatatie→erosie om kleine gaten te vullen, (3) identificatie van pieken/ruggen in terrein en beelden, (4) lokaal plafondniveau in bathymetrie/DEM, (5) multischalige kenmerkanalyse (vergelijk dilatatie over schalen). Typische workflow: maximum→vergelijking met minimum→sluiting of opening, afhankelijk van het type element.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "filter_size_x": {
                "label": "Filtergrootte X",
                "description": "Vensterbreedte in pixels (oneven geheel getal, standaard 11). Alias: filterx."
              },
              "filter_size_y": {
                "label": "Filtergrootte Y",
                "description": "Vensterhoogte in pixels (oneven geheel getal, standaard = filter_size_x). Alias: filtery."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen bewaard."
              }
            }
          },
          "mean_filter": {
            "name": "Gemiddeldefilter",
            "description": "Berekent voor elke pixel het gemiddelde in een bewegend venster. Fundamentele afvlakkingsbewerking die lokale ruis vermindert maar scherpe overgangen vervaagt. De uitvoer vertegenwoordigt de lokale centrale tendens. Veel gebruikt voor voorbewerking, ruisreductie en multischalige analyse.\n\nGemiddeldefiltering is de meest gebruikte laagdoorlaatafvlakking. Zeer gevoelig voor uitschieters (extreme waarden kunnen de resultaten vertekenen), waardoor een mediaanfilter de voorkeur heeft voor ruisende gegevens. Rekenkundig efficiënt. De filtergrootte bepaalt de mate van afvlakking: klein (3×3) behoudt detail, groot (31×31+) levert een sterk afgevlakt oppervlak op. Wordt vaak iteratief of op meerdere schalen toegepast voor multiresolutieanalyse.\n\nToepassingen: (1) basale ruisreductie, (2) voorbewerking vóór kenmerkdetectie (vlakt fout-positieven af), (3) multischalige analyse (toepassen bij 3×3, 11×11, 31×31), (4) temporele afvlakking (combineren van scènes), (5) basislijn voor andere statistische bewerkingen. Vergelijk met de mediaan (niet-lineair, behoudt randen) voor beter randbehoud.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "filter_size_x": {
                "label": "Filtergrootte X",
                "description": "Vensterbreedte in pixels (oneven geheel getal, standaard 11). Alias: filterx."
              },
              "filter_size_y": {
                "label": "Filtergrootte Y",
                "description": "Vensterhoogte in pixels (oneven geheel getal, standaard = filter_size_x). Alias: filtery."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen bewaard."
              }
            }
          },
          "median_filter": {
            "name": "Mediaanfilter",
            "description": "Berekent voor elke pixel de mediaanwaarde in een bewegend venster en vervangt deze door het 50e percentiel van de omgeving. Robuust ruisfilter dat randen behoudt (niet-lineair). Bijzonder effectief voor het verwijderen van impulsruis (peper-en-zout) met behoud van scherpe grenzen. De uitvoerwaarden zijn werkelijke pixelwaarden uit de omgeving (niet geïnterpoleerd).\n\nMediaanfiltering is niet-lineair: een cruciaal voordeel ten opzichte van gemiddeldefiltering voor ruisreductie, omdat er geen nieuwe waarden worden gemaakt en randen niet vervagen. Grote filtergroottes vlakken sterk af met behoud van scherpe overgangen. Veel gebruikt in remote sensing, medische beeldvorming en SAR-beeldverwerking. De rekenkosten nemen toe met de filtergrootte, maar het filter is doorgaans sneller dan bilaterale of geleide filters.\n\nToepassingen: (1) spikkelreductie in SAR-beelden (bijzonder effectief voor fasecoherentie), (2) verwijdering van peper-en-zoutruis, (3) voorbewerking vóór randdetectie (vermindert onechte randen), (4) behoud van grenzen bij voorbewerking voor classificatie, (5) radiometrische correctie van uitschieters. Typische workflow: mediaan toepassen→uitvoer met versterkte randen→drempeling voor kenmerkextractie.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "filter_size_x": {
                "label": "Filtergrootte X",
                "description": "Vensterbreedte in pixels (oneven geheel getal, standaard 11). Alias: filterx."
              },
              "filter_size_y": {
                "label": "Filtergrootte Y",
                "description": "Vensterhoogte in pixels (oneven geheel getal, standaard = filter_size_x). Alias: filtery."
              },
              "sig_digits": {
                "label": "Significante cijfers",
                "description": "Aantal significante cijfers voor gekwantiseerde rangfiltering (standaard 2)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen bewaard."
              }
            }
          },
          "minimum_filter": {
            "name": "Minimumfilter",
            "description": "Berekent de minimumwaarde in een bewegend venster, wat lokale laagtes en troggen blootlegt. Erosieoperator in morfologische beeldverwerking. Nuttig voor het detecteren van dalbodems, depressies en elementen met minimale hoogte. Gevoelig voor een enkele uitschieter (één lage waarde in het venster levert een lage uitvoer op).\n\nHet minimumfilter is de morfologische 'erosie'-operator: het verkleint lichte gebieden en vergroot donkere gebieden. Bij herhaalde toepassing (erosie in meerdere doorgangen) ontstaan afgevlakte dalen en verdwijnen geïsoleerde elementen. In combinatie met het maximumfilter (dilatatie) zijn opening (erosie gevolgd door dilatatie) en sluiting (dilatatie gevolgd door erosie) mogelijk. Wordt vaak gebruikt bij multischalige decompositie: vergelijk het minimum bij 3×3, 11×11 en 31×31 om de schalen van elementen te bepalen.\n\nToepassingen: (1) morfologische erosie voor filtering op grootte, (2) opening via erosie→dilatatie om kleine ruisobjecten te verwijderen, (3) identificatie van depressies/dalen in het terrein, (4) lokaal bodemniveau in bathymetrie/DEM, (5) multischalige kenmerkanalyse (vergelijk erosie over schalen). Typische workflow: minimum→vergelijking met maximum→opening of sluiting, afhankelijk van het type element.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "filter_size_x": {
                "label": "Filtergrootte X",
                "description": "Vensterbreedte in pixels (oneven geheel getal, standaard 11). Alias: filterx."
              },
              "filter_size_y": {
                "label": "Filtergrootte Y",
                "description": "Vensterhoogte in pixels (oneven geheel getal, standaard = filter_size_x). Alias: filtery."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen bewaard."
              }
            }
          },
          "non_local_means_filter": {
            "name": "Non-local-means-filter",
            "description": "Non-local means-filtering voert krachtige ruisonderdrukking uit door vergelijkbare patches te middelen die over het hele beeld worden geïdentificeerd in plaats van aangrenzende pixels, waarbij de zelfgelijkenis van het beeld wordt benut om ruis te onderdrukken met behoud van structuren. De implementatie identificeert patches die vergelijkbaar zijn met elke doelpatch via de euclidische afstand in de patchruimte, weegt vergelijkbare patches exponentieel naar gelijkenis en middelt de gewogen patches. Het algoritme berekent: Fᵢ = (1/Z) Σⱼ exp(-d(Pᵢ, Pⱼ)²/h²) · Iⱼ, waarbij d de patchafstand meet, h de bandbreedte bepaalt en Z normaliseert. Belangrijke kenmerken zijn superieure ruisonderdrukking via zoeken op gelijkenis in plaats van alleen ruimtelijke nabijheid, effectiviteit op complexe texturen en fijne details, toepasbaarheid op elk gegevenstype en bewezen prestaties op medische, satelliet- en fotografische beelden. Non-local means-filtering blinkt uit in gedetailleerd herstel van satellietbeelden met behoud van fijne textuur en structuur, middeling van multitemporele stapels ter voorbereiding op veranderingsdetectie, ruisonderdrukking van zeer ruisende meetgegevens (ultrasoon, hyperspectraal) en verbetering van beelden van archeologische onderzoeken en luchtopnamen. Voor de interpretatie van de uitvoer moet men begrijpen dat vergelijkbare gebieden overal in het beeld bijdragen aan elke uitvoerpixel; lokaal afwijkende gebieden dragen verwaarloosbaar bij. De patchgrootte bepaalt het behoud van kenmerken (grotere patches = gladdere resultaten, fijnere patches = meer detail); de bandbreedte h bepaalt de gelijkenisweging (grotere h = meer patches opgenomen, kleinere h = striktere gelijkenisvereisten). De uitvoerbereiken komen overeen met de invoer; statistieken verschuiven richting de regionale gemiddelden terwijl fijne structuren behouden blijven. De rekenkosten schalen met de beeldgrootte en de patchstraal; typische uitvoering vergt aanzienlijke verwerkingstijd voor grote beelden. Volg de voortgang van de filtering via PSNR of visuele inspectie. Veelvoorkomende artefacten zijn overmatige afvlakking van fijne texturen (vergroot de patchgrootte voorzichtig) en te weinig afvlakking in gebieden met veel ruis (vergroot de bandbreedte). Pas strategisch toe in workflows die maximale ruisreductie vereisen met behoud van fijnschalige kenmerken.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "search_radius": {
                "label": "Zoekstraal",
                "description": "Straal van het zoekvenster in pixels (standaard 5)."
              },
              "patch_radius": {
                "label": "Patchstraal",
                "description": "Patchstraal in pixels (standaard 1)."
              },
              "h": {
                "label": "H",
                "description": "Parameter voor de filtersterkte (standaard 10.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "opening": {
            "name": "Opening",
            "description": "Voert een morfologische opening uit met een rechthoekig structuurelement.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "filter_size_x": {
                "label": "Filtergrootte X",
                "description": "Oneven omgevingsbreedte (standaard 11)."
              },
              "filter_size_y": {
                "label": "Filtergrootte Y",
                "description": "Oneven omgevingshoogte (standaard gelijk aan filter_size_x)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "olympic_filter": {
            "name": "Olympisch filter",
            "description": "Het Olympic-filter implementeert op rangorde gebaseerde afvlakking door de hoogste en de laagste waarde uit de omgeving van elke pixel te verwijderen en vervolgens de resterende pixels te middelen. Deze robuuste filterbenadering verwijdert extreme uitschieters (waarschijnlijk ruis of onechte waarden) met behoud van de centrale tendens. Wiskundige formulering: F = (1/(N-2)) Σ(I_sorted[2:N-1]), waarbij de gesorteerde omgevingswaarden de hoogste en laagste uitsluiten. De implementatie vereist het sorteren van kleine omgevingen (rekenkundig efficiënt) maar levert een effectieve ruisreductie op. Belangrijke kenmerken zijn een eenvoudige strategie voor het verwijderen van uitschieters, effectieve reductie van peper-en-zoutruis, randbewuste filtering (randen verschijnen vaak als extremen) en toepasbaarheid op elk gegevenstype. Olympic-filtering blinkt uit in de voorbewerking van optische satellietbeelden (verwijdert geïsoleerde heldere wolkenpixels en donkere schaduwen), afvlakking van DEM's om ruisartefacten uit metingen te verminderen, ruisonderdrukking in thermische beelden (verwijdert sensoruitschieters) en voorbewerking van radarbeelden. De interpretatie van de uitvoer laat zien dat symmetrische ruisverdelingen (evenveel hoge als lage uitschieters) symmetrisch worden gefilterd; scheve verdelingen (meer hoge of meer lage) leveren een gerichte filtering op. De omgevingsgrootte bepaalt de mate van afvlakking: een 3×3-venster verwijdert 2 extremen uit 9 pixels (milde filtering); grotere vensters filteren agressiever. De uitvoerwaarden blijven binnen het invoerbereik (de uitvoer is het gemiddelde van werkelijke omgevingswaarden). Statistieken tonen een gecontroleerde afname van de variantie die specifiek op uitschieters is gericht. Verschilbeelden (origineel - gefilterd) benadrukken verwijderde uitschieters; geconcentreerde gebieden met hoge waarden wijzen op een effectieve isolatie van ruis. Veelvoorkomende artefacten zijn onvoldoende afvlakking als uitschieters weinig voorkomen en randvervaging als randpixels consequent als extremen worden gerangschikt. Meerdere iteraties maken progressieve afvlakking mogelijk: één doorgang zorgt voor ruisreductie; herhaalde doorgangen versterken de afvlakking. Pas toe in snelle ruisreductieworkflows die een eenvoudige, interpreteerbare filtering vereisen; bijzonder effectief voor peper-en-zoutruis in mozaïeken van meerdere sensoren.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "filter_size_x": {
                "label": "Filtergrootte X",
                "description": "Omgevingsbreedte in pixels (oneven geheel getal, standaard 11)."
              },
              "filter_size_y": {
                "label": "Filtergrootte Y",
                "description": "Omgevingshoogte in pixels (oneven geheel getal, standaard 11)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "percentile_filter": {
            "name": "Percentielfilter",
            "description": "Berekent de lokale percentielrang van de hoogte/waarde van de centrale cel binnen een bewegend venster (0-100%). Analoog aan Elevation Percentile voor generieke rastergegevens. Meet de relatieve positie: uitvoer=0 wijst op een lokaal minimum, uitvoer=100 op een lokaal maximum, uitvoer=50 op de mediaan. Toont de lokale positie in de verdeling onafhankelijk van absolute waarden.\n\nPercentielfiltering maakt positie-relatieve analyse mogelijk. Nuttig voor gelaagde analyse: cellen met een hoge percentielrang (>80) in alle banden wijzen op 'heldere' elementen; een lage percentielrang (<20) wijst op 'donkere' elementen. Bijzonder nuttig voor voorbewerking voor classificatie: scheidt de positie in terrein/textuur in plaats van alleen de grootte. Wordt vaak gecombineerd met statistische filters voor karakterisering met meerdere maten.\n\nToepassingen: (1) classificatie van relatieve helderheid/donkerte, (2) textuurkarakterisering (hoge percentielvariantie = ruw, lage variantie = glad), (3) lokale contrastverbetering (normalisatie op basis van percentielen), (4) identificatie van landvormen, vergelijkbaar met het hoogtepercentiel, (5) textuuranalyse van meerdere banden (pas het percentiel toe op elke band en vergelijk de patronen).",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "filter_size_x": {
                "label": "Filtergrootte X",
                "description": "Vensterbreedte in pixels (oneven geheel getal, standaard 11). Alias: filterx."
              },
              "filter_size_y": {
                "label": "Filtergrootte Y",
                "description": "Vensterhoogte in pixels (oneven geheel getal, standaard = filter_size_x). Alias: filtery."
              },
              "sig_digits": {
                "label": "Significante cijfers",
                "description": "Aantal significante cijfers voor gekwantiseerde rangfiltering (standaard 2)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen bewaard."
              }
            }
          },
          "range_filter": {
            "name": "Bereikfilter",
            "description": "Berekent het bereik (maximum - minimum) in een bewegend venster, wat de lokale spreiding van waarden blootlegt onafhankelijk van het gemiddelde niveau. Eenvoudige heterogeniteitsmaat: groot bereik = uiteenlopende waarden, klein bereik = uniforme waarden. Eenvoudiger dan de standaardafwijking maar voor veel toepassingen even informatief, en robuuster ten opzichte van de vorm van de verdeling.\n\nHet bereik is rekenkundig efficiënt (vereist slechts twee vergelijkingen). Bijzonder nuttig voor het detecteren van overgangen/grenzen, waar pieken in het bereik contrastzones aangeven. Minder gevoelig voor de vorm van de verdeling dan de standaardafwijking (de standaardafwijking benadrukt uitschieters, het bereik gebruikt alleen de extremen). Het genormaliseerde bereik (bereik/gemiddelde) maakt vergelijking tussen banden mogelijk, zoals de variatiecoëfficiënt vergelijking tussen schalen mogelijk maakt.\n\nToepassingen: (1) kartering van textuur/contrast (eenvoudige interpretatie: groot bereik = ruw/contrastrijk), (2) grensdetectie via pieken in het bereik, (3) rekenkundig efficiënt alternatief voor de standaardafwijking, (4) kwaliteitscontrole (uniforme achtergrond met klein bereik, gebieden met elementen met groot bereik), (5) ruwheid/variabiliteit in generieke gegevens. Typische workflow: bereik berekenen→drempeling om overgangszones te identificeren→grenzen met groot bereik vectoriseren.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "filter_size_x": {
                "label": "Filtergrootte X",
                "description": "Vensterbreedte in pixels (oneven geheel getal, standaard 11). Alias: filterx."
              },
              "filter_size_y": {
                "label": "Filtergrootte Y",
                "description": "Vensterhoogte in pixels (oneven geheel getal, standaard = filter_size_x). Alias: filtery."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen bewaard."
              }
            }
          },
          "remove_spurs": {
            "name": "Uitlopers verwijderen",
            "description": "Verwijdert korte uitloperartefacten uit binaire rasterelementen door iteratief snoeien.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "max_iterations": {
                "label": "Maximaal aantal iteraties",
                "description": "Maximaal aantal snoei-iteraties (standaard 10)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "savitzky_golay_2d_filter": {
            "name": "Savitzky-Golay-2D-filter",
            "description": "Voert 2D-Savitzky-Golay-afvlakking uit: een filter op basis van polynoomfitting dat lokale polynomiale kenmerken behoudt. Past een lokale polynoom aan op de omgeving en vervangt het centrum door de gefitte waarde. Behoudt pieken/dalen beter dan Gaussisch. Nuttig voor ruisende gegevens waarbij het behoud van kenmerken belangrijk is. Minder vervaging dan Gaussisch bij polynomen van lage orde; de afvlakking neemt toe met de orde van de polynoom. Savitzky-Golay-filtering past met de kleinste-kwadratenmethode een lokale polynoom (doorgaans kwadratisch/kubisch) aan op de omgeving. De centrale waarde wordt vervangen door de waarde van de polynoom. Anders dan mediaan/Gaussisch: behoudt kenmerken die verschijnen als polynomiale structuren (pieken, dalen, ruggen). Rekenkundig eenvoudig maar trager dan een eenvoudige convolutie. De orde van de polynoom bepaalt de afweging tussen afvlakking en behoud. Toepassingen: (1) ruisende gegevens afvlakken met behoud van piekstructuren, (2) verwerking van hoogtegrids (behoudt de topografie van ruggen/dalen), (3) afvlakking van spectrale gegevens (behoudt absorptiekenmerken), (4) kenmerkbehoudende voorbewerking.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "window_size": {
                "label": "Venstergrootte",
                "description": "Oneven venstergrootte (standaard 5). Momenteel wordt alleen 5 ondersteund voor polynoomorde 2."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "scharr_filter": {
            "name": "Scharr-filter",
            "description": "Het Scharr-filter is een randdetectieoperator die het Sobel-filter verbetert door geoptimaliseerde kernelcoëfficiënten te gebruiken die specifiek zijn ontworpen om richtingsbias te verminderen en een betere rotatie-invariantie te bieden. De Scharr-operator gebruikt 3×3-convolutiekernels met gehele coëfficiënten (3, 10, 3) die empirisch zijn geoptimaliseerd voor randrichtingen van 0°, 45°, 90° en 135°, wat een nauwkeurigere gradiëntschatting oplevert dan traditionele Sobel-filters, vooral voor cirkelvormige elementen en gedraaide randen. Het filter berekent de horizontale gradiënt en de gradiëntgrootte tegelijkertijd, wat een robuuste lokalisatie van randen mogelijk maakt. Belangrijke voordelen zijn een superieure nauwkeurigheid voor richtingsgradiënten, minder rotatiebias dan Sobel en een efficiënte 3×3-kernelberekening met minimale geheugenoverhead. De uitvoer omvat zowel de grootte als optionele richtingscomponenten. Het Scharr-filter blinkt uit in workflows voor kenmerkextractie, grensdetectie en kwaliteitsborging die een hoge richtingsnauwkeurigheid vereisen. Toepassingen omvatten het extraheren van gebouwcontouren uit luchtbeelden, het detecteren van wegennetwerken, het afbakenen van watergrenzen met minimale vervorming en het identificeren van geologische lineamenten in satellietgegevens. Het filter presteert uitzonderlijk goed in stedelijke kartering, detectie van landbouwgrenzen en toepassingen voor autonome navigatie. Voor de interpretatie van de uitvoer moet men begrijpen dat de grootte de randsterkte weergeeft: hogere waarden wijzen op scherpere overgangen tussen verschillende spectrale klassen. Richtingscomponenten tonen de overheersende randoriëntatie (horizontaal, diagonaal of verticaal), wat nuttig is voor lineamentanalyse. Pas het filter bij multibandrasters afzonderlijk toe op elke band of gebruik een berekende index. Achtergrondwaarden verschijnen donker in de uitvoer; sterke randen verschijnen helder. Vergelijking van de RMSE met referentieranden valideert de prestaties van het filter. Schaal de uitvoer naar 0-255 voor standaardvisualisatie of behoud drijvende-kommawaarden voor kwantitatieve analyse.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "clip_tails": {
                "label": "Staarten afkappen",
                "description": "Optioneel symmetrisch afkappingspercentage van de staarten (0-40)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "standard_deviation_filter": {
            "name": "Standaardafwijkingsfilter",
            "description": "Berekent de standaardafwijking in een bewegend venster, die de lokale variatie/spreiding van waarden meet. Hoge standaardafwijking = uiteenlopende waarden (ruw/heterogeen), lage standaardafwijking = uniforme waarden (glad/homogeen). Toont patronen in textuur, ruwheid en variabiliteit. Cruciaal voor kwantificering van onzekerheid en kwaliteitsbeoordeling.\n\nDe standaardafwijking is robuuster dan het bereik voor het karakteriseren van lokale variatie (niet vertekend door één uitschieter). Maakt classificatie van gebieden op textuur mogelijk: steile hellingen (hoge standaardafwijking), flauwe hellingen (lage standaardafwijking); bossen (hoge standaardafwijking), graslanden (lage standaardafwijking). Wordt vaak genormaliseerd (variatiecoëfficiënt = standaardafwijking/gemiddelde) om vergelijking tussen gegevens met verschillende waardebereiken mogelijk te maken. Kan worden berekend uit het histogram (variantie = gemiddelde_van_kwadraten - kwadraat_van_gemiddelde).\n\nToepassingen: (1) textuurkartering (analyse van ruwheid/heterogeniteit), (2) kwantificering van onzekerheid in ruisende gegevens, (3) kwaliteitsbeoordeling (uniforme achtergrond = lage standaardafwijking, gebieden met veel elementen = hoog), (4) classificatiebetrouwbaarheid (hoge standaardafwijking = gemengde/onzekere klassen), (5) heterogeniteit over meerdere banden (stapel de standaardafwijkingen van elke band). Typische workflow: standaardafwijking berekenen op meerdere schalen→patroonveranderingen over schalen vergelijken→karakteristieke schalen identificeren.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "filter_size_x": {
                "label": "Filtergrootte X",
                "description": "Vensterbreedte in pixels (oneven geheel getal, standaard 11). Alias: filterx."
              },
              "filter_size_y": {
                "label": "Filtergrootte Y",
                "description": "Vensterhoogte in pixels (oneven geheel getal, standaard = filter_size_x). Alias: filtery."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen bewaard."
              }
            }
          },
          "thicken_raster_line": {
            "name": "Rasterlijn verdikken",
            "description": "Verdikt diagonale rasterlijnsegmenten om diagonaal doorlekken te voorkomen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "tophat_transform": {
            "name": "Top-hat-transformatie",
            "description": "Voert een witte of zwarte morfologische top-hattransformatie uit.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "filter_size_x": {
                "label": "Filtergrootte X",
                "description": "Oneven omgevingsbreedte (standaard 11)."
              },
              "filter_size_y": {
                "label": "Filtergrootte Y",
                "description": "Oneven omgevingshoogte (standaard gelijk aan filter_size_x)."
              },
              "variant": {
                "label": "Variant",
                "description": "Top-hat-variant: white (standaard) of black."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "total_filter": {
            "name": "Totaalfilter",
            "description": "Berekent de som (totaal) van pixelwaarden in de omgeving in een bewegend venster. Integreert de lokale signaalsterkte. Toepassingen hangen af van de betekenis van de gegevens: voor aantallen/dichtheden toont het totaal lokale dichtheidspatronen; voor neerslag toont het totaal de accumulatie op stroomgebiedsschaal; voor reflectie is het totaal evenredig met de lokale doelgrootte.\n\nTotaalfiltering heeft per domein verschillende interpretaties. In gegevens met aantallen/bevolking toont het totaal clustering en hotspots. In hoogtegegevens wordt het totaal zelden gebruikt (de som heeft geen geomorfologische betekenis). In spectrale analyse kan het totaal de signaalsterkte over meerdere banden tonen. Wordt vaak gebruikt als tussenstap (bijv. delen door het aantal cellen in de omgeving om het gemiddelde te berekenen, of vergelijken met aangrenzende totalen om lokale heterogeniteit te detecteren).\n\nToepassingen: (1) detectie van hotspots in gegevens met aantallen (hoog totaal = clusters), (2) accumulatiemodellen voor bekkens/stroomgebieden, (3) integratie van verspreide metingen, (4) tussenberekening (totaal/N = gemiddelde), (5) aggregatie van de signaalsterkte in mozaïeken van meerdere sensoren.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "filter_size_x": {
                "label": "Filtergrootte X",
                "description": "Vensterbreedte in pixels (oneven geheel getal, standaard 11). Alias: filterx."
              },
              "filter_size_y": {
                "label": "Filtergrootte Y",
                "description": "Vensterhoogte in pixels (oneven geheel getal, standaard = filter_size_x). Alias: filtery."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen bewaard."
              }
            }
          },
          "unsharp_masking": {
            "name": "Onscherp maskeren (unsharp masking)",
            "description": "Unsharp masking voert beeldverscherping uit door een afgevlakte (laagdoorlaat)versie van het oorspronkelijke beeld af te trekken, waardoor randen en fijne details worden versterkt. De wiskundige transformatie is I_sharp = I_original + w·(I_original - I_smooth), waarbij w het verscherpingsgewicht is dat de sterkte van de versterking bepaalt. Het proces isoleert hoogfrequente componenten en versterkt ze, waardoor detail effectief wordt gescheiden van brede tonale variatie. Belangrijke kenmerken zijn flexibele parameterbesturing (vervagingsstraal en gewicht voor detailcontrole), rekenkundige efficiëntie door hergebruik van Gaussische afvlakking, interpreteerbare versterking (gewicht=0 geeft het origineel; gewicht=1 geeft een echte hoogdoorlaat; gewicht>1 zorgt voor agressieve verscherping) en effectiviteit op multispectrale gegevens. Unsharp masking blinkt uit in het voorbereiden van satellietbeelden voor handmatige interpretatie (versterkt subtiel terrein, vegetatie, infrastructuur), verbetering van van LiDAR afgeleide producten (verscherpt DEM's, vegetatiematen), kwaliteitsverbetering van orthofoto's voor de zichtbaarheid van elementen en verbetering van beelden van archeologische onderzoeken en opnamen. Voor de interpretatie van de uitvoer moet men begrijpen dat verscherpte waarden zich concentreren op randen; homogene gebieden blijven ongewijzigd. De gewichtsparameter bepaalt de mate van versterking: w=0.5-1.0 zorgt voor een subtiele versterking; w=1.0-2.0 voor een matige verscherping; w>2.0 levert agressieve resultaten op die mogelijk vol artefacten zitten. De vervagingsstraal bepaalt de schaal van de kenmerken: een kleinere straal (3-5 pixels) versterkt fijne textuur; een grotere straal (10-20 pixels) versterkt middelgrote kenmerken. De uitvoerwaarden kunnen het invoerbereik overschrijden; afkapping is doorgaans nodig. Artefacten zijn onder meer halo's rond sterke randen (groter gewicht of grotere straal = sterker), versterkte ruis als de bron ruisend is en mogelijke valse kleuren bij multispectrale verscherping. Controleer de versterking via verschilbeelden. Pas selectief toe in visualisatieworkflows; vermijd toepassing vóór geautomatiseerde analyse die gevoelig is voor veranderingen in het uitvoerbereik.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "sigma": {
                "label": "Sigma",
                "description": "Gaussiaanse sigma voor het vervagingsmasker (0.5-20.0, standaard 0.75)."
              },
              "amount": {
                "label": "Hoeveelheid",
                "description": "Vermenigvuldigingsfactor voor de verscherping, toegepast op het residu (standaard 100.0)."
              },
              "threshold": {
                "label": "Drempelwaarde",
                "description": "Minimaal absoluut residu om te verscherpen (standaard 0.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "user_defined_weights_filter": {
            "name": "Filter met gebruikersgedefinieerde gewichten",
            "description": "Het filter met door de gebruiker gedefinieerde gewichten biedt maximale flexibiliteit voor aangepaste convolutieanalyse door willekeurige gewogen coëfficiënten voor omgevingspixels te accepteren, wat de implementatie van gespecialiseerde operatoren, domeinspecifieke kernels en algoritmen van onderzoeksniveau mogelijk maakt zonder aanpassingen aan het hulpmiddel of gespecialiseerde software. Gebruikers geven de kernelafmetingen op (doorgaans 3×3 of 5×5), kennen aan elke positie drijvende-kommagewichten toe en wijzen optioneel methoden voor randverwerking aan (spiegeling, omwikkeling, constante opvulling). Dit filter past de aangepaste kernel toe op het hele raster via standaard convolutiewiskunde: elke uitvoerpixel is gelijk aan de som van de gewogen buren, wat zowel traditionele beeldverwerkingsfilters als aangepaste analytische kernels mogelijk maakt. Belangrijke kenmerken zijn volledige aanpasbaarheid voor onderzoekstoepassingen, ondersteuning voor zowel versterkings- als analysebewerkingen, compatibiliteit met genormaliseerde en niet-genormaliseerde kernels en behoud van drijvende-kommaprecisie gedurende de hele berekening. Toepassingen omvatten geavanceerde ruimtelijke filtering voor gespecialiseerde spectrale indices, implementatie van experimentele operatoren voor algoritmevalidatie, aangepaste textuuranalysekernels, gewogen omgevingsaggregaties voor multicriteria-analyse en gestandaardiseerde toepassing van kernels op uiteenlopende gegevenssets. Toepassingsgebieden zijn onder meer prototyping in academisch onderzoek, evaluatie van algoritmen in de industrie, regionale aanpassing van verwerkingspijplijnen en vergelijkende prestatiestudies. De interpretatie van de uitvoer hangt volledig af van de door de gebruiker gedefinieerde coëfficiënten; verschillende kernels leveren fundamenteel verschillende resultaten op. Genormaliseerde kernels (som van de gewichten is 1.0) behouden de waardebereiken, wat nuttig is voor afvlakking; niet-genormaliseerde kernels (die doorgaans optellen tot nul) benadrukken verschillen, wat nuttig is voor rand-/afgeleidedetectie. Gebruikers moeten de kerneleigenschappen (teken, grootte en som van de coëfficiënten) valideren vóór productietoepassing. Documentatie van de kernelspecificaties is essentieel voor reproduceerbare workflows. De bereiken van de uitvoerwaarden hangen af van het kernelontwerp; de documentatie moet de verwachte uitvoerkenmerken en schalingsvereisten specificeren.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "weights": {
                "label": "Gewichten",
                "description": "2D-kernelgewichten als geneste arrays."
              },
              "kernel_center": {
                "label": "Kernelcentrum",
                "description": "Modus voor het kernelcentrum: center, upper-left, upper-right, lower-left, lower-right."
              },
              "normalize_weights": {
                "label": "Gewichten normaliseren",
                "description": "Indien true wordt genormaliseerd op de lokale som van de actieve gewichten."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "wiener_filter": {
            "name": "Wiener-filter",
            "description": "Het Wiener-filter voert adaptieve ruisreductie uit door de gemiddelde kwadratische fout tussen de gefilterde uitvoer en het werkelijke signaal te minimaliseren, uitgaande van kennis van de statistische eigenschappen van signaal en ruis. De implementatie schat de lokale signaal- en ruisvarianties binnen bewegende vensters en berekent filtercoëfficiënten die ruisonderdrukking en detailbehoud in evenwicht brengen: F = μ + (σ² - σₙ²)/σ² · (I - μ), waarbij μ het lokale gemiddelde is, σ² de signaalvariantie en σₙ² de ruisvariantie. Deze datagedreven aanpassing zorgt ervoor dat de filtersterkte reageert op lokale beeldkenmerken. Belangrijke kenmerken zijn automatische aanpassing aan lokale statistieken (vlakke gebieden worden sterk afgevlakt; gedetailleerde gebieden behouden hun structuur), bewezen effectiviteit op optische en SAR-beelden, interpreteerbare parameters op basis van de aannames van het ruismodel en rekenkundige haalbaarheid via scheidbare benaderingen. Wiener-filtering blinkt uit in de voorbewerking van satellietbeelden waarbij de ruis ruimtelijk varieert, SAR-spikkelreductie met behoud van puntdoelen, ontspikkelde multispectrale gegevens voor vegetatiekartering en ruisonderdrukking bij radar-optische fusie. De interpretatie van de uitvoer laat zien dat gebieden met hoge variantie (gedetailleerd) minimaal worden gefilterd, terwijl gebieden met lage variantie (ruisend) agressief worden gefilterd. De schatting van de ruisvariantie beïnvloedt de uitvoer: een onderschatte ruisvariantie leidt tot te weinig afvlakking; een overschatte variantie veroorzaakt overmatige afvlakking en detailverlies. De uitvoerbereiken benaderen de invoerbereiken; onderzoek verschilbeelden (origineel - gefilterd) om de ruisreductie te controleren. De Peak Signal-to-Noise Ratio (PSNR) en de Structural Similarity Index (SSIM) kwantificeren de effectiviteit van de filtering. Lokale variantiedrempels geven de impact van de verwerking aan: gebieden met een gedetecteerde variantieverhouding > 5 worden aanzienlijk gefilterd; verhoudingen < 1 worden minimaal gefilterd. Veelvoorkomende valkuilen zijn een onnauwkeurige schatting van de ruisvariantie (voer voor de schatting een dark-frame-analyse of analyse van homogene gebieden uit) en een keuze van de venstergrootte die de lokalisatie beïnvloedt. Pas toe vóór classificatie of kenmerkextractie om door ruis veroorzaakte misclassificatie van categorieën te verminderen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "radius": {
                "label": "Straal",
                "description": "Straal van het lokale Wiener-venster in pixels (standaard 2)."
              },
              "noise_variance": {
                "label": "Ruisvariantie",
                "description": "Optionele additieve ruisvariantie. Indien weggelaten wordt deze geschat uit de lokale variantiekaart."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "cloude_pottier_decomposition": {
            "name": "Cloude-Pottier-decompositie",
            "description": "De Cloude-Pottier-decompositie diagonaliseert de coherentiematrix van quad-polarimetrische SAR-gegevens en extraheert eigenwaarden en eigenvectoren die de verstrooiingsmechanismen karakteriseren. Entropie, anisotropie en de gemiddelde alfahoek, berekend uit de eigenvectoren, karakteriseren respectievelijk de wanorde van de verstrooiing, de dominantie van het mechanisme en het verstrooiingstype. De H-alfa-parameterruimte maakt classificatie van fysische verstrooiingsmechanismen mogelijk onafhankelijk van amplitudevariaties, door gebruik te maken van polarimetrische fase-informatie. Belangrijkste kenmerken: decompositie van quad-polarimetrische SAR; benutting van fase-informatie; fysisch betekenisvolle verstrooiingsparameters; scheidt verstrooiingsmechanismen; robuust tegen amplitudespikkels; maakt classificatie en interpretatie van doelen mogelijk. Toepassingen: herkenning van SAR-doelen; schatting van bosbiomassa; karakterisering van wetlands; detectie van schepen/voertuigen; landbedekkingsclassificatie; interpretatie van polarimetrische SAR-gegevens. Interpretatie van de uitvoer: de uitvoer omvat de entropie (mate van wanorde; 0=geordende verstrooiing, 1=willekeurig), de anisotropie (dominantie van het mechanisme 0-1) en de alfahoek (verstrooiingstype: ~45°=dipool, ~30°=oppervlak, ~60°=volume). H-alfa-spreidingsdiagrammen tonen clusterpatronen die verstrooiingstypen aangeven. Dubbele reflectie (stedelijk) vertoont een hoge alfa; oppervlakteverstrooiing (water) vertoont een lage alfa; volumeverstrooiing (bos) vertoont tussenliggende waarden.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Matrixrasters: diag3 [m11,m22,m33], compact full3x3 [m11,m22,m33,m12,m13,m23] of volledige rij-georiënteerde 9 rasters."
              },
              "matrix_format": {
                "label": "Matrixformaat",
                "description": "Formaat van de invoermatrix: diag3 (standaard bij 3 rasters) of full3x3."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonstering bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel 3-bands uitvoerraster [H, A, alpha_deg]."
              }
            }
          },
          "enhanced_lee_filter": {
            "name": "Verbeterd Lee-filter",
            "description": "Het Enhanced Lee-filter combineert het multiplicatieve model van Lee met een verfijnde variantieschatting en multischalige verwerking, waarmee een superieure spikkelreductie wordt bereikt met behoud van fijne details en randen in SAR-beelden. De implementatie gebruikt lokale statistieken die worden berekend via vensters van adaptieve grootte, integreert randdetectie op basis van de Laplace-operator en past ruimtelijk variërende filterparameters toe. De verbeterde formulering past toe: F = μ + w·(I - μ), waarbij w zich aanpast aan de nabijheid van randen: w→0 nabij randen (minimale filtering), w→1 in homogene gebieden (agressieve filtering). Belangrijke kenmerken zijn randadaptieve verwerking (behoud van grenzen), multischalige aanpassing van parameters, beter behoud van doelen dan het standaard Lee-filter en effectiviteit op SAR met veel ruis. Enhanced Lee-filtering blinkt uit in complexe SAR-scènes met talrijke elementen, toepassingen voor overstromingskartering waarbij de lokalisatie van randen cruciaal is, gebouwdetectie uit stedelijke SAR en multitemporele veranderingsanalyse. De interpretatie van de uitvoer toont randbehoud via verminderde filtering nabij overgangen: grenspixels behouden een grotere variantie dan verder gelegen pixels. Multischalige aanpassing wordt zichtbaar via histogramanalyse, die uitgesproken pieken toont die overeenkomen met scèneklassen. De uitvoerbereiken komen overeen met de invoer; vergelijking met het standaard Lee-filter toont minder randvervaging en behouden scherpte van doelen. De kwaliteit van de randdetectie heeft direct invloed op de uitvoer: sterke randen maken een goed grensbehoud mogelijk; zwakke randen kunnen overmatige afvlakking veroorzaken. Statistieken tonen een gecontroleerde afname van de variantie die ruisonderdrukking en detailbehoud in evenwicht brengt. Veelvoorkomende artefacten zijn een mogelijk blokkerig uiterlijk als multischalige overgangen zichtbaar worden en overmatig behoud als de randdetectie te agressief is. Volg de kwaliteit van de randkaart om het filtergedrag te valideren. Pas toe in uitgebreide SAR-analysepijplijnen waar meerdere elementen moeten worden behouden en randen scherp moeten blijven; bijzonder belangrijk voor voorbewerking voor machine learning die trainingsgegevens met duidelijke grenzen van elementen vereist.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "filter_size_x": {
                "label": "Filtergrootte X",
                "description": "Omgevingsbreedte in pixels (oneven geheel getal, standaard 11)."
              },
              "filter_size_y": {
                "label": "Filtergrootte Y",
                "description": "Omgevingshoogte in pixels (oneven geheel getal, standaard 11)."
              },
              "enl": {
                "label": "ENL",
                "description": "Parameter voor het equivalente aantal looks voor sigma-ratioweging (standaard 4.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "freeman_durden_decomposition": {
            "name": "Freeman-Durden-decompositie",
            "description": "De Freeman-Durden-decompositie kwantificeert de bijdragen van verstrooiingsmechanismen uit quad-polarimetrische SAR via een decompositie op een orthogonale basis in componenten voor oppervlaktereflectie, dubbele reflectie (stedelijk/dihedraal) en volumeverstrooiing (vegetatie/willekeurige media). Optimalisatie met niet-negatieve kleinste kwadraten beperkt de vermogensfracties, wat fysische realiseerbaarheid en interpreteerbaarheid garandeert. De vermogenskaarten in de uitvoer zijn direct gekoppeld aan terreineigenschappen: een hoge oppervlaktedominantie wijst op kale bodem/water, een hoge dubbele reflectie op stedelijke structuren, een hoog volume op bos/vegetatie. Belangrijkste kenmerken: fysisch interpreteerbare verstrooiingscomponenten; terreinspecifieke signaturen; beperkte optimalisatie; ondersteunt quad-polarimetrische SAR; robuust tegen spikkels; maakt doelspecifieke classificatie mogelijk. Toepassingen: classificatie van stedelijk en landelijk gebied; schatting van bosbiomassa; detectie van bodemvocht; detectie van overstromingen; monitoring van de gewasfenologie; landbedekkingskartering. Interpretatie van de uitvoer: het oppervlaktevermogen wijst op spiegelende reflectie van droog terrein/water; het vermogen van dubbele reflectie wijst op door de mens gemaakte structuren/stedelijke gebieden; het volumevermogen wijst op vegetatie/bos. Combinaties van componenten maken onderscheid tussen landbedekkingen mogelijk: hoog volume + lage dubbele reflectie wijst op bos; hoge dubbele reflectie + laag volume wijst op stedelijk gebied; een evenwichtig oppervlak/volume wijst op gemengd terrein.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Matrixrasters: diag3 [m11,m22,m33], compact full3x3 [m11,m22,m33,m12,m13,m23] of volledige rij-georiënteerde 9 rasters."
              },
              "matrix_format": {
                "label": "Matrixformaat",
                "description": "Formaat van de invoermatrix: diag3 (standaard bij 3 rasters) of full3x3."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonstering bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel 3-bands uitvoerraster [surface, double_bounce, volume]."
              },
              "output_clip_mask": {
                "label": "Uitsnijmasker uitvoeren",
                "description": "Optioneel uitvoerraster met clipmasker (1 waar niet-fysische clipping/hernormalisatie is opgetreden)."
              }
            }
          },
          "frost_filter": {
            "name": "Frost-filter",
            "description": "Het Frost-filter implementeert SAR-spikkelreductie met een multiplicatief ruismodel en adaptieve lokale statistieken, specifiek ontworpen voor radarbeelden waarin spikkels een gammaverdeling volgen in plaats van Gaussische ruis. De implementatie berekent het lokale gemiddelde en de lokale variantie en past vervolgens een adaptieve multiplicatieve weging toe: F = I · exp(-variance/(2·mean²)·distance²), waarbij de afstand de afwijking van de pixel ten opzichte van het lokale gemiddelde meet. Deze formulering vermindert de spikkelintensiteit omgekeerd evenredig met de geschatte coherentie. Belangrijke kenmerken zijn SAR-specifieke aanpassing (multiplicatief in plaats van additief ruismodel), behoud van puntdoelen en randen (coherente elementen), door de lokale variantie gestuurde aanpassing die bijstelling van de sterkte mogelijk maakt en bewezen effectiviteit op single-pol- en multi-pol-SAR-gegevens. Frost-filtering blinkt uit in SAR-beeldvoorbewerking voor classificatie (landbouwmonitoring, kartering van landgebruik), coherentiegewogen SAR-optische fusie, overstromingskartering met radar tijdens bewolking en workflows voor veranderingsdetectie met synthetic aperture radar. De interpretatie van de uitvoer laat zien dat gebieden met hoge variantie (mogelijk coherente doelen) minimaal worden gefilterd; gebieden met lage variantie (door spikkels gedomineerd) worden agressief gefilterd. De typische uitvoerbereiken komen overeen met de invoer; logaritmische schaling (decibel) wordt vaak vóór of na het filteren toegepast voor visualisatie. De verhouding tussen variantie en gemiddelde bepaalt direct de filtersterkte: een verhouding > 0.5 wijst op waarschijnlijke spikkels; een verhouding < 0.1 wijst op coherente doelen. Uitvoerartefacten zijn onder meer mogelijk detailverlies als de variantieschatting onbetrouwbaar is en een richtingsbias bij georiënteerde elementen. Verificatie via coherentiekaarten bevestigt het randbehoud in zones met hoge coherentie. Volg de uitvoerstatistieken: het gemiddelde moet over de filteriteraties stabiliseren; de variantie moet aanzienlijk afnemen. Pas toe vóór classificatie om de categorische nauwkeurigheid te verbeteren. Combineer met morfologische nabewerking om objectgrenzen te verfijnen en resterende spikkelfragmenten te verwijderen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "radius": {
                "label": "Straal",
                "description": "Straal van het lokale venster in pixels (standaard 2)."
              },
              "damping_factor": {
                "label": "Dempingsfactor",
                "description": "Frost-dempingsfactor die het exponentiële verval bepaalt (standaard 2.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "gamma_map_filter": {
            "name": "Gamma-MAP-filter",
            "description": "Het Gamma Map-filter voert SAR-spikkelreductie uit met een statistisch model op basis van de gammaverdeling, waarbij expliciet rekening wordt gehouden met de multiplicatieve spikkelkenmerken van het radarsignaal via parametrische aanpassing. De implementatie schat de lokale parameters van de gammaverdeling (vorm α en schaal β) uit beeldstatistieken en filtert vervolgens via een wegingsfunctie die de verdeling respecteert: F = I · [1 - (1-L/N)/(1 + L/N)·√(1 + N/L²)], waarbij L het equivalente aantal looks is (coherentiemaat) en N de geschatte parameter. Belangrijke kenmerken zijn theoretisch rigoureuze SAR-statistiek (de gammaverdeling is standaard voor radar), automatische schatting van het aantal looks waarvoor minimale invoer van de gebruiker nodig is, superieur randbehoud in vergelijking met uniforme filters en toepasbaarheid op single-look- en multi-look-SAR. Gamma Map-filtering blinkt uit in ruisonderdrukking van multitemporele SAR-stapels voor veranderingsdetectie in tijdreeksen, verbetering van de fasecoherentie bij interferometrische SAR (InSAR), voorbewerking voor polarimetrische SAR-decompositie en normalisatie van SAR-terugstrooiing in de bosbouw. De interpretatie van de uitvoer laat zien dat de filtersterkte zich aanpast aan de coherentie van de scène: gebieden met hoge coherentie (grote α) worden zacht gefilterd, waarbij doelen behouden blijven; gebieden met lage coherentie (kleine α) worden agressief gefilterd, waarbij spikkels worden onderdrukt. Het equivalente aantal looks L geeft de effectiviteit van de filtering aan: L=1 (minimale filtering) behoudt alle detail; L>5 levert een aanzienlijke afvlakking op. De schaling van de uitvoer blijft in de invoereenheden; logaritmische conversie vergemakkelijkt de visualisatie. Typische afnamen van de uitvoervariantie liggen tussen 50-80%, afhankelijk van het karakter van de scène en de keuze van het aantal looks. Volg de uitvoerhistogrammen op resterende spikkelsignaturen; bimodale verdelingen wijzen op een goede scheiding van scènecomponenten. Artefacten zijn onder meer mogelijke streepvorming bij georiënteerde elementen of een lichte textuurdegradatie als L wordt overschat. Valideer de filtering aan de hand van grondwaarheid in trainingsgebieden. Pas strategisch toe bij polarimetrische SAR-classificatie of InSAR-fasefiltering die coherentiegewogen versterking vereist.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "radius": {
                "label": "Straal",
                "description": "Straal van het lokale venster in pixels (standaard 2)."
              },
              "enl": {
                "label": "ENL",
                "description": "Equivalent aantal looks (standaard 1.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "h_alpha_wisart_classification": {
            "name": "H-Alpha-Wishart-classificatie",
            "description": "H/α/A-Wisart-classificatie combineert niet-gesuperviseerde zonering via partitionering van de H/α/A-parameterruimte met statistische Wishart-clustering om polarimetrische SAR-gegevens automatisch te classificeren in 9 fysisch betekenisvolle zones die overeenkomen met klassen van verstrooiingsmechanismen. Het algoritme ontvangt de parameters entropie (H), anisotropie (A) en alfa (α) uit de Cloude-Pottier-decompositie en verdeelt de 3D-kenmerkruimte (H,A,α) met vaste drempels in 9 gebieden: zone 1 (lage H, α~20°) vertegenwoordigt Bragg-reflectie op droge oppervlakken; zone 5 (H~0.7, α~45°) wijst op isotrope volumeverstrooiing in bossen; zone 9 (hoge H, α~80°) vertegenwoordigt dihedrale verstrooiing (dubbele reflectie) van stedelijke structuren. Binnen elke zone verfijnt Wishart-clustering optioneel de classificatie door statistische afstanden te berekenen in de multivariate polarimetrische ruimte, wat het onderscheid tussen vergelijkbare mechanismen verbetert. Belangrijke kenmerken zijn automatische, niet-gesuperviseerde classificatie zonder trainingssamples; 9 fysisch interpreteerbare klassen met gestandaardiseerde definities die wereldwijde vergelijkbaarheid mogelijk maken; een optionele werking in twee modi (alleen drempels voor snelheid, drempels+Wishart voor nauwkeurigheid); en ingebouwde betrouwbaarheidsmaten op basis van de afstand tot zonegrenzen en de Wishart-waarschijnlijkheid. Het hulpmiddel accepteert vooraf berekende (H,A,α)-beelden of roept automatisch de Cloude-Pottier-decompositie aan als ruwe matrices worden aangeleverd. De belangrijkste toepassingen zijn SAR-beeldsegmentatie en kaartgeneratie uit polarimetrische gegevens, niet-gesuperviseerde classificatie van landbedekkingstypen (water, landbouw, bos, stedelijk) rechtstreeks uit SAR-coherentiematrices, snelle beoordeling van de kwaliteit van polarimetrische gegevens via de verdeling van de zonebezetting en veranderingsdetectie die overgangen in verstrooiingsmechanismen blootlegt die wijzen op veranderingen in de landbedekking. Interpretatie van de uitvoer: de kaart met 9 klassen komt direct overeen met terreintypen; zones kunnen worden samengevoegd tot bredere categorieën (water/spiegelend = zones 1-2, vegetatie/volume = zones 4-6, stedelijk/dihedraal = zones 7-9). Niet-geclassificeerde pixels (klasse 0) wijzen op ongebruikelijke polarimetrische signaturen die nader onderzoek vereisen.",
            "params": {
              "h_raster": {
                "label": "H-raster",
                "description": "Invoerraster met entropie (H) uit de Cloude-Pottier-decompositie (bereik 0-1)."
              },
              "alpha_raster": {
                "label": "Alfa-raster",
                "description": "Invoerraster met alfa (α) uit de Cloude-Pottier-decompositie (graden, 0-90)."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien true (standaard) wordt alfa geherprojecteerd naar H wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonstering bij herprojectie: nearest, bilinear, cubic, lanczos."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerraster met 9-klassenlabels (1-9)."
              }
            }
          },
          "kuan_filter": {
            "name": "Kuan-filter",
            "description": "Voert Kuan-spikkelfiltering uit voor SAR-/radarbeelden met een parametrische benadering die lokale gemiddelden en de variantie schat. Adaptieve weging op basis van de ruisvariantie en de lokale beeldvariantie. Vergelijkbaar met Lee, maar met andere statistische aannames. Veelgebruikte operationele SAR-verwerkingsmethode. Evenwicht tussen rekenkundige efficiëntie en goede resultaten bij uiteenlopende SAR-gegevens. Kuan-filtering gaat uit van Gaussische statistiek met een multiplicatief spikkelmodel. Past zich aan de lokale variantie aan en maakt onderscheid tussen signaalvariatie en spikkels. Bijzonder effectief voor heterogene SAR-beelden (gemengde heldere en donkere elementen). Rekenkundig redelijk. Vormt een praktisch compromis tussen verfijning en rekenkosten. Standaard in veel SAR-verwerkingssystemen. Toepassingen: (1) operationele SAR-ontspikkeling, (2) voorbewerking van SAR met gemengde terugstrooiing, (3) voorbewerking van RadarSat/Sentinel-1, (4) routinematige SAR-verwerking. Typische parameters: filter_size=5×7 tot 7×7.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "radius": {
                "label": "Straal",
                "description": "Straal van het lokale venster in pixels (standaard 2)."
              },
              "enl": {
                "label": "ENL",
                "description": "Equivalent aantal looks (standaard 1.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "refined_lee_filter": {
            "name": "Verfijnd Lee-filter",
            "description": "Het Refined Lee-filter verbetert standaard Lee-filtering via een verbeterde coherentieschatting en randbehoudende aanpassingen, met verfijnde lokale statistieken en richtingsanalyse voor een superieure spikkelreductie. De implementatie breidt het model van Lee uit door de randoriëntatie te detecteren, gerichte vensters toe te passen die op grenzen zijn uitgelijnd en verfijnde coherentieschattingen te berekenen. Wiskundig: F = μ + √(σ_p²/(σ_I²))·(I - μ) met een richtingsgebonden variantieberekening. Deze verfijning verbetert het randbehoud met behoud van de spikkelonderdrukking. Belangrijke kenmerken zijn richtingsgevoeligheid (past de filterrichting aan beeldstructuren aan), een verbeterde coherentieschatting (gebruikt anisotrope vensters), superieur randbehoud ten opzichte van het standaard Lee-filter en effectiviteit op complexe SAR-scènes. Refined Lee-filtering blinkt uit in veranderingsdetectie die scherpe grenzen vereist, voorbereiding van InSAR-coherentiekaarten, polarimetrische SAR-verwerking waarbij het behoud van doelen cruciaal is en SAR-analyse in de bosbouw die bomen van de achtergrond onderscheidt. De interpretatie van de uitvoer laat zien dat de filtering de randoriëntatie respecteert: horizontale randen worden horizontaal gefilterd; verticale randen verticaal; diagonale randen diagonaal. Deze gerichte aanpassing minimaliseert filtering over echte grenzen heen. Coherentieschattingen zijn doorgaans nauwkeuriger dan bij het standaard Lee-filter, wat filterartefacten vermindert. De uitvoerbereiken komen overeen met de invoer; de gerichte aanpassing wordt zichtbaar bij visuele inspectie (randen blijven scherper dan bij het standaard Lee-filter). Statistieken tonen een beter behoud van gebieden met hoog contrast. Richtingscomponenten tonen de oriëntatie van de scènestructuur; een sterke richtingsbias wijst op een overheersende oriëntatie van elementen. Veelvoorkomende artefacten nemen af ten opzichte van het standaard Lee-filter, vooral nabij randen en complexe elementen. Artefacten zijn onder meer mogelijke overaanpassing als de richtingsschatting faalt en artefacten van gerichte vensters bij zwakke grenzen. Volg de coherentiekaarten om de nauwkeurigheid van de randdetectie te valideren. Pas strategisch toe bij SAR-classificatie waarbij gerichte structuren (bijv. bossen, uitgelijnde landbouwpercelen) behouden moeten blijven.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "filter_size_x": {
                "label": "Filtergrootte X",
                "description": "Omgevingsbreedte in pixels (oneven geheel getal, standaard 11)."
              },
              "filter_size_y": {
                "label": "Filtergrootte Y",
                "description": "Omgevingshoogte in pixels (oneven geheel getal, standaard 11)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "wisart_iterative_clustering": {
            "name": "Iteratieve Wishart-clustering",
            "description": "Iteratieve Wishart-clustering voert een niet-gesuperviseerde classificatie van polarimetrische SAR-gegevens uit door clustercentra iteratief te verfijnen met de complexe statistische Wishart-afstandsmaat, die de gelijkenis meet in multivariate polarimetrische kansverdelingen. Het algoritme wordt geïnitialiseerd vanuit de zones van de H/α-decompositie (die 9 startclusters met een bekende fysische interpretatie leveren) en doorloopt vervolgens een lus in de trant van expectation-maximization: (1) bereken de Wishart-afstand van de geschatte coherentiematrix van elke pixel tot elk clusterprototype; (2) wijs pixels opnieuw toe aan het dichtstbijzijnde cluster; (3) werk de clusterprototypes bij door de matrices van de toegewezen pixels te middelen; (4) herhaal tot convergentie (herindelingsgraad van pixels <convergence_threshold) of tot max_iterations is bereikt. Belangrijke kenmerken zijn een statistisch kader met complexe waarden dat de structuur van polarimetrische gegevens correct verwerkt, in tegenstelling tot de euclidische afstand; automatische initialisatie vanuit interpreteerbare H/α-zones, wat de afhankelijkheid van willekeurige startwaarden vermindert; convergentiebewaking per pixel die een adaptieve sturing van de iteraties mogelijk maakt; optionele invoer van vooraf berekende (H,α) of automatische matrixberekening uit ruwe coherentie-invoer; en ingebouwde robuustheid tegen single-look-spikkels dankzij compatibiliteit met multi-lookverwerking. Het hulpmiddel ondersteunt zowel conventionele als compacte matrixformaten. De belangrijkste toepassingen zijn classificatie van polarimetrische SAR-beelden die verfijnde landbedekkingskaarten oplevert die verder gaan dan de H/α-indeling in 9 zones, iteratieve verfijning van een initiële niet-gesuperviseerde classificatie voor cartografie, geautomatiseerde beoordeling van de kwaliteit van polarimetrische gegevens via stabiliteitsmaten van clusters en classificatie van SAR-tijdreeksen die temporele veranderingsdetectie mogelijk maakt via analyse van clusterovergangen. Interpretatie van de uitvoer: een verfijnde clusterkaart (doorgaans 3-9 klassen, afhankelijk van de convergentie) met goed gescheiden groepen verstrooiingsmechanismen. De convergentiegeschiedenis levert een betrouwbaarheidsmaat: snelle vroege convergentie wijst op een stabiele klassescheiding; trage convergentie wijst op dubbelzinnige pixels die baat hebben bij analyse met meerdere opnamen of veranderingsdetectie. Integratie met H/α-zones maakt het opstellen van een legenda mogelijk: behoud waar mogelijk de overeenkomst met de H/α-zones om de interpreteerbaarheid te bewaren.",
            "params": {
              "h_raster": {
                "label": "H-raster",
                "description": "Invoerraster met entropie (H) (bereik 0-1)."
              },
              "alpha_raster": {
                "label": "Alfa-raster",
                "description": "Invoerraster met alfa (α) (graden, 0-90)."
              },
              "max_iterations": {
                "label": "Maximaal aantal iteraties",
                "description": "Maximaal aantal clusteriteraties (standaard 10)."
              },
              "convergence_threshold": {
                "label": "Convergentiedrempel",
                "description": "Convergentiecriterium: fractie ongewijzigde pixels (standaard 0.99)."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien true (standaard) wordt alfa geherprojecteerd naar H wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonstering bij herprojectie: nearest, bilinear, cubic, lanczos."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerraster met clusterlabels."
              }
            }
          },
          "yamaguchi_4component_decomposition": {
            "name": "Yamaguchi-4-componentendecompositie",
            "description": "De Yamaguchi-decompositie in 4 componenten ontleedt dubbelgepolariseerde synthetic aperture radar-gegevens in fysisch interpreteerbare componenten die oppervlakteverstrooiing, dubbele-reflectieverstrooiing (volume), helixverstrooiing en volumeverstrooiing vertegenwoordigen, met behulp van modelgebaseerde polarimetrische analyse met optionele opname van een DEM. De decompositie scheidt verschillende terugstrooiingsmechanismen via eigenwaardeanalyse van polarimetrische covariantiematrices en interpreteert de componenten als oppervlaktereflectie (Bragg-verstrooiing), dubbele reflectie van hoekreflectoren, helixvormige polarisatierotatie (ongebruikelijk) en diffuse volumeverstrooiing door vegetatie of ruwe oppervlakken. Opname van een externe DEM schat de topografische verstrooiingsbijdrage, wat een beter onderscheid tussen echte volumeverstrooiing en topografische effecten mogelijk maakt. Belangrijke kenmerken zijn een modelgebaseerde fysische interpretatie die zinvolle extractie van geofysische parameters mogelijk maakt, optionele topografische correctie op basis van een DEM die de nauwkeurigheid van de componenten boven terrein verbetert, niet-negatieve beperkingen op componenten die fysisch onmogelijke decompositieresultaten voorkomen en automatische verwerking van gegevensgaten en layover-gebieden. Toepassingen omvatten schatting van bosbiomassa uit de volumeverstrooiingscomponent, stedelijke kartering waarbij gebruik wordt gemaakt van de dominantie van dubbele reflectie in bebouwde gebieden, schatting van bodemvocht uit het gedrag van oppervlakteverstrooiing en detectie van aardverschuivingen/veranderingen via veranderingen in componentverhoudingen. De uitvoer van de Yamaguchi-decompositie maakt geofysische interpretatie mogelijk. De uitvoer bestaat uit beelden van de vier componenten (verstrooiingsvermogen van oppervlak, dubbele reflectie, helix en volume), kwaliteitsmaten van de decompositie die de nauwkeurigheid van de fit kwantificeren, indices van het gemiddelde verstrooiingstype die de karakterisering van landbedekking vergemakkelijken en optionele coherentie-/entropiediagnostiek als leidraad voor de beoordeling van de gegevenskwaliteit.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Matrixrasters: 6 compacte [m11,m22,m33,m12,m13,m23] of 9 rij-georiënteerde elementen van de volledige complexe 3x3-matrix."
              },
              "matrix_format": {
                "label": "Matrixformaat",
                "description": "Formaat van de invoermatrix: full3x3 (standaard) voor Hermitische matrices met reële/imaginaire delen."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonstering bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel 4-bands uitvoerraster [surface, double_bounce, volume, helix]."
              }
            }
          },
          "ascii_to_las": {
            "name": "ASCII naar LAS",
            "description": "Formaatconversie: batchverwerking van CSV→LAS. Parseert door spaties/komma's/tabs gescheiden tekstbestanden (x,y,z,intensity,class,returns,angle,time) naar LAS met EPSG-metadata.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Array van invoer-ASCII-bestandspaden."
              },
              "pattern": {
                "label": "Patroon",
                "description": "Veldpatroon, bijv. 'x,y,z,i,c,rn,nr,sa'."
              },
              "epsg_code": {
                "label": "EPSG-code",
                "description": "EPSG-code voor de CRS-metadata van het uitvoer-LAS."
              },
              "output_directory": {
                "label": "Uitvoermap",
                "description": "Optionele uitvoermap voor de gegenereerde LAS-bestanden."
              }
            }
          },
          "las_to_ascii": {
            "name": "LAS naar ASCII",
            "description": "Formaatconversie: uitvoer van LAS→CSV. Exporteert alle puntattributen naar gescheiden tekst voor import in spreadsheets/databases of voor scripting.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Optioneel invoer-LiDAR-pad of getypt LiDAR-object. Indien weggelaten wordt in batchmodus over de LiDAR-bestanden in de huidige map gewerkt."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-CSV-pad (alleen in de modus met één invoer)."
              }
            }
          },
          "las_to_shapefile": {
            "name": "LAS naar Shapefile",
            "description": "Zet LAS/LAZ-puntenwolken om in vectorpuntshapefiles.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Optioneel invoer-LiDAR-pad of getypt LiDAR-object. Indien weggelaten wordt in batchmodus over de LiDAR-bestanden in de huidige map gewerkt."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoervectorpad voor de modus met één invoer."
              },
              "output_multipoint": {
                "label": "Multipoint uitvoeren",
                "description": "Indien true wordt een multipuntgeometrie met één object uitgevoerd; anders wordt één puntobject per punt uitgevoerd."
              }
            }
          },
          "lidar_colourize": {
            "name": "LiDAR inkleuren",
            "description": "Kent puntkleuren toe vanuit een beeld: bemonstert een overlappende orthofoto/een gegeorefereerd beeld op elke puntlocatie en slaat de waarde op als RGB. Fotorealistische weergave van puntenwolken.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object."
              },
              "image": {
                "label": "Beeld",
                "description": "Pad van het invoerbeeldraster of getypt rasterobject."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-LiDAR-pad."
              }
            }
          },
          "lidar_join": {
            "name": "LiDAR samenvoegen",
            "description": "Voegt meerdere LiDAR-bestanden samen: koppelt puntenwolken aan elkaar met behoud van attributen en consistentie van de headers. Batchverwerking over tegelcollecties.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Array van invoer-LiDAR-paden of getypte LiDAR-objecten."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-LiDAR-pad."
              }
            }
          },
          "lidar_shift": {
            "name": "LiDAR verschuiven",
            "description": "Verschuift de coördinaten van een puntenwolk: x/y/z-verschuivingen voor datumverschuivingen, registratiecorrecties of transformaties van het coördinatenstelsel. Coördinaten in bulk aanpassen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object. Indien weggelaten wordt in batchmodus over de LiDAR-bestanden in de huidige map gewerkt."
              },
              "x_shift": {
                "label": "X-verschuiving",
                "description": "Verschuiving die bij de x-coördinaten wordt opgeteld."
              },
              "y_shift": {
                "label": "Y-verschuiving",
                "description": "Verschuiving die bij de y-coördinaten wordt opgeteld."
              },
              "z_shift": {
                "label": "Z-verschuiving",
                "description": "Verschuiving die bij de z-coördinaten wordt opgeteld."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-LiDAR-pad."
              }
            }
          },
          "lidar_tile": {
            "name": "LiDAR tegelen",
            "description": "Splitst een puntenwolk in regelmatige rastertegels: partitioneert op x/y-omvang met instelbare afmetingen en een minimale puntdrempel. Standaard voor gegevensdistributie en -verwerking.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object."
              },
              "tile_width": {
                "label": "Tegelbreedte",
                "description": "Tegelbreedte in x-eenheden (standaard 1000)."
              },
              "tile_height": {
                "label": "Tegelhoogte",
                "description": "Tegelhoogte in y-eenheden (standaard 1000)."
              },
              "origin_x": {
                "label": "Oorsprong X",
                "description": "X-coördinaat van de rasteroorsprong (standaard 0)."
              },
              "origin_y": {
                "label": "Oorsprong Y",
                "description": "Y-coördinaat van de rasteroorsprong (standaard 0)."
              },
              "min_points_in_tile": {
                "label": "Minimaal aantal punten per tegel",
                "description": "Minimaal aantal punten vereist om een tegel weg te schrijven (standaard 2)."
              },
              "output_laz_format": {
                "label": "LAZ-formaat uitvoeren",
                "description": "Indien true worden .laz-uitvoerbestanden geschreven; anders .las (standaard true)."
              },
              "output_directory": {
                "label": "Uitvoermap",
                "description": "Optionele map voor de tegeluitvoer; standaard <input_dir>/<input_stem>/."
              }
            }
          },
          "lidar_tophat_transform": {
            "name": "LiDAR-top-hat-transformatie",
            "description": "Extraheert de hoogte boven maaiveld via een morfologische witte top-hat: erosie + dilatatie benadert de lokale grond, residu = hoogte. Normalisatie zonder grond.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object."
              },
              "search_radius": {
                "label": "Zoekstraal",
                "description": "Omgevingsstraal voor erosie en dilatatie."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-LiDAR-pad."
              }
            }
          },
          "recover_flightline_info": {
            "name": "Vluchtlijninformatie herstellen",
            "description": "Reconstrueert vluchtlijn-ID's uit onderbrekingen in de GPS-tijd: leidt de grenzen van vluchtlijnen af en markeert ze in point-source-ID/user-data/RGB. Herstel van vliegroutes.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object."
              },
              "max_time_diff": {
                "label": "Maximaal tijdsverschil",
                "description": "Maximale GPS-tijdsonderbreking binnen een vluchtlijn voordat een nieuwe vluchtlijn begint."
              },
              "pt_src_id": {
                "label": "Puntbron-ID",
                "description": "Indien true worden de afgeleide vluchtlijn-ID's naar point_source_id geschreven."
              },
              "user_data": {
                "label": "Gebruikersgegevens",
                "description": "Indien true worden de afgeleide vluchtlijn-ID's naar user_data geschreven (modulo 256)."
              },
              "rgb": {
                "label": "RGB",
                "description": "Indien true wordt per afgeleide vluchtlijn een willekeurige kleur toegekend."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-LiDAR-pad."
              }
            }
          },
          "select_tiles_by_polygon": {
            "name": "Tegels selecteren op polygoon",
            "description": "Batchselectie van tegels: kopieert LAS/LAZ-tegels uit een map naar de uitvoer wanneer bemonsteringspunten van de tegel polygoongrenzen snijden. Gegevensextractie op basis van een interessegebied (AOI).",
            "params": {
              "input_directory": {
                "label": "Invoermap",
                "description": "Invoermap met LiDAR-tegels."
              },
              "output_directory": {
                "label": "Uitvoermap",
                "description": "Uitvoermap voor de geselecteerde LiDAR-tegels."
              },
              "polygons": {
                "label": "Polygonen",
                "description": "Pad van de invoerpolygoonvector of getypt vectorobject."
              }
            }
          },
          "sort_lidar": {
            "name": "LiDAR sorteren",
            "description": "Ordent punten op meerdere criteria: x/y/z met bingroottes, plus afgeleide attributen. Optimaliseert de ruimtelijke samenhang voor compressie en tegelverwerking.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object. Indien weggelaten wordt in batchmodus over de LiDAR-bestanden in de huidige map gewerkt."
              },
              "sort_criteria": {
                "label": "Sorteercriteria",
                "description": "Expressie met sorteercriteria, bijv. 'x 100, y 100, z 10, scan_angle'."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-LiDAR-pad."
              }
            }
          },
          "split_lidar": {
            "name": "LiDAR splitsen",
            "description": "Verdeelt punten per attribuut over afzonderlijke bestanden: groepeert op klasse, source-id, tijdvenster, ruimtelijke bin of aantal punten. Gegevensstratificatie en -distributie.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object. Indien weggelaten wordt in batchmodus over de LiDAR-bestanden in de huidige map gewerkt."
              },
              "split_criterion": {
                "label": "Splitsingscriterium",
                "description": "Groeperingscriterium: num_pts, x, y, z, intensity, class, user_data, point_source_id, scan_angle of time."
              },
              "interval": {
                "label": "Interval",
                "description": "Bingrootte voor numerieke criteria; bij num_pts is dit het aantal punten per uitvoerbestand."
              },
              "min_pts": {
                "label": "Minimaal aantal punten",
                "description": "Minimaal aantal punten vereist om een gesplitst uitvoerbestand weg te schrijven (standaard 5)."
              },
              "output_directory": {
                "label": "Uitvoermap",
                "description": "Optionele map voor de gesplitste uitvoer."
              }
            }
          },
          "classify_buildings_in_lidar": {
            "name": "Gebouwen classificeren in LiDAR",
            "description": "Markeert punten binnen gebouwcontouren: kent klasse 6 toe aan alle punten die ruimtelijk binnen de polygoongrenzen liggen. Vectorgebaseerde gebouwextractie.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object."
              },
              "buildings": {
                "label": "Gebouwen",
                "description": "Pad van de invoerpolygoonvector met gebouwcontouren of getypt vectorobject."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-LiDAR-pad."
              }
            }
          },
          "classify_lidar": {
            "name": "LiDAR classificeren",
            "description": "Geautomatiseerde puntclassificatie: grond, vegetatie en gebouwen via lokale geometrie (lineariteit, planariteit) en RANSAC-vlakfitting. Geometriegebaseerde segmentatie.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object. Indien weggelaten wordt in batchmodus over de LiDAR-bestanden in de huidige map gewerkt."
              },
              "search_radius": {
                "label": "Zoekstraal",
                "description": "Omgevingsstraal (standaard 2.5)."
              },
              "grd_threshold": {
                "label": "Grondpuntdrempel",
                "description": "Hoogte boven het lokale minimum die als grond wordt beschouwd (standaard 0.1)."
              },
              "oto_threshold": {
                "label": "OTO-drempel",
                "description": "Hoogte boven het lokale minimum die als niet-terreinobject wordt beschouwd (standaard 1.0)."
              },
              "linearity_threshold": {
                "label": "Lineariteitsdrempel",
                "description": "Lineariteitsdrempelwaarde voor de laatste screening van ongeclassificeerde punten (standaard 0.5)."
              },
              "planarity_threshold": {
                "label": "Planariteitsdrempel",
                "description": "Planariteitsdrempelwaarde voor segmentatie en verfijning (standaard 0.85)."
              },
              "num_iter": {
                "label": "Aantal iteraties",
                "description": "Aantal lokale RANSAC-iteraties voor de planariteits-/lineariteitsschattingen (standaard 30)."
              },
              "facade_threshold": {
                "label": "Gevelddrempel",
                "description": "Buurafstand bij het labelen van gebouwgevels (standaard 0.5)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-LiDAR-pad."
              }
            }
          },
          "classify_overlap_points": {
            "name": "Overlappende punten classificeren",
            "description": "Identificeert overlappingen van vluchtlijnen: detecteert rastercellen met meerdere point-source-ID's en markeert of verwijdert overlappende punten. Kwaliteitscontrole voor validatie van de opname.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object."
              },
              "resolution": {
                "label": "Resolutie",
                "description": "Rastercelgrootte voor de overlapanalyse."
              },
              "overlap_criterion": {
                "label": "Overlapcriterium",
                "description": "max scanhoek, niet min point source id, niet min tijd, of meerdere point source-ID's."
              },
              "filter": {
                "label": "Filter",
                "description": "Indien true worden overlappunten verwijderd; anders worden overlappunten als klasse 12 geclassificeerd."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-LiDAR-pad."
              }
            }
          },
          "clip_lidar_to_polygon": {
            "name": "LiDAR uitsnijden op polygoon",
            "description": "Ruimtelijke subset van een puntenwolk: behoudt punten binnen polygoongrenzen. Vectorgebaseerde puntselectie voor extractie van het studiegebied.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object."
              },
              "polygons": {
                "label": "Polygonen",
                "description": "Pad van de invoerpolygoonvector of getypt vectorobject."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-LiDAR-pad."
              }
            }
          },
          "erase_polygon_from_lidar": {
            "name": "Polygoon wissen uit LiDAR",
            "description": "Verwijdert LiDAR-punten die binnen polygoongeometrie vallen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object."
              },
              "polygons": {
                "label": "Polygonen",
                "description": "Pad van de invoerpolygoonvector of getypt vectorobject."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-LiDAR-pad."
              }
            }
          },
          "filter_lidar": {
            "name": "LiDAR filteren",
            "description": "Verwijdert punten via een expressie: booleaanse logica op attributen (class, elevation, return_number, scan_angle, noise_flag, enz.). Flexibele puntselectie.",
            "params": {
              "statement": {
                "label": "Instructie",
                "description": "Booleaanse expressie, bijv. '!is_noise && class == 2' of 'NOT is_noise AND class == 2'."
              },
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object. Indien weggelaten wordt in batchmodus over de LiDAR-bestanden in de huidige map gewerkt."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-LiDAR-pad voor de modus met één invoer."
              }
            }
          },
          "filter_lidar_by_percentile": {
            "name": "LiDAR filteren op percentiel",
            "description": "Selecteert per cel het punt met een bepaalde percentielrang: behoudt één punt per rasterblok op het opgegeven hoogtepercentiel. Decimatie met een representatieve steekproef.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object. Indien weggelaten wordt in batchmodus over de LiDAR-bestanden in de huidige map gewerkt."
              },
              "percentile": {
                "label": "Percentiel",
                "description": "Percentiel in [0, 100] (0=laagste, 100=hoogste)."
              },
              "block_size": {
                "label": "Blokgrootte",
                "description": "Rasterblokgrootte voor de lokale percentielselectie (standaard 1.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-LiDAR-pad."
              }
            }
          },
          "filter_lidar_by_reference_surface": {
            "name": "LiDAR filteren op referentieoppervlak",
            "description": "Extraheert punten ten opzichte van een referentieoppervlak: z<oppervlak, z>oppervlak of binnen een drempel. Identificeert vegetatie boven het DTM of punten onder het oppervlak.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object."
              },
              "ref_surface": {
                "label": "Referentieoppervlak",
                "description": "Pad van het referentieraster of getypt rasterobject."
              },
              "query": {
                "label": "Query",
                "description": "Querytype: within, <, <=, >, >= (standaard within)."
              },
              "threshold": {
                "label": "Drempelwaarde",
                "description": "Absolute z-afstandsdrempelwaarde gebruikt door query=within."
              },
              "classify": {
                "label": "Classificeren",
                "description": "Indien true worden punten geclassificeerd; anders wordt gefilterd en worden alleen overeenkomsten behouden."
              },
              "true_class_value": {
                "label": "Klassewaarde bij waar",
                "description": "Klassewaarde toegekend aan overeenkomende punten in classificatiemodus."
              },
              "false_class_value": {
                "label": "Klassewaarde bij onwaar",
                "description": "Klassewaarde toegekend aan niet-overeenkomende punten in classificatiemodus."
              },
              "preserve_classes": {
                "label": "Klassen behouden",
                "description": "Indien true worden niet-overeenkomende klassen behouden in classificatiemodus."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-LiDAR-pad."
              }
            }
          },
          "filter_lidar_classes": {
            "name": "LiDAR-klassen filteren",
            "description": "Verwijdert punten op classificatie: filtert ongewenste LAS-klassen weg (ruis, water, gebouwen, enz.). Essentiële voorbewerking voor workflows voor terreinconditionering.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object. Indien weggelaten wordt in batchmodus over de LiDAR-bestanden in de huidige map gewerkt."
              },
              "excluded_classes": {
                "label": "Uitgesloten klassen",
                "description": "Uit te sluiten klassen (array of kommagescheiden tekst)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-LiDAR-pad."
              }
            }
          },
          "filter_lidar_noise": {
            "name": "LiDAR-ruis filteren",
            "description": "Verwijdert ASPRS-ruisklassen: filtert klasse 7 (lage ruis) en klasse 18 (hoge ruis) weg. Standaardopschoning van puntenwolken voor gegevens die voldoen aan LAS 1.4.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object. Indien weggelaten wordt in batchmodus over de LiDAR-bestanden in de huidige map gewerkt."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-LiDAR-pad."
              }
            }
          },
          "filter_lidar_scan_angles": {
            "name": "LiDAR filteren op scanhoek",
            "description": "Verwijdert schuine LiDAR-returns: filtert punten op een drempel voor de scanhoek. Verbetert de verticale nauwkeurigheid door returns onder een scherende hoek met positiefouten te verwijderen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object. Indien weggelaten wordt in batchmodus over de LiDAR-bestanden in de huidige map gewerkt."
              },
              "threshold": {
                "label": "Drempelwaarde",
                "description": "Maximale absolute scanhoek (gehele LAS-eenheden; 1 eenheid = 0.006°). Vereist."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-LiDAR-pad."
              }
            }
          },
          "height_above_ground": {
            "name": "Hoogte boven maaiveld",
            "description": "Normaliseert via de geometrie van de puntenwolk: berekent de hoogte van elk punt boven de dichtstbijzijnde lagere buur van de grondklasse. Lokaal terreinoppervlak zonder rasterreferentie.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-LiDAR-pad."
              }
            }
          },
          "improved_ground_point_filter": {
            "name": "Verbeterd grondpuntfilter",
            "description": "Grondpuntfilteringspijplijn in meerdere fasen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad."
              },
              "block_size": {
                "label": "Blokgrootte",
                "description": "Rastercelgrootte in xy-eenheden."
              },
              "max_building_size": {
                "label": "Maximale gebouwgrootte",
                "description": "Maximale verwachte gebouwbreedte in xy-eenheden."
              },
              "slope_threshold": {
                "label": "Hellingsdrempel",
                "description": "Minimale randhelling in graden."
              },
              "elev_threshold": {
                "label": "Hoogtedrempel",
                "description": "Hoogteafstandsdrempelwaarde."
              },
              "classify": {
                "label": "Classificeren",
                "description": "Punten classificeren in plaats van filteren."
              },
              "preserve_classes": {
                "label": "Klassen behouden",
                "description": "Bestaande klassen behouden in classificatiemodus."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-LiDAR-pad."
              }
            }
          },
          "individual_tree_segmentation": {
            "name": "Segmentatie van individuele bomen",
            "description": "Segmenteert vegetatiepunten in boomkronen: mean-shift-clustering met een adaptieve bandbreedte op basis van de lokale geometrie van het kronendak. Afbakening van bomen op inventarisatieniveau.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object."
              },
              "only_use_veg": {
                "label": "Alleen vegetatie gebruiken",
                "description": "Indien true worden alleen vegetatieklassen verwerkt (standaard true)."
              },
              "veg_classes": {
                "label": "Vegetatieklassen",
                "description": "Vegetatieklassen als kommagescheiden tekst of array van gehele getallen (standaard '3,4,5')."
              },
              "min_height": {
                "label": "Minimale hoogte",
                "description": "Minimale punthoogte voor segmentatie (standaard 2.0)."
              },
              "max_height": {
                "label": "Maximale hoogte",
                "description": "Optionele maximale punthoogte."
              },
              "bandwidth_min": {
                "label": "Minimale bandbreedte",
                "description": "Minimale horizontale bandbreedte (standaard 1.0)."
              },
              "bandwidth_max": {
                "label": "Maximale bandbreedte",
                "description": "Maximale horizontale bandbreedte (standaard 6.0)."
              },
              "adaptive_bandwidth": {
                "label": "Adaptieve bandbreedte",
                "description": "Horizontale bandbreedte per zaadpunt schatten uit de lokale kroongeometrie (standaard true)."
              },
              "adaptive_neighbors": {
                "label": "Adaptieve buren",
                "description": "Aantal buren voor de adaptieve lokale dichtheidsschaal (standaard 24)."
              },
              "adaptive_sector_count": {
                "label": "Adaptief aantal sectoren",
                "description": "Aantal hoeksectoren voor de lokale schatting van de kroonstraal (standaard 8)."
              },
              "grid_acceleration": {
                "label": "Rasterversnelling",
                "description": "Rasterbenadering in MeanShift++-stijl gebruiken voor snellere modusupdates (standaard false)."
              },
              "grid_cell_size": {
                "label": "Rastercelgrootte",
                "description": "Rastercelgrootte voor versnelde modusupdates (standaard 0.5)."
              },
              "grid_refine_exact": {
                "label": "Exacte rasterverfijning",
                "description": "Korte verfijning met exacte buren uitvoeren na de rasterversnelling (standaard false)."
              },
              "grid_refine_iterations": {
                "label": "Iteraties rasterverfijning",
                "description": "Maximaal aantal iteraties voor exacte verfijning na de rastermodusupdates (standaard 2)."
              },
              "tile_size": {
                "label": "Tegelgrootte",
                "description": "Optionele tegelgrootte voor de planning van zaadpunten; <=0 schakelt tegeling uit (standaard 0.0)."
              },
              "tile_overlap": {
                "label": "Tegeloverlap",
                "description": "Overlapbreedte van tegels bij getegelde planning van zaadpunten (standaard 0.0)."
              },
              "vertical_bandwidth": {
                "label": "Verticale bandbreedte",
                "description": "Verticale kernelbandbreedte (standaard 5.0)."
              },
              "max_iterations": {
                "label": "Maximaal aantal iteraties",
                "description": "Maximaal aantal mean-shift-iteraties per zaadpunt (standaard 30)."
              },
              "convergence_tol": {
                "label": "Convergentietolerantie",
                "description": "Convergentietolerantie voor de verschuivingsgrootte (standaard 0.05)."
              },
              "min_cluster_points": {
                "label": "Minimaal aantal clusterpunten",
                "description": "Minimaal aantal punten per behouden boomcluster (standaard 50)."
              },
              "mode_merge_dist": {
                "label": "Samenvoegafstand modi",
                "description": "Afstandsdrempelwaarde voor het samenvoegen van geconvergeerde modi (standaard 0.8)."
              },
              "threads": {
                "label": "Threads",
                "description": "Overschrijving van het aantal threads (0 gebruikt de standaard Rayon-pool)."
              },
              "simd": {
                "label": "SIMD",
                "description": "SIMD-ondersteunde rekenkunde inschakelen in de wegingslussen (standaard true)."
              },
              "output_id_mode": {
                "label": "ID-uitvoermodus",
                "description": "Codering van het uitvoersegment-id {rgb|user_data|point_source_id|rgb+user_data|rgb+point_source_id} (standaard rgb)."
              },
              "output_sidecar_csv": {
                "label": "Sidecar-CSV uitvoeren",
                "description": "Indien true wordt een CSV met point_index,segment_id naast de LiDAR-uitvoer geschreven."
              },
              "seed": {
                "label": "Seed",
                "description": "Deterministisch zaad voor de kleurtoewijzing (standaard 1)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-LiDAR-pad."
              }
            }
          },
          "lidar_classify_subset": {
            "name": "LiDAR-subset classificeren",
            "description": "Draagt de classificatie over: markeert basispunten die overeenkomen met locaties in de subsetwolk. Maakt ruimtelijke herclassificatie mogelijk op basis van aanvullende puntensets.",
            "params": {
              "base": {
                "label": "Basis",
                "description": "Basis-LiDAR-pad of getypt LiDAR-object."
              },
              "subset": {
                "label": "Deelverzameling",
                "description": "Subset-LiDAR-pad of getypt LiDAR-object."
              },
              "subset_class_value": {
                "label": "Klassewaarde subset",
                "description": "Classificatiewaarde toegekend aan overeenkomende subsetpunten (0-18)."
              },
              "nonsubset_class_value": {
                "label": "Klassewaarde niet-subset",
                "description": "Optionele klasse voor niet-overeenkomende punten (0-18). Gebruik 255 om bestaande klassen te behouden."
              },
              "tolerance": {
                "label": "Tolerantie",
                "description": "Tolerantie voor 3D-dichtstbijzijnde-buurkoppeling in kaarteenheden."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-LiDAR-pad."
              }
            }
          },
          "lidar_elevation_slice": {
            "name": "LiDAR-hoogtedoorsnede",
            "description": "Extraheert punten in een hoogteband: filtert of herclassificeert punten binnen een z-bereik. Isoleert specifieke lagen (grond, ondergroei, kronendak) of hoogtezones.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object. Indien weggelaten wordt in batchmodus over de LiDAR-bestanden in de huidige map gewerkt."
              },
              "minz": {
                "label": "Minimale Z",
                "description": "Ondergrens van de hoogteschijf (standaard -oneindig)."
              },
              "maxz": {
                "label": "Maximale Z",
                "description": "Bovengrens van de hoogteschijf (standaard +oneindig)."
              },
              "classify": {
                "label": "Classificeren",
                "description": "Indien true worden punten geherclassificeerd in plaats van gefilterd (standaard false)."
              },
              "in_class_value": {
                "label": "Klassewaarde binnen",
                "description": "Classificatie toegekend aan punten binnen de schijf wanneer classify=true (standaard 2)."
              },
              "out_class_value": {
                "label": "Klassewaarde buiten",
                "description": "Classificatie toegekend aan punten buiten de schijf wanneer classify=true (standaard 1)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-LiDAR-pad."
              }
            }
          },
          "lidar_remove_outliers": {
            "name": "LiDAR-uitschieters verwijderen",
            "description": "Detecteert uitschieterpunten via lokale hoogteresiduen: vergelijkt het punt met het gemiddelde/de mediaan van de omgeving en markeert anomalieën. Verwijdert grove fouten en ruis.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object. Indien weggelaten wordt in batchmodus over de LiDAR-bestanden in de huidige map gewerkt."
              },
              "search_radius": {
                "label": "Zoekstraal",
                "description": "Omgevingsstraal voor de lokale residuberekening (standaard 2.0)."
              },
              "elev_diff": {
                "label": "Hoogteverschil",
                "description": "Absolute drempelwaarde van het hoogteresidu voor uitschieterdetectie (standaard 50.0)."
              },
              "use_median": {
                "label": "Mediaan gebruiken",
                "description": "Mediaan in plaats van gemiddelde omgevingshoogte gebruiken."
              },
              "classify": {
                "label": "Classificeren",
                "description": "Indien true worden uitschieters als klasse 7/18 geclassificeerd in plaats van verwijderd."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-LiDAR-pad."
              }
            }
          },
          "lidar_segmentation": {
            "name": "LiDAR-segmentatie",
            "description": "Partitioneert een puntenwolk: RANSAC-vlakfitting + regiogroei maakt verbonden componenten. Kent segment-ID's toe die in RGB worden opgeslagen. Vormgebaseerde puntclustering.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object."
              },
              "search_radius": {
                "label": "Zoekstraal",
                "description": "Omgevingsstraal voor regiogroei."
              },
              "num_iterations": {
                "label": "Aantal iteraties",
                "description": "Aantal RANSAC-iteraties voor het detecteren van lokale vlakmodellen."
              },
              "num_samples": {
                "label": "Aantal monsters",
                "description": "Aantal bemonsterde punten per lokale RANSAC-modelfit."
              },
              "inlier_threshold": {
                "label": "Inlier-drempel",
                "description": "Residudrempelwaarde om punten als inliers van het lokale vlak te classificeren."
              },
              "acceptable_model_size": {
                "label": "Aanvaardbare modelgrootte",
                "description": "Minimaal aantal inliers vereist voor een geaccepteerd lokaal vlakmodel."
              },
              "max_planar_slope": {
                "label": "Maximale vlakhelling",
                "description": "Maximaal geaccepteerde vlakhelling in graden."
              },
              "norm_diff_threshold": {
                "label": "Normaalverschildrempel",
                "description": "Maximaal hoekverschil (graden) tussen naburige vlaknormalen tijdens de groei."
              },
              "max_z_diff": {
                "label": "Maximaal Z-verschil",
                "description": "Maximaal toegestaan Z-verschil tijdens het groeien van een segment."
              },
              "classes": {
                "label": "Klassen",
                "description": "Indien true worden klassegrenzen niet overschreden tijdens het groeien van segmenten."
              },
              "ground": {
                "label": "Grond",
                "description": "Indien true wordt class=2 toegekend aan het grootste segment en class=1 aan de overige gesegmenteerde punten."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-LiDAR-pad."
              }
            }
          },
          "lidar_segmentation_based_filter": {
            "name": "LiDAR-filter op basis van segmentatie",
            "description": "Grondfiltering via segmentatie van gebieden met weinig reliëf: laat verbonden componenten groeien vanuit lokaal vlakke gebieden en scheidt het terrein van de vegetatie. Robuuste grondscheiding.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object."
              },
              "search_radius": {
                "label": "Zoekstraal",
                "description": "Omgevingsstraal voor de groei van verbonden componenten."
              },
              "norm_diff_threshold": {
                "label": "Normaalverschildrempel",
                "description": "Compatibiliteitsparameter voor verouderde normaalhoekcontroles."
              },
              "max_z_diff": {
                "label": "Maximaal Z-verschil",
                "description": "Maximaal hoogteverschil voor verbonden groei."
              },
              "classify_points": {
                "label": "Punten classificeren",
                "description": "Indien true worden punten geclassificeerd in plaats van gefilterd."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-LiDAR-pad."
              }
            }
          },
          "modify_lidar": {
            "name": "LiDAR wijzigen",
            "description": "Werkt puntattributen bij via toewijzingen: z=z+offset, class=reclassify_expr, intensity=scale_factor. Flexibele transformaties op puntniveau.",
            "params": {
              "statement": {
                "label": "Instructie",
                "description": "Eén of meer toewijzingsexpressies gescheiden door puntkomma's, bijv. 'z = z + 1; class = if(z > 5, 2, class)'."
              },
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object. Indien weggelaten wordt in batchmodus over de LiDAR-bestanden in de huidige map gewerkt."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-LiDAR-pad voor de modus met één invoer."
              }
            }
          },
          "normalize_lidar": {
            "name": "LiDAR normaliseren",
            "description": "Zet absolute LiDAR-hoogten om in hoogte boven maaiveld: trekt het DTM (raster-DEM) af van de z-waarden van de punten. Maakt een genormaliseerde puntenwolk voor structuuranalyse.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object."
              },
              "dtm": {
                "label": "DTM",
                "description": "Pad van het invoer-DTM-raster of getypt rasterobject."
              },
              "no_negatives": {
                "label": "Geen negatieve waarden",
                "description": "Negatieve genormaliseerde hoogten op nul vastzetten."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-LiDAR-pad."
              }
            }
          },
          "remove_duplicates": {
            "name": "Duplicaten verwijderen",
            "description": "Ontdubbelt een puntenwolk: verwijdert punten met identieke x/y (optioneel z). Verwerkt overlappingen van meerdere scans en verbetert de verwerkingsefficiëntie.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object. Indien weggelaten wordt in batchmodus over de LiDAR-bestanden in de huidige map gewerkt."
              },
              "include_z": {
                "label": "Z opnemen",
                "description": "Indien true wordt bij duplicaatdetectie ook z meegenomen; anders alleen x/y."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-LiDAR-pad."
              }
            }
          },
          "flightline_overlap": {
            "name": "Vluchtlijnoverlap",
            "description": "Detecteert overlappingen tussen opnamen: telt het aantal verschillende point-source-ID's per cel. Rastergebaseerde visualisatie van overlap voor de beoordeling van de dekking van vluchtlijnen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Optioneel invoer-LiDAR-pad of getypt LiDAR-object. Indien weggelaten wordt in batchmodus over de LiDAR-bestanden in de huidige map gewerkt."
              },
              "resolution": {
                "label": "Resolutie",
                "description": "Rasterresolutie voor het tellen van afzonderlijke vluchtlijnen per cel."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "lidar_block_maximum": {
            "name": "LiDAR-blokmaximum",
            "description": "Raster uit het maximale LiDAR-attribuut: celwaarde = hoogste puntreturn (hoogte, intensiteit, klasse, enz.). Generatie van een DSM, extractie van de top van het kronendak, pulsstatistieken.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object. Indien weggelaten wordt in batchmodus over de LiDAR-bestanden in de huidige map gewerkt."
              },
              "resolution": {
                "label": "Resolutie",
                "description": "Celgrootte van de uitvoer."
              },
              "interpolation_parameter": {
                "label": "Interpolatieparameter",
                "description": "Puntattribuut (elevation/intensity/class/return_number/number_of_returns/scan_angle/time/rgb/user_data)."
              },
              "returns_included": {
                "label": "Opgenomen returns",
                "description": "Filtermodus voor returns: all, first of last."
              },
              "excluded_classes": {
                "label": "Uitgesloten klassen",
                "description": "Uit te sluiten klassen (array of kommagescheiden tekst)."
              },
              "min_elev": {
                "label": "Minimale hoogte",
                "description": "Minimale hoogtedrempelwaarde voor de puntinsluitingsfiltering."
              },
              "max_elev": {
                "label": "Maximale hoogte",
                "description": "Maximale hoogtedrempelwaarde voor de puntinsluitingsfiltering."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "lidar_block_minimum": {
            "name": "LiDAR-blokminimum",
            "description": "Raster uit het minimale LiDAR-attribuut: celwaarde = laagste puntreturn (hoogte, intensiteit, klasse). Generatie van een DEM, extractie van het grondoppervlak, bepaling van de terreinbasislijn.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object. Indien weggelaten wordt in batchmodus over de LiDAR-bestanden in de huidige map gewerkt."
              },
              "resolution": {
                "label": "Resolutie",
                "description": "Celgrootte van de uitvoer."
              },
              "interpolation_parameter": {
                "label": "Interpolatieparameter",
                "description": "Puntattribuut (elevation/intensity/class/return_number/number_of_returns/scan_angle/time/rgb/user_data)."
              },
              "returns_included": {
                "label": "Opgenomen returns",
                "description": "Filtermodus voor returns: all, first of last."
              },
              "excluded_classes": {
                "label": "Uitgesloten klassen",
                "description": "Uit te sluiten klassen (array of kommagescheiden tekst)."
              },
              "min_elev": {
                "label": "Minimale hoogte",
                "description": "Minimale hoogtedrempelwaarde voor de puntinsluitingsfiltering."
              },
              "max_elev": {
                "label": "Maximale hoogte",
                "description": "Maximale hoogtedrempelwaarde voor de puntinsluitingsfiltering."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "lidar_construct_vector_tin": {
            "name": "Vector-TIN opbouwen uit LiDAR",
            "description": "Bouwt een 3D-mesh: Delaunay-triangulatie van gefilterde punten, uitgevoerd als vectorpolygoonlaag. Oppervlakterepresentatie en topografische analyse.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Optioneel invoer-LiDAR-pad of getypt LiDAR-object. Indien weggelaten wordt in batchmodus over de LiDAR-bestanden in de huidige map gewerkt."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoervectorpad; in batchmodus schrijft elke invoer een bijbehorend _tin.shp."
              },
              "returns": {
                "label": "Returns",
                "description": "Returnfilter: all, first of last."
              },
              "excluded_classes": {
                "label": "Uitgesloten klassen",
                "description": "Optionele uit te sluiten klassewaarden."
              },
              "min_elev": {
                "label": "Minimale hoogte",
                "description": "Minimaal toegestane punthoogte."
              },
              "max_elev": {
                "label": "Maximale hoogte",
                "description": "Maximaal toegestane punthoogte."
              },
              "max_triangle_edge_length": {
                "label": "Maximale driehoekszijdelengte",
                "description": "Optionele maximaal toegestane lengte van driehoekszijden."
              }
            }
          },
          "lidar_contour": {
            "name": "LiDAR-contouren",
            "description": "Extraheert vectorcontourlijnen: TIN-gebaseerde contourgeneratie met interpolatie voor hoogte, intensiteit en tijd. Instelbare intervallen en filtering op randlengte.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Optioneel invoer-LiDAR-pad of getypt LiDAR-object. Indien weggelaten wordt in batchmodus over de LiDAR-bestanden in de huidige map gewerkt."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoervectorpad (.shp/.geojson). In batchmodus schrijft elke invoer een bijbehorend .shp."
              },
              "interval": {
                "label": "Interval",
                "description": "Contourinterval (moet > 0 zijn)."
              },
              "base_contour": {
                "label": "Basiscontour",
                "description": "Basisoffsetwaarde voor de contouren."
              },
              "smooth": {
                "label": "Gladstrijken",
                "description": "Compatibiliteitsparameter voor gladstrijken (geaccepteerd voor pariteit van de aanroepvorm)."
              },
              "interpolation_parameter": {
                "label": "Interpolatieparameter",
                "description": "Eén van elevation, intensity, scan_angle, time of user_data."
              },
              "returns": {
                "label": "Returns",
                "description": "Returnfilter: all, first of last."
              },
              "excluded_classes": {
                "label": "Uitgesloten klassen",
                "description": "Optionele uit te sluiten klassewaarden."
              },
              "min_elev": {
                "label": "Minimale hoogte",
                "description": "Minimaal toegestane punthoogte."
              },
              "max_elev": {
                "label": "Maximale hoogte",
                "description": "Maximaal toegestane punthoogte."
              },
              "max_triangle_edge_length": {
                "label": "Maximale driehoekszijdelengte",
                "description": "Optionele maximale lengte van driehoekszijden; langere driehoeken worden overgeslagen."
              }
            }
          },
          "lidar_digital_surface_model": {
            "name": "Digitaal oppervlaktemodel uit LiDAR",
            "description": "Genereert een DSM uit LiDAR-returns van het bovenoppervlak via een TIN: gebruikt lokale kandidaten voor het hoogste punt binnen een straal en daarna triangulatie. Representatie van het vegetatiekronendak en de toppen van elementen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object. Indien weggelaten wordt in batchmodus over de LiDAR-bestanden in de huidige map gewerkt."
              },
              "resolution": {
                "label": "Resolutie",
                "description": "Celgrootte van de uitvoer."
              },
              "search_radius": {
                "label": "Zoekstraal",
                "description": "Omgevingsstraal voor het selecteren van kandidaten voor het bovenoppervlak."
              },
              "min_elev": {
                "label": "Minimale hoogte",
                "description": "Minimale hoogtedrempelwaarde voor de puntinsluitingsfiltering."
              },
              "max_elev": {
                "label": "Maximale hoogte",
                "description": "Maximale hoogtedrempelwaarde voor de puntinsluitingsfiltering."
              },
              "max_triangle_edge_length": {
                "label": "Maximale driehoekszijdelengte",
                "description": "Optionele maximale lengte van driehoekszijden om facetten met lange zijden te onderdrukken."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "lidar_hex_bin": {
            "name": "LiDAR-hexagonale binning",
            "description": "Aggregeert punten tot zeshoeken: binningraster met samenvattingen per cel (aantal, gemiddelde z, intensiteit). Uniforme bemonstering en statistische binning.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object."
              },
              "width": {
                "label": "Breedte",
                "description": "Zeshoekbreedte (afstand tussen tegenoverliggende zijden)."
              },
              "orientation": {
                "label": "Oriëntatie",
                "description": "Rasteroriëntatie: h (punt omhoog) of v (vlak omhoog)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoervectorpad."
              }
            }
          },
          "lidar_hillshade": {
            "name": "LiDAR-schaduwreliëf",
            "description": "Geeft een LiDAR-oppervlak weer via schaduwreliëf: berekent per punt oppervlaktenormalen uit een lokale vlakfit en arceert vervolgens op basis van de invalshoek van het licht. Slaat het resultaat op als RGB voor 3D-visualisatie.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object. Indien weggelaten wordt in batchmodus over de LiDAR-bestanden in de huidige map gewerkt."
              },
              "search_radius": {
                "label": "Zoekstraal",
                "description": "Omgevingsstraal voor de lokale normaalschatting. Waarden <= 0 gebruiken de geschatte nominale puntafstand."
              },
              "azimuth": {
                "label": "Azimut",
                "description": "Belichtingsazimut in graden."
              },
              "altitude": {
                "label": "Zonhoogte",
                "description": "Belichtingshoogte in graden."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-LiDAR-pad."
              }
            }
          },
          "lidar_idw_interpolation": {
            "name": "LiDAR-IDW-interpolatie",
            "description": "Afstandsgewogen LiDAR-gridding: kent de celwaarde toe op basis van het gewogen gemiddelde van omliggende punten (inverse afstandsmacht). Gladde oppervlakken, te sturen via de exponentparameter.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object. Indien weggelaten wordt in batchmodus over de LiDAR-bestanden in de huidige map gewerkt."
              },
              "resolution": {
                "label": "Resolutie",
                "description": "Celgrootte van de uitvoer."
              },
              "weight": {
                "label": "Gewicht",
                "description": "IDW-exponent (macht)."
              },
              "search_radius": {
                "label": "Zoekstraal",
                "description": "Omgevingsstraal; <=0 schakelt over naar de k-dichtstbijzijnde-modus."
              },
              "interpolation_parameter": {
                "label": "Interpolatieparameter",
                "description": "Te interpoleren puntattribuut (elevation, intensity, class, return_number, number_of_returns, scan_angle, time, rgb, user_data)."
              },
              "returns_included": {
                "label": "Opgenomen returns",
                "description": "Filtermodus voor returns: all, first of last."
              },
              "excluded_classes": {
                "label": "Uitgesloten klassen",
                "description": "Uit te sluiten klassen (array of kommagescheiden tekst)."
              },
              "min_elev": {
                "label": "Minimale hoogte",
                "description": "Minimale hoogtedrempelwaarde voor de puntinsluitingsfiltering."
              },
              "max_elev": {
                "label": "Maximale hoogte",
                "description": "Maximale hoogtedrempelwaarde voor de puntinsluitingsfiltering."
              },
              "min_points": {
                "label": "Minimaal aantal punten",
                "description": "Minimaal aantal punten voor de k-dichtstbijzijnde-terugval."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "lidar_nearest_neighbour_gridding": {
            "name": "LiDAR-rastering op nearest neighbour",
            "description": "Snelle LiDAR-gridding: kent de celwaarde toe op basis van het dichtstbijzijnde punt binnen de zoekstraal. Minimale interpolatiebias, efficiënt voor puntenwolken met hoge dichtheid. Snelle generatie van een DSM/DEM.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object. Indien weggelaten wordt in batchmodus over de LiDAR-bestanden in de huidige map gewerkt."
              },
              "resolution": {
                "label": "Resolutie",
                "description": "Celgrootte van de uitvoer."
              },
              "search_radius": {
                "label": "Zoekstraal",
                "description": "Maximale afstand tot de dichtstbijzijnde buur; cellen daarbuiten worden NoData."
              },
              "interpolation_parameter": {
                "label": "Interpolatieparameter",
                "description": "Te interpoleren puntattribuut (elevation, intensity, class, return_number, number_of_returns, scan_angle, time, rgb, user_data)."
              },
              "returns_included": {
                "label": "Opgenomen returns",
                "description": "Filtermodus voor returns: all, first of last."
              },
              "excluded_classes": {
                "label": "Uitgesloten klassen",
                "description": "Uit te sluiten klassen (array of kommagescheiden tekst)."
              },
              "min_elev": {
                "label": "Minimale hoogte",
                "description": "Minimale hoogtedrempelwaarde voor de puntinsluitingsfiltering."
              },
              "max_elev": {
                "label": "Maximale hoogte",
                "description": "Maximale hoogtedrempelwaarde voor de puntinsluitingsfiltering."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "lidar_radial_basis_function_interpolation": {
            "name": "LiDAR-interpolatie met radiale basisfuncties",
            "description": "Glad LiDAR-oppervlak via RBF: radiale basisfuncties leggen lokale kromming en microtopografie vast. Hoogwaardige gridding met continue afgeleiden over grenzen heen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object. Indien weggelaten wordt in batchmodus over de LiDAR-bestanden in de huidige map gewerkt."
              },
              "resolution": {
                "label": "Resolutie",
                "description": "Celgrootte van de uitvoer."
              },
              "num_points": {
                "label": "Aantal punten",
                "description": "Minimaal aantal buren voor de lokale interpolatie."
              },
              "search_radius": {
                "label": "Zoekstraal",
                "description": "Omgevingsstraal; <=0 gebruikt alleen de k-dichtstbijzijnde-modus."
              },
              "func_type": {
                "label": "Functietype",
                "description": "RBF-basistype (thinplatespline, polyharmonic, gaussian, multiquadric, inversemultiquadric)."
              },
              "poly_order": {
                "label": "Polynoomgraad",
                "description": "Orde van de polynoomtrend voor de lokale correctie (none, constant, quadratic)."
              },
              "weight": {
                "label": "Gewicht",
                "description": "Vormparameter/exponent van de basis, afhankelijk van func_type."
              },
              "interpolation_parameter": {
                "label": "Interpolatieparameter",
                "description": "Te interpoleren puntattribuut (elevation, intensity, class, return_number, number_of_returns, scan_angle, time, rgb, user_data)."
              },
              "returns_included": {
                "label": "Opgenomen returns",
                "description": "Filtermodus voor returns: all, first of last."
              },
              "excluded_classes": {
                "label": "Uitgesloten klassen",
                "description": "Uit te sluiten klassen (array of kommagescheiden tekst)."
              },
              "min_elev": {
                "label": "Minimale hoogte",
                "description": "Minimale hoogtedrempelwaarde voor de puntinsluitingsfiltering."
              },
              "max_elev": {
                "label": "Maximale hoogte",
                "description": "Maximale hoogtedrempelwaarde voor de puntinsluitingsfiltering."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "lidar_sibson_interpolation": {
            "name": "LiDAR-Sibson-interpolatie",
            "description": "LiDAR-gridding met natuurlijke buren: op Voronoi gebaseerde interpolatie met gewichten van natuurlijke buren. Gladde, natuurlijk ogende oppervlakken zonder hellingsartefacten op puntlocaties.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object. Indien weggelaten wordt in batchmodus over de LiDAR-bestanden in de huidige map gewerkt."
              },
              "resolution": {
                "label": "Resolutie",
                "description": "Celgrootte van de uitvoer."
              },
              "interpolation_parameter": {
                "label": "Interpolatieparameter",
                "description": "Te interpoleren puntattribuut (elevation, intensity, class, return_number, number_of_returns, scan_angle, time, rgb, user_data)."
              },
              "returns_included": {
                "label": "Opgenomen returns",
                "description": "Filtermodus voor returns: all, first of last."
              },
              "excluded_classes": {
                "label": "Uitgesloten klassen",
                "description": "Uit te sluiten klassen (array of kommagescheiden tekst)."
              },
              "min_elev": {
                "label": "Minimale hoogte",
                "description": "Minimale hoogtedrempelwaarde voor de puntinsluitingsfiltering."
              },
              "max_elev": {
                "label": "Maximale hoogte",
                "description": "Maximale hoogtedrempelwaarde voor de puntinsluitingsfiltering."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "lidar_thin": {
            "name": "LiDAR uitdunnen",
            "description": "Decimeert de dichtheid van een puntenwolk: behoudt ≤1 punt per rastercel met een strategie eerste/laatste/laagste/hoogste/dichtstbijzijnde. Vermindert de opslag met behoud van dekking en topografische complexiteit.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object. Indien weggelaten wordt in batchmodus over de LiDAR-bestanden in de huidige map gewerkt."
              },
              "resolution": {
                "label": "Resolutie",
                "description": "Rastercelgrootte voor uitdunning (standaard 1.0)."
              },
              "method": {
                "label": "Methode",
                "description": "Puntselectiemethode per cel: first, last, lowest, highest, nearest (standaard 'first')."
              },
              "save_filtered": {
                "label": "Gefilterde punten opslaan",
                "description": "Indien true worden ook de weggefilterde punten geschreven en wordt hun locator teruggegeven in outputs.filtered_path."
              },
              "filtered_output": {
                "label": "Gefilterde uitvoer",
                "description": "Optioneel uitvoerpad voor weggefilterde punten (modus met één invoer)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-LiDAR-pad."
              }
            }
          },
          "lidar_thin_high_density": {
            "name": "LiDAR uitdunnen (hoge dichtheid)",
            "description": "Adaptieve dichtheidsdecimatie: vermindert het aantal punten in te dichte zones en behoudt schaarse gebieden. Egaliseert de bemonstering over variabele overlappatronen van vluchtlijnen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object. Indien weggelaten wordt in batchmodus over de LiDAR-bestanden in de huidige map gewerkt."
              },
              "density": {
                "label": "Dichtheid",
                "description": "Drempelwaarde voor de doelpuntdichtheid in punten per vierkante eenheid."
              },
              "resolution": {
                "label": "Resolutie",
                "description": "Rasterresolutie voor de x/y- en z-binning (standaard 1.0)."
              },
              "save_filtered": {
                "label": "Gefilterde punten opslaan",
                "description": "Indien true worden de weggefilterde punten geschreven en wordt outputs.filtered_path teruggegeven."
              },
              "filtered_output": {
                "label": "Gefilterde uitvoer",
                "description": "Optioneel uitvoerpad voor weggefilterde punten in de modus met één invoer."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-LiDAR-pad."
              }
            }
          },
          "lidar_tile_footprint": {
            "name": "LiDAR-tegelomtrek",
            "description": "Genereert contouren: asgeoriënteerde omsluitende rechthoeken of convexe omhullenden per puntenwolk. Uitvoer als vectorpolygonen voor ruimtelijke indexering en een gegevenscatalogus.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Optioneel invoer-LiDAR-pad of getypt LiDAR-object. Indien weggelaten worden alle LiDAR-bestanden in de huidige map verwerkt."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoervectorpad voor de contouren."
              },
              "output_hulls": {
                "label": "Omhullenden uitvoeren",
                "description": "Indien true worden convexe-omhullendecontouren geschreven; anders as-uitgelijnde begrenzingsvakken."
              }
            }
          },
          "lidar_tin_gridding": {
            "name": "LiDAR-TIN-rastering",
            "description": "Exacte LiDAR-interpolatie via een TIN: bouwt een Delaunay-triangulatie uit punten en interpoleert celwaarden uit de vlakken van de driehoeken. Respecteert de hoogten van punten, uitstekend voor onregelmatige dekking.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object. Indien weggelaten wordt in batchmodus over de LiDAR-bestanden in de huidige map gewerkt."
              },
              "resolution": {
                "label": "Resolutie",
                "description": "Celgrootte van de uitvoer."
              },
              "max_triangle_edge_length": {
                "label": "Maximale driehoekszijdelengte",
                "description": "Optionele maximale lengte van driehoekszijden om facetten met lange zijden te onderdrukken."
              },
              "interpolation_parameter": {
                "label": "Interpolatieparameter",
                "description": "Te interpoleren puntattribuut (elevation, intensity, class, return_number, number_of_returns, scan_angle, time, rgb, user_data)."
              },
              "returns_included": {
                "label": "Opgenomen returns",
                "description": "Filtermodus voor returns: all, first of last."
              },
              "excluded_classes": {
                "label": "Uitgesloten klassen",
                "description": "Uit te sluiten klassen (array of kommagescheiden tekst)."
              },
              "min_elev": {
                "label": "Minimale hoogte",
                "description": "Minimale hoogtedrempelwaarde voor de puntinsluitingsfiltering."
              },
              "max_elev": {
                "label": "Maximale hoogte",
                "description": "Maximale hoogtedrempelwaarde voor de puntinsluitingsfiltering."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              },
              "triangulation_backend": {
                "label": "Triangulatie-backend",
                "description": "Keuze van de triangulatiebackend: auto, delaunator of wbtopology."
              },
              "triangulation_auto_threshold": {
                "label": "Automatische triangulatiedrempel",
                "description": "Bij backend=auto wordt bij dit aantal steekproefpunten overgeschakeld naar wbtopology (standaard uitgeschakeld; expliciet instellen om in te schakelen)."
              },
              "triangulation_epsilon": {
                "label": "Triangulatie-epsilon",
                "description": "Epsilon voor de duplicaatafhandeling van de wbtopology-backend (standaard 1e-12)."
              },
              "triangulation_thin_cell_size": {
                "label": "Celgrootte triangulatie-uitdunning",
                "description": "Optionele celgrootte voor het vooraf uitdunnen van de triangulatiepunten; waarden > 0 schakelen uitdunning in en 0 schakelt deze uit."
              },
              "triangulation_thin_method": {
                "label": "Methode triangulatie-uitdunning",
                "description": "Methode voor het representatieve punt bij uitdunning: nearest_center, min_value of max_value."
              }
            }
          },
          "colourize_based_on_class": {
            "name": "Inkleuren op basis van klasse",
            "description": "Kleurt punten op klasse: ASPRS-standaardkleuren (groen=vegetatie, bruin=grond, grijs=gebouw, enz.). Vermengt met de intensiteit voor contrast. Visualisatie van de classificatie.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object. Indien weggelaten wordt in batchmodus over de LiDAR-bestanden in de huidige map gewerkt."
              },
              "intensity_blending_amount": {
                "label": "Hoeveelheid intensiteitsmenging",
                "description": "Procentuele menging [0,100] tussen klassekleur en intensiteit."
              },
              "clr_str": {
                "label": "Kleurtekst",
                "description": "Optionele overschrijvingen van klassekleuren, bijv. '2:(184,167,108);5:#9ab86c'."
              },
              "use_unique_clrs_for_buildings": {
                "label": "Unieke kleuren voor gebouwen gebruiken",
                "description": "Indien true worden unieke kleuren toegekend aan verbonden gebouwclusters."
              },
              "search_radius": {
                "label": "Zoekstraal",
                "description": "Omgevingsstraal voor het inkleuren van gebouwclusters."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-LiDAR-pad."
              }
            }
          },
          "colourize_based_on_point_returns": {
            "name": "Inkleuren op basis van puntreturns",
            "description": "Kleurt punten op returnvolgorde: eerste/tussenliggende/laatste returns krijgen verschillende kleuren. Visualisatie van de pulsstructuur met meerdere returns voor validatie van de verwerking.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object. Indien weggelaten wordt in batchmodus over de LiDAR-bestanden in de huidige map gewerkt."
              },
              "intensity_blending_amount": {
                "label": "Hoeveelheid intensiteitsmenging",
                "description": "Procentuele menging [0,100] tussen returnkleur en intensiteit."
              },
              "only_ret_colour": {
                "label": "Kleur enige return",
                "description": "Kleur voor punten met een enkele return."
              },
              "first_ret_colour": {
                "label": "Kleur eerste return",
                "description": "Kleur voor eerste-returnpunten in pulsen met meerdere returns."
              },
              "intermediate_ret_colour": {
                "label": "Kleur tussenliggende return",
                "description": "Kleur voor tussenliggende-returnpunten."
              },
              "last_ret_colour": {
                "label": "Kleur laatste return",
                "description": "Kleur voor laatste-returnpunten in pulsen met meerdere returns."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-LiDAR-pad."
              }
            }
          },
          "find_flightline_edge_points": {
            "name": "Randpunten van vluchtlijnen vinden",
            "description": "Filtert randpunten van vluchtlijnen: extraheert alleen punten aan de grenzen van de opnamestrook. Kwaliteitscontrole voor strookoverlap en randeffecten.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-LiDAR-pad."
              }
            }
          },
          "individual_tree_detection": {
            "name": "Detectie van individuele bomen",
            "description": "Identificeert boomtoppen: lokale maxima in een op hoogte gefilterde puntenwolk met een adaptieve zoekstraal. Retourneert een vectorpuntshapefile met mogelijke stamlocaties.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object."
              },
              "min_search_radius": {
                "label": "Minimale zoekstraal",
                "description": "Minimale zoekstraal in kaarteenheden (standaard 1.0)."
              },
              "min_height": {
                "label": "Minimale hoogte",
                "description": "Minimale hoogte om punten in aanmerking te nemen (standaard 0.0)."
              },
              "max_search_radius": {
                "label": "Maximale zoekstraal",
                "description": "Maximale zoekstraal; indien niet ingesteld wordt min_search_radius gebruikt."
              },
              "max_height": {
                "label": "Maximale hoogte",
                "description": "Maximale hoogte; indien niet ingesteld wordt min_height gebruikt."
              },
              "only_use_veg": {
                "label": "Alleen vegetatie gebruiken",
                "description": "Indien true worden alleen vegetatieklassen verwerkt (standaard true)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Pad van de uitvoervector-shapefile."
              }
            }
          },
          "lidar_eigenvalue_features": {
            "name": "LiDAR-eigenwaardekenmerken",
            "description": "Leidt PCA-kenmerken af: eigenwaarden/-vectoren uit omgevingen. Vormdescriptoren (planariteit, lineariteit, hoogtevariantie) voor analyse van puntenwolken.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Optioneel invoer-LiDAR-pad of getypt LiDAR-object. Indien weggelaten wordt in batchmodus over de LiDAR-bestanden in de huidige map gewerkt."
              },
              "num_neighbours": {
                "label": "Aantal buren",
                "description": "Optionele beoogde omgevingsgrootte (exclusief het punt zelf)."
              },
              "search_radius": {
                "label": "Zoekstraal",
                "description": "Optionele maximale zoekstraal voor het verzamelen van de omgeving."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-.eigen-pad in de modus met één invoer."
              }
            }
          },
          "lidar_histogram": {
            "name": "LiDAR-histogram",
            "description": "Berekent de verdeling van attributen: frequentiehistogram voor hoogte, intensiteit, scanhoek en klasse. Afgekapte percentielen voor onderdrukking van uitschieters. HTML-visualisatie.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-HTML-pad voor het histogramrapport."
              },
              "parameter": {
                "label": "Parameter",
                "description": "Eén van elevation, intensity, scan angle, class of time."
              },
              "clip_percent": {
                "label": "Afkappercentage",
                "description": "Percentielafkapping in [0,50] voor de onder-/bovenstaart."
              }
            }
          },
          "lidar_info": {
            "name": "LiDAR-info",
            "description": "Genereert een samenvattend metadatarapport: aantal punten, omvang, intensiteitsbereik, klassehistogram, verdeling van returns. HTML-/tekstuitvoer voor gegevensdocumentatie.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad voor het uitvoerrapport (.html/.txt)."
              },
              "show_point_density": {
                "label": "Puntdichtheid tonen",
                "description": "Indien true worden benaderende maten voor de puntdichtheid van het begrenzingsvak opgenomen."
              },
              "show_vlrs": {
                "label": "VLR's tonen",
                "description": "Compatibiliteitsvlag; gereserveerd voor toekomstige gedetailleerde metadata-uitvoer."
              },
              "show_geokeys": {
                "label": "Geokeys tonen",
                "description": "Compatibiliteitsvlag; gereserveerd voor toekomstige gedetailleerde CRS-sleuteluitvoer."
              }
            }
          },
          "lidar_kappa": {
            "name": "LiDAR-kappa",
            "description": "Berekent een kappa-overeenstemmingsrapport tussen twee geclassificeerde LiDAR-wolken en schrijft een raster met klasseovereenstemming.",
            "params": {
              "input1": {
                "label": "Invoer1",
                "description": "Classificatie-LiDAR-pad of getypt LiDAR-object."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Referentie-LiDAR-pad of getypt LiDAR-object."
              },
              "report": {
                "label": "Rapport",
                "description": "Pad van het uitvoer-HTML-rapport."
              },
              "resolution": {
                "label": "Resolutie",
                "description": "Rasterresolutie voor de ruimtelijke uitvoer van de klasseovereenstemming."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              },
              "output_class_accuracy": {
                "label": "Klassenauwkeurigheid uitvoeren",
                "description": "Compatibiliteitsvlag behouden voor verouderde pariteit; het overeenstemmingsraster wordt altijd aangemaakt."
              }
            }
          },
          "lidar_point_density": {
            "name": "LiDAR-puntdichtheid",
            "description": "Brengt de bemonsteringsintensiteit van LiDAR in kaart: aantal punten per oppervlakte-eenheid (aantallen binnen een straal per cel). Beoordeling van de gegevenskwaliteit, dekkingsanalyse, visualisatie van het opnamepatroon.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object. Indien weggelaten wordt in batchmodus over de LiDAR-bestanden in de huidige map gewerkt."
              },
              "resolution": {
                "label": "Resolutie",
                "description": "Celgrootte van de uitvoer."
              },
              "search_radius": {
                "label": "Zoekstraal",
                "description": "Omgevingsstraal voor het tellen van punten."
              },
              "returns_included": {
                "label": "Opgenomen returns",
                "description": "Filtermodus voor returns: all, first of last."
              },
              "excluded_classes": {
                "label": "Uitgesloten klassen",
                "description": "Uit te sluiten klassen (array of kommagescheiden tekst)."
              },
              "min_elev": {
                "label": "Minimale hoogte",
                "description": "Minimale hoogtedrempelwaarde voor de puntinsluitingsfiltering."
              },
              "max_elev": {
                "label": "Maximale hoogte",
                "description": "Maximale hoogtedrempelwaarde voor de puntinsluitingsfiltering."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "lidar_point_return_analysis": {
            "name": "LiDAR-puntreturnanalyse",
            "description": "Kwaliteitscontrolehulpmiddel: controleert de geldigheid van de returnvolgorde (consistentie van meervoudige/eerste/laatste). Genereert een rapport + geclassificeerde uitvoer waarin returnanomalieën worden gemarkeerd. Controle van de gegevensintegriteit.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object."
              },
              "create_output": {
                "label": "Uitvoer aanmaken",
                "description": "Indien true wordt een geclassificeerde LiDAR-QC-uitvoer geschreven."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel LiDAR-uitvoerpad gebruikt wanneer create_output=true."
              },
              "report": {
                "label": "Rapport",
                "description": "Optioneel pad voor het tekstrapport."
              }
            }
          },
          "lidar_point_stats": {
            "name": "LiDAR-puntstatistieken",
            "description": "Maakt rasters met statistieken: aantal punten, aantal pulsen, gemiddeld aantal punten/puls, z-/intensiteitsbereik en overheersende klasse per cel. Analyse met meerdere uitvoeren.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Optioneel invoer-LiDAR-pad of getypt LiDAR-object. Indien weggelaten wordt in batchmodus over de LiDAR-bestanden in de huidige map gewerkt."
              },
              "resolution": {
                "label": "Resolutie",
                "description": "Rasterresolutie van de uitvoer."
              },
              "num_points": {
                "label": "Aantal punten",
                "description": "Raster met puntaantallen aanmaken."
              },
              "num_pulses": {
                "label": "Aantal pulsen",
                "description": "Raster met aantallen vroege-returnpulsen aanmaken."
              },
              "avg_points_per_pulse": {
                "label": "Gemiddeld aantal punten per puls",
                "description": "Raster met het gemiddelde aantal punten per puls aanmaken."
              },
              "z_range": {
                "label": "Z-bereik",
                "description": "Raster met hoogtebereik aanmaken."
              },
              "intensity_range": {
                "label": "Intensiteitsbereik",
                "description": "Raster met intensiteitsbereik aanmaken."
              },
              "predominant_class": {
                "label": "Overheersende klasse",
                "description": "Raster met de overheersende klasse aanmaken."
              },
              "output_directory": {
                "label": "Uitvoermap",
                "description": "Optionele uitvoermap voor de gegenereerde rasters."
              }
            }
          },
          "lidar_ransac_planes": {
            "name": "LiDAR-RANSAC-vlakken",
            "description": "Identificeert lokaal vlakke LiDAR-punten met RANSAC-vlakfitting in de omgeving.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object."
              },
              "search_radius": {
                "label": "Zoekstraal",
                "description": "Omgevingsstraal voor de lokale vlakaanpassing."
              },
              "num_iterations": {
                "label": "Aantal iteraties",
                "description": "Aantal RANSAC-iteraties per punt."
              },
              "num_samples": {
                "label": "Aantal monsters",
                "description": "Aantal bemonsterde buurpunten per RANSAC-iteratie."
              },
              "inlier_threshold": {
                "label": "Inlier-drempel",
                "description": "Maximaal punt-tot-vlakresidu voor inliers."
              },
              "acceptable_model_size": {
                "label": "Aanvaardbare modelgrootte",
                "description": "Minimaal aantal inlierpunten vereist voor een vlakmodel."
              },
              "max_planar_slope": {
                "label": "Maximale vlakhelling",
                "description": "Maximaal geaccepteerde vlakhelling in graden."
              },
              "classify": {
                "label": "Classificeren",
                "description": "Indien true worden vlakke versus niet-vlakke punten geclassificeerd in plaats van gefilterd."
              },
              "only_last_returns": {
                "label": "Alleen laatste returns",
                "description": "Indien true worden alleen late returns gebruikt bij de modelaanpassing."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-LiDAR-pad."
              }
            }
          },
          "lidar_rooftop_analysis": {
            "name": "LiDAR-dakanalyse",
            "description": "Identificeert vlakke dakvlaksegmenten binnen gebouwcontouren en geeft segmentpolygonen met dakattributen als uitvoer.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Invoer-LiDAR-paden of getypte LiDAR-objecten."
              },
              "building_footprints": {
                "label": "Gebouwcontouren",
                "description": "Polygoonlaag met gebouwcontouren."
              },
              "search_radius": {
                "label": "Zoekstraal",
                "description": "Omgevingsstraal voor de lokale dakanalyse."
              },
              "inlier_threshold": {
                "label": "Inlier-drempel",
                "description": "Maximaal residu voor lokale vlakondersteuning."
              },
              "acceptable_model_size": {
                "label": "Aanvaardbare modelgrootte",
                "description": "Minimale segmentgrootte."
              },
              "max_planar_slope": {
                "label": "Maximale vlakhelling",
                "description": "Maximale helling voor dakfacetten in graden."
              },
              "norm_diff_threshold": {
                "label": "Normaalverschildrempel",
                "description": "Maximaal hoekverschil tussen naburige normalen in graden."
              },
              "azimuth": {
                "label": "Azimut",
                "description": "Belichtingsazimut voor facetbelichting in schaduwreliëfstijl."
              },
              "altitude": {
                "label": "Zonhoogte",
                "description": "Belichtingshoogte voor facetbelichting in schaduwreliëfstijl."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoervectorpad."
              }
            }
          },
          "normal_vectors": {
            "name": "Normaalvectoren",
            "description": "Berekent oppervlaktenormalen per punt: PCA op de lokale omgeving schat de oriëntatie van het vlak. De normalen worden opgeslagen in de puntrecords en als RGB-visualisatie.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-LiDAR-pad of getypt LiDAR-object."
              },
              "search_radius": {
                "label": "Zoekstraal",
                "description": "Omgevingsstraal voor de lokale vlakaanpassing. Waarden <= 0 gebruiken een geschatte nominale puntafstand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoer-LiDAR-pad."
              }
            }
          },
          "snap_events_to_routes": {
            "name": "Gebeurtenissen snappen naar routes",
            "description": "Snapt gebeurtenispunten naar routelijnen en rapporteert diagnostiek voor routemaat/-offset.",
            "params": {
              "routes": {
                "label": "Routes",
                "description": "Invoerlaag met routelijnen."
              },
              "events": {
                "label": "Gebeurtenissen",
                "description": "Invoerlaag met gebeurtenispunten."
              },
              "max_offset_distance": {
                "label": "Maximale offsetafstand",
                "description": "Optionele maximale offsetafstand tot de route in kaarteenheden."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorpad voor de gesnapte gebeurtenispunten."
              }
            }
          },
          "locate_points_along_routes": {
            "name": "Punten lokaliseren langs routes",
            "description": "Lokaliseert puntobjecten langs routelijnen en schrijft routemaatattributen.",
            "params": {
              "routes": {
                "label": "Routes",
                "description": "Invoerlaag met routelijnen."
              },
              "points": {
                "label": "Punten",
                "description": "Invoerpuntlaag die langs routes wordt gelokaliseerd."
              },
              "max_offset_distance": {
                "label": "Maximale offsetafstand",
                "description": "Optionele maximale offsetafstand van punt tot route."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Pad van de uitvoerpuntvector."
              }
            }
          },
          "points_along_lines": {
            "name": "Punten langs lijnen",
            "description": "Genereert puntobjecten met regelmatige tussenafstanden langs invoerpolylijnen voor infrastructuurmonitoring, milieubemonstering en ruimtelijke analyse.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlijnlaag."
              },
              "spacing": {
                "label": "Tussenafstand",
                "description": "Afstand tussen de punten."
              },
              "include_end": {
                "label": "Eindpunt opnemen",
                "description": "Eindpunten van lijnen opnemen (standaard true)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Pad van de uitvoerpuntvector."
              }
            }
          },
          "route_calibrate": {
            "name": "Route kalibreren",
            "description": "Kalibreert de begin-/eindmaten van routes op basis van controlepunten met bekende maten.",
            "params": {
              "routes": {
                "label": "Routes",
                "description": "Invoerlaag met routelijnen."
              },
              "control_points": {
                "label": "Controlepunten",
                "description": "Invoerlaag met controlepunten."
              },
              "control_measure_field": {
                "label": "Veld controlemaat",
                "description": "Controlepuntveld met de bekende meetwaarden."
              },
              "route_id_field": {
                "label": "Route-ID-veld",
                "description": "Optioneel route-identificatieveld in de routes. Standaard de FID van het object."
              },
              "control_route_id_field": {
                "label": "Route-ID-veld controlepunten",
                "description": "Optioneel route-identificatieveld in de controlepunten. Standaard de FID van het object."
              },
              "from_measure_field": {
                "label": "Veld beginmaat",
                "description": "Uitvoerveld voor de beginmaat van de route (standaard 'from_measure')."
              },
              "to_measure_field": {
                "label": "Veld eindmaat",
                "description": "Uitvoerveld voor de eindmaat van de route (standaard 'to_measure')."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Maximale offsetafstand van controlepunten tot de routegeometrie (standaard 1.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerlaag met gekalibreerde routes."
              }
            }
          },
          "route_event_lines_from_layer": {
            "name": "Routegebeurtenislijnen uit laag",
            "description": "Maakt gerouteerde lijngebeurtenissen uit een vectorlaag met gebeurtenissen op basis van van-/totmaten.",
            "params": {
              "routes": {
                "label": "Routes",
                "description": "Invoerlaag met routelijnen."
              },
              "events": {
                "label": "Gebeurtenissen",
                "description": "Invoervectorlaag met gebeurtenissen."
              },
              "event_route_field": {
                "label": "Routeveld gebeurtenissen",
                "description": "Veld van de gebeurtenislaag met route-identificaties."
              },
              "from_measure_field": {
                "label": "Veld beginmaat",
                "description": "Veld van de gebeurtenislaag met beginmaten."
              },
              "to_measure_field": {
                "label": "Veld eindmaat",
                "description": "Veld van de gebeurtenislaag met eindmaten."
              },
              "route_id_field": {
                "label": "Route-ID-veld",
                "description": "Optioneel veld van de routelaag met route-identificaties. Standaard de FID van het object."
              },
              "write_event_fid": {
                "label": "Gebeurtenis-FID schrijven",
                "description": "EVENT_FID schrijven om de object-ID's van de brongebeurtenissen te behouden (standaard true)."
              },
              "write_event_xy": {
                "label": "Gebeurtenis-XY schrijven",
                "description": "X/Y-attributen van de brongebeurtenisgeometrie schrijven (standaard false)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Pad van de uitvoerlijnvector."
              }
            }
          },
          "route_event_lines_from_table": {
            "name": "Routegebeurtenislijnen uit tabel",
            "description": "Maakt gerouteerde lijngebeurtenissen uit een CSV-gebeurtenistabel en een routelaag op basis van van-/totmaten.",
            "params": {
              "routes": {
                "label": "Routes",
                "description": "Invoerlaag met routelijnen."
              },
              "events": {
                "label": "Gebeurtenissen",
                "description": "Pad van de invoer-CSV-gebeurtenistabel."
              },
              "event_route_field": {
                "label": "Routeveld gebeurtenissen",
                "description": "CSV-veld met route-identificaties."
              },
              "from_measure_field": {
                "label": "Veld beginmaat",
                "description": "CSV-veld met beginmaten."
              },
              "to_measure_field": {
                "label": "Veld eindmaat",
                "description": "CSV-veld met eindmaten."
              },
              "route_id_field": {
                "label": "Route-ID-veld",
                "description": "Optioneel veld van de routelaag met route-identificaties. Standaard de FID van het object."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Pad van de uitvoerlijnvector."
              }
            }
          },
          "route_event_merge": {
            "name": "Routegebeurtenissen samenvoegen",
            "description": "Voegt aangrenzende compatibele routegebeurtenissen samen.",
            "params": {
              "events": {
                "label": "Gebeurtenissen",
                "description": "Invoergebeurtenislaag met route-intervallen."
              },
              "event_route_field": {
                "label": "Routeveld gebeurtenissen",
                "description": "Route-identificatieveld van de gebeurtenislaag."
              },
              "from_measure_field": {
                "label": "Veld beginmaat",
                "description": "Intervalbeginveld van de gebeurtenislaag."
              },
              "to_measure_field": {
                "label": "Veld eindmaat",
                "description": "Intervaleindveld van de gebeurtenislaag."
              },
              "group_fields": {
                "label": "Groepeervelden",
                "description": "Optionele kommagescheiden velden voor de samenvoegcompatibiliteit. Standaard alle niet-maatvelden."
              },
              "gap_tolerance": {
                "label": "Hiaattolerantie",
                "description": "Maximaal toegestane opening voor samenvoeging van aangrenzende intervallen (standaard 0.0)."
              },
              "conflict_mode": {
                "label": "Conflictmodus",
                "description": "Afhandeling van overlap: error|skip (standaard error)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerlaag met samengevoegde gebeurtenissen."
              }
            }
          },
          "route_event_overlay": {
            "name": "Routegebeurtenissen overlayen",
            "description": "Legt twee lagen met routegebeurtenissen over elkaar op basis van intervaloverlap.",
            "params": {
              "primary_events": {
                "label": "Primaire gebeurtenissen",
                "description": "Primaire gebeurtenislaag."
              },
              "overlay_events": {
                "label": "Overlay-gebeurtenissen",
                "description": "Overlay-gebeurtenislaag."
              },
              "primary_route_field": {
                "label": "Primair routeveld",
                "description": "Route-identificatieveld van de primaire laag."
              },
              "primary_from_measure_field": {
                "label": "Primair veld beginmaat",
                "description": "Intervalbeginveld van de primaire laag."
              },
              "primary_to_measure_field": {
                "label": "Primair veld eindmaat",
                "description": "Intervaleindveld van de primaire laag."
              },
              "overlay_route_field": {
                "label": "Overlay-routeveld",
                "description": "Route-identificatieveld van de overlay-laag."
              },
              "overlay_from_measure_field": {
                "label": "Overlay-veld beginmaat",
                "description": "Intervalbeginveld van de overlay-laag."
              },
              "overlay_to_measure_field": {
                "label": "Overlay-veld eindmaat",
                "description": "Intervaleindveld van de overlay-laag."
              },
              "min_overlap_length": {
                "label": "Minimale overlaplengte",
                "description": "Minimale overlaplengte om te behouden (standaard 0.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoer-overlay-laag."
              }
            }
          },
          "route_event_points_from_layer": {
            "name": "Routegebeurtenispunten uit laag",
            "description": "Maakt gerouteerde puntgebeurtenissen uit een vectorlaag met gebeurtenissen en een routelaag.",
            "params": {
              "routes": {
                "label": "Routes",
                "description": "Invoerlaag met routelijnen."
              },
              "events": {
                "label": "Gebeurtenissen",
                "description": "Invoervectorlaag met gebeurtenissen."
              },
              "event_route_field": {
                "label": "Routeveld gebeurtenissen",
                "description": "Veld van de gebeurtenislaag met route-identificaties."
              },
              "measure_field": {
                "label": "Maatveld",
                "description": "Veld van de gebeurtenislaag met de maten van puntgebeurtenissen."
              },
              "route_id_field": {
                "label": "Route-ID-veld",
                "description": "Optioneel veld van de routelaag met route-identificaties. Standaard de FID van het object."
              },
              "write_event_fid": {
                "label": "Gebeurtenis-FID schrijven",
                "description": "EVENT_FID schrijven om de object-ID's van de brongebeurtenissen te behouden (standaard true)."
              },
              "write_event_xy": {
                "label": "Gebeurtenis-XY schrijven",
                "description": "X/Y-attributen van de brongebeurtenisgeometrie schrijven (standaard false)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Pad van de uitvoerpuntvector."
              }
            }
          },
          "route_event_points_from_table": {
            "name": "Routegebeurtenispunten uit tabel",
            "description": "Maakt gerouteerde puntgebeurtenissen uit een CSV-gebeurtenistabel en een routelaag.",
            "params": {
              "routes": {
                "label": "Routes",
                "description": "Invoerlaag met routelijnen."
              },
              "events": {
                "label": "Gebeurtenissen",
                "description": "Pad van de invoer-CSV-gebeurtenistabel."
              },
              "event_route_field": {
                "label": "Routeveld gebeurtenissen",
                "description": "CSV-veld met route-identificaties."
              },
              "measure_field": {
                "label": "Maatveld",
                "description": "CSV-veld met de maten van puntgebeurtenissen."
              },
              "route_id_field": {
                "label": "Route-ID-veld",
                "description": "Optioneel veld van de routelaag met route-identificaties. Standaard de FID van het object."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Pad van de uitvoerpuntvector."
              }
            }
          },
          "route_event_split": {
            "name": "Routegebeurtenissen splitsen",
            "description": "Splitst routegebeurtenissen op grensmaten per route.",
            "params": {
              "events": {
                "label": "Gebeurtenissen",
                "description": "Invoergebeurtenislaag met route-intervallen."
              },
              "boundaries": {
                "label": "Grenzen",
                "description": "Invoergrenslaag met breekpunten van routemetingen."
              },
              "event_route_field": {
                "label": "Routeveld gebeurtenissen",
                "description": "Route-identificatieveld van de gebeurtenislaag."
              },
              "from_measure_field": {
                "label": "Veld beginmaat",
                "description": "Intervalbeginveld van de gebeurtenislaag."
              },
              "to_measure_field": {
                "label": "Veld eindmaat",
                "description": "Intervaleindveld van de gebeurtenislaag."
              },
              "boundary_route_field": {
                "label": "Routeveld grenzen",
                "description": "Route-identificatieveld van de grenslaag."
              },
              "boundary_measure_field": {
                "label": "Maatveld grenzen",
                "description": "Metingveld van de grenslaag."
              },
              "min_segment_length": {
                "label": "Minimale segmentlengte",
                "description": "Optionele minimale lengte van te behouden gesplitste segmenten (standaard 0.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerlaag met gesplitste gebeurtenissen."
              }
            }
          },
          "route_measure_qa": {
            "name": "Kwaliteitscontrole routemetingen",
            "description": "Diagnosticeert gaten, overlappingen, niet-monotone reeksen en dubbele maten in routegebeurtenissen.",
            "params": {
              "events": {
                "label": "Gebeurtenissen",
                "description": "Invoergebeurtenislaag met route-intervallen."
              },
              "route_field": {
                "label": "Routeveld",
                "description": "Route-identificatieveld."
              },
              "from_measure_field": {
                "label": "Veld beginmaat",
                "description": "Veld met het begin van het interval."
              },
              "to_measure_field": {
                "label": "Veld eindmaat",
                "description": "Veld met het einde van het interval."
              },
              "gap_tolerance": {
                "label": "Hiaattolerantie",
                "description": "Tolerantie voor hiaten (standaard 0.0)."
              },
              "overlap_tolerance": {
                "label": "Overlaptolerantie",
                "description": "Tolerantie voor overlap (standaard 0.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerlaag met QA-diagnostiek."
              }
            }
          },
          "route_recalibrate": {
            "name": "Route herkalibreren",
            "description": "Herkalibreert bewerkte routematen op basis van een referentieroutelaag met behoud van de continuïteit van de routematen.",
            "params": {
              "original_routes": {
                "label": "Oorspronkelijke routes",
                "description": "Referentieroutes met eerder gekalibreerde metingen."
              },
              "edited_routes": {
                "label": "Bewerkte routes",
                "description": "Bewerkte routes die opnieuw moeten worden gekalibreerd."
              },
              "route_id_field": {
                "label": "Route-ID-veld",
                "description": "Optioneel gedeeld route-identificatieveld. Standaard de FID van het object."
              },
              "from_measure_field": {
                "label": "Veld beginmaat",
                "description": "Veldnaam van het begin van de meting (standaard 'from_measure')."
              },
              "to_measure_field": {
                "label": "Veld eindmaat",
                "description": "Veldnaam van het einde van de meting (standaard 'to_measure')."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerlaag met opnieuw gekalibreerde routes."
              }
            }
          },
          "build_network_topology": {
            "name": "Netwerktopologie opbouwen",
            "description": "Bouwt een topologisch lijnennetwerk met knopen, met stabiele uitvoer van randen en knopen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlaag met lijnennetwerk."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Optionele snaptolerantie die wordt gebruikt bij het detecteren en splitsen van kruisingen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector met topologisch genoodde verbindingen."
              },
              "nodes_output": {
                "label": "Knopenuitvoer",
                "description": "Optioneel uitvoerpad van de knooppuntvector."
              }
            }
          },
          "closest_facility_network": {
            "name": "Dichtstbijzijnde voorziening (netwerk)",
            "description": "Vindt voor elk incidentpunt de netwerkroute met de laagste kosten naar het dichtstbijzijnde bereikbare voorzieningspunt.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlaag met lijnennetwerk."
              },
              "incidents": {
                "label": "Incidenten",
                "description": "Puntenlaag met incidenten/vraag."
              },
              "facilities": {
                "label": "Voorzieningen",
                "description": "Puntenlaag met voorzieningen/aanbod."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Optionele snaptolerantie voor knooppunten bij het opbouwen van de graaf."
              },
              "max_snap_distance": {
                "label": "Maximale snapafstand",
                "description": "Optionele maximale afstand van incident-/voorzieningspunten tot het dichtstbijzijnde netwerkknooppunt."
              },
              "edge_cost_field": {
                "label": "Veld kantkosten",
                "description": "Optioneel numeriek lijnveld dat als impedantievermenigvuldiger voor de segmentlengte wordt gebruikt."
              },
              "one_way_field": {
                "label": "Eenrichtingsveld",
                "description": "Optioneel lijnveld dat eenrichtingsverbindingen in digitaliseringsrichting markeert (true/1/yes betekent alleen van het eerste naar het tweede knikpunt)."
              },
              "blocked_field": {
                "label": "Veld geblokkeerd",
                "description": "Optioneel lijnveld dat geblokkeerde/gesloten verbindingen markeert die van de routering worden uitgesloten (true/1/yes blokkeert)."
              },
              "barriers": {
                "label": "Barrières",
                "description": "Optionele puntenlaag met barrières; de dichtstbijzijnde netwerkknooppunten worden voor doorgang geblokkeerd."
              },
              "barrier_snap_distance": {
                "label": "Snapafstand barrières",
                "description": "Optionele maximale afstand van elk barrièrepunt tot een netwerkknooppunt om te blokkeren."
              },
              "node_cost_points": {
                "label": "Knoopkostenpunten",
                "description": "Optionele puntenlaag met toegangskosten per knooppunt (bijvoorbeeld vertraging bij kruisingen)."
              },
              "node_cost_field": {
                "label": "Knoopkostenveld",
                "description": "Numeriek veld in node_cost_points met niet-negatieve kosten per knooppunt."
              },
              "node_cost_snap_distance": {
                "label": "Snapafstand knoopkosten",
                "description": "Optionele maximale afstand van elk knooppuntkostenpunt tot een netwerkknooppunt voor de toewijzing."
              },
              "turn_penalty": {
                "label": "Afslagstraf",
                "description": "Optionele additieve kosten voor niet-rechtdoorgaande afslagen bij netwerkknooppunten."
              },
              "u_turn_penalty": {
                "label": "Straf voor keren",
                "description": "Optionele additieve kosten voor U-bochtovergangen."
              },
              "forbid_u_turns": {
                "label": "Keren verbieden",
                "description": "Indien true, worden U-bochtovergangen niet toegestaan."
              },
              "forbid_left_turns": {
                "label": "Linksaf verbieden",
                "description": "Indien true, worden linksaf-overgangen niet toegestaan."
              },
              "forbid_right_turns": {
                "label": "Rechtsaf verbieden",
                "description": "Indien true, worden rechtsaf-overgangen niet toegestaan."
              },
              "turn_restrictions_csv": {
                "label": "CSV met afslagbeperkingen",
                "description": "Optioneel CSV-bestand met afslagovergangen met de kolommen prev_x,prev_y,node_x,node_y,next_x,next_y. Optionele kolommen: forbidden (standaard true wanneer geen turn_cost-kolom is opgegeven) en turn_cost (of penalty/cost/extra_cost) voor additieve kosten per afslag."
              },
              "temporal_cost_profile": {
                "label": "Temporeel kostenprofiel",
                "description": "Optioneel CSV-bestand dat tijdsafhankelijke verbindingskosten definieert (kolommen: edge_id,dow,start_minute,end_minute,value)."
              },
              "temporal_edge_id_field": {
                "label": "Temporeel kant-ID-veld",
                "description": "Optioneel netwerkveld dat wordt gebruikt om de edge_id-waarden van temporal_cost_profile te koppelen (standaard EDGE_ID)."
              },
              "departure_time": {
                "label": "Vertrektijd",
                "description": "Optionele vertrektijd in RFC3339-notatie die wordt gebruikt voor het opzoeken van het temporele profiel."
              },
              "temporal_mode": {
                "label": "Temporele modus",
                "description": "Optionele temporele interpretatiemodus: multiplier of absolute."
              },
              "temporal_fallback": {
                "label": "Temporele terugval",
                "description": "Optionele terugvaloptie wanneer een temporele rij ontbreekt: static_cost of error."
              },
              "temporal_profile_report": {
                "label": "Temporeel profielrapport",
                "description": "Optioneel JSON-uitvoerpad voor diagnostiek van het temporele profiel (dekking, niet-gekoppelde verbindingen, gebruik van terugvalopties)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de lijnvector met routes naar de dichtstbijzijnde voorziening."
              }
            }
          },
          "generate_network_nodes": {
            "name": "Netwerkknopen genereren",
            "description": "Genereert netwerkknopen en knoopdiagnostiek uit de topologie van het lijnwerk.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlaag met lijnennetwerk."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Optionele snaptolerantie voor knooppunten bij het opbouwen van de graaf."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de puntvector met knooppunten."
              }
            }
          },
          "k_shortest_paths_network": {
            "name": "K kortste paden (netwerk)",
            "description": "Vindt de k kortste enkelvoudige paden tussen begin- en eindcoördinaten over een lijnennetwerk.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlaag met lijnennetwerk."
              },
              "start_x": {
                "label": "Start X",
                "description": "X-coördinaat van het beginpunt."
              },
              "start_y": {
                "label": "Start Y",
                "description": "Y-coördinaat van het beginpunt."
              },
              "end_x": {
                "label": "Einde X",
                "description": "X-coördinaat van het eindpunt."
              },
              "end_y": {
                "label": "Einde Y",
                "description": "Y-coördinaat van het eindpunt."
              },
              "k": {
                "label": "K",
                "description": "Aantal kortste paden dat moet worden geretourneerd."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Optionele snaptolerantie voor knooppunten bij het opbouwen van de graaf."
              },
              "max_snap_distance": {
                "label": "Maximale snapafstand",
                "description": "Optionele maximale afstand van de begin-/eindcoördinaten tot het dichtstbijzijnde netwerkknooppunt."
              },
              "edge_cost_field": {
                "label": "Veld kantkosten",
                "description": "Optioneel numeriek lijnveld dat als impedantievermenigvuldiger voor de segmentlengte wordt gebruikt."
              },
              "one_way_field": {
                "label": "Eenrichtingsveld",
                "description": "Optioneel lijnveld dat eenrichtingsverbindingen in digitaliseringsrichting markeert (true/1/yes betekent alleen van het eerste naar het tweede knikpunt)."
              },
              "blocked_field": {
                "label": "Veld geblokkeerd",
                "description": "Optioneel lijnveld dat geblokkeerde/gesloten verbindingen markeert die van de routering worden uitgesloten (true/1/yes blokkeert)."
              },
              "barriers": {
                "label": "Barrières",
                "description": "Optionele puntenlaag met barrières; de dichtstbijzijnde netwerkknooppunten worden voor doorgang geblokkeerd."
              },
              "barrier_snap_distance": {
                "label": "Snapafstand barrières",
                "description": "Optionele maximale afstand van elk barrièrepunt tot een netwerkknooppunt om te blokkeren."
              },
              "node_cost_points": {
                "label": "Knoopkostenpunten",
                "description": "Optionele puntenlaag met toegangskosten per knooppunt (bijvoorbeeld vertraging bij kruisingen)."
              },
              "node_cost_field": {
                "label": "Knoopkostenveld",
                "description": "Numeriek veld in node_cost_points met niet-negatieve kosten per knooppunt."
              },
              "node_cost_snap_distance": {
                "label": "Snapafstand knoopkosten",
                "description": "Optionele maximale afstand van elk knooppuntkostenpunt tot een netwerkknooppunt voor de toewijzing."
              },
              "turn_penalty": {
                "label": "Afslagstraf",
                "description": "Optionele additieve kosten voor niet-rechtdoorgaande afslagen bij netwerkknooppunten."
              },
              "u_turn_penalty": {
                "label": "Straf voor keren",
                "description": "Optionele additieve kosten voor U-bochtovergangen."
              },
              "forbid_u_turns": {
                "label": "Keren verbieden",
                "description": "Indien true, worden U-bochtovergangen niet toegestaan."
              },
              "forbid_left_turns": {
                "label": "Linksaf verbieden",
                "description": "Indien true, worden linksaf-overgangen niet toegestaan."
              },
              "forbid_right_turns": {
                "label": "Rechtsaf verbieden",
                "description": "Indien true, worden rechtsaf-overgangen niet toegestaan."
              },
              "turn_restrictions_csv": {
                "label": "CSV met afslagbeperkingen",
                "description": "Optioneel CSV-bestand met afslagovergangen met de kolommen prev_x,prev_y,node_x,node_y,next_x,next_y. Optionele kolommen: forbidden (standaard true wanneer geen turn_cost-kolom is opgegeven) en turn_cost (of penalty/cost/extra_cost) voor additieve kosten per afslag."
              },
              "temporal_cost_profile": {
                "label": "Temporeel kostenprofiel",
                "description": "Optioneel CSV-bestand dat tijdsafhankelijke verbindingskosten definieert (kolommen: edge_id,dow,start_minute,end_minute,value)."
              },
              "temporal_edge_id_field": {
                "label": "Temporeel kant-ID-veld",
                "description": "Optioneel netwerkveld dat wordt gebruikt om de edge_id-waarden van temporal_cost_profile te koppelen (standaard EDGE_ID)."
              },
              "departure_time": {
                "label": "Vertrektijd",
                "description": "Optionele vertrektijd in RFC3339-notatie die wordt gebruikt voor het opzoeken van het temporele profiel."
              },
              "temporal_mode": {
                "label": "Temporele modus",
                "description": "Optionele temporele interpretatiemodus: multiplier of absolute."
              },
              "temporal_fallback": {
                "label": "Temporele terugval",
                "description": "Optionele terugvaloptie wanneer een temporele rij ontbreekt: static_cost of error."
              },
              "temporal_profile_report": {
                "label": "Temporeel profielrapport",
                "description": "Optioneel JSON-uitvoerpad voor diagnostiek van het temporele profiel (dekking, niet-gekoppelde verbindingen, gebruik van terugvalopties)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Pad van de uitvoerlijnvector."
              }
            }
          },
          "location_allocation_network": {
            "name": "Locatie-allocatie (netwerk)",
            "description": "Selecteert k voorzieningen en wijst vraagpunten toe op basis van netwerkkosten met een gretige of exacte oplossing, optionele capaciteiten en beperkingen voor verplichte/verboden kandidaten.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlaag met lijnennetwerk."
              },
              "demand_points": {
                "label": "Vraagpunten",
                "description": "Toe te wijzen puntenlaag met vraag."
              },
              "facilities": {
                "label": "Voorzieningen",
                "description": "Puntenlaag met kandidaat-voorzieningen."
              },
              "facility_count": {
                "label": "Aantal voorzieningen",
                "description": "Aantal te selecteren voorzieningen (k)."
              },
              "solver_mode": {
                "label": "Oplossermodus",
                "description": "Oplossingsmodus: auto, greedy of exact (exact is bedoeld voor kleinere problemen)."
              },
              "demand_weight_field": {
                "label": "Veld vraaggewicht",
                "description": "Optioneel numeriek veld met vraaggewicht in demand_points (standaard weight=1)."
              },
              "facility_capacity_field": {
                "label": "Veld voorzieningscapaciteit",
                "description": "Optioneel numeriek capaciteitsveld in facilities; de capaciteit wordt verbruikt door de waarden van demand_weight_field."
              },
              "required_facility_field": {
                "label": "Veld verplichte voorziening",
                "description": "Optioneel booleaans voorzieningsveld dat kandidaten markeert die geselecteerd moeten worden."
              },
              "forbidden_facility_field": {
                "label": "Veld verboden voorziening",
                "description": "Optioneel booleaans voorzieningsveld dat kandidaten markeert die niet geselecteerd mogen worden."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Optionele snaptolerantie voor knooppunten bij het opbouwen van de graaf."
              },
              "max_snap_distance": {
                "label": "Maximale snapafstand",
                "description": "Optionele maximale afstand van vraag-/voorzieningspunten tot het dichtstbijzijnde netwerkknooppunt."
              },
              "edge_cost_field": {
                "label": "Veld kantkosten",
                "description": "Optioneel numeriek lijnveld dat als impedantievermenigvuldiger voor de segmentlengte wordt gebruikt."
              },
              "one_way_field": {
                "label": "Eenrichtingsveld",
                "description": "Optioneel lijnveld dat eenrichtingsverbindingen in digitaliseringsrichting markeert (true/1/yes betekent alleen van het eerste naar het tweede knikpunt)."
              },
              "blocked_field": {
                "label": "Veld geblokkeerd",
                "description": "Optioneel lijnveld dat geblokkeerde/gesloten verbindingen markeert die van de routering worden uitgesloten (true/1/yes blokkeert)."
              },
              "barriers": {
                "label": "Barrières",
                "description": "Optionele puntenlaag met barrières; de dichtstbijzijnde netwerkknooppunten worden voor doorgang geblokkeerd."
              },
              "barrier_snap_distance": {
                "label": "Snapafstand barrières",
                "description": "Optionele maximale afstand van elk barrièrepunt tot een netwerkknooppunt om te blokkeren."
              },
              "node_cost_points": {
                "label": "Knoopkostenpunten",
                "description": "Optionele puntenlaag met toegangskosten per knooppunt (bijvoorbeeld vertraging bij kruisingen)."
              },
              "node_cost_field": {
                "label": "Knoopkostenveld",
                "description": "Numeriek veld in node_cost_points met niet-negatieve kosten per knooppunt."
              },
              "node_cost_snap_distance": {
                "label": "Snapafstand knoopkosten",
                "description": "Optionele maximale afstand van elk knooppuntkostenpunt tot een netwerkknooppunt voor de toewijzing."
              },
              "turn_penalty": {
                "label": "Afslagstraf",
                "description": "Optionele additieve kosten voor niet-rechtdoorgaande afslagen bij netwerkknooppunten."
              },
              "u_turn_penalty": {
                "label": "Straf voor keren",
                "description": "Optionele additieve kosten voor U-bochtovergangen."
              },
              "forbid_u_turns": {
                "label": "Keren verbieden",
                "description": "Indien true, worden U-bochtovergangen niet toegestaan."
              },
              "forbid_left_turns": {
                "label": "Linksaf verbieden",
                "description": "Indien true, worden linksaf-overgangen niet toegestaan."
              },
              "forbid_right_turns": {
                "label": "Rechtsaf verbieden",
                "description": "Indien true, worden rechtsaf-overgangen niet toegestaan."
              },
              "turn_restrictions_csv": {
                "label": "CSV met afslagbeperkingen",
                "description": "Optioneel CSV-bestand met afslagovergangen met de kolommen prev_x,prev_y,node_x,node_y,next_x,next_y. Optionele kolommen: forbidden (standaard true wanneer geen turn_cost-kolom is opgegeven) en turn_cost (of penalty/cost/extra_cost) voor additieve kosten per afslag."
              },
              "temporal_cost_profile": {
                "label": "Temporeel kostenprofiel",
                "description": "Optioneel CSV-bestand dat tijdsafhankelijke verbindingskosten definieert (kolommen: edge_id,dow,start_minute,end_minute,value)."
              },
              "temporal_edge_id_field": {
                "label": "Temporeel kant-ID-veld",
                "description": "Optioneel netwerkveld dat wordt gebruikt om de edge_id-waarden van temporal_cost_profile te koppelen (standaard EDGE_ID)."
              },
              "departure_time": {
                "label": "Vertrektijd",
                "description": "Optionele vertrektijd in RFC3339-notatie die wordt gebruikt voor het opzoeken van het temporele profiel."
              },
              "temporal_mode": {
                "label": "Temporele modus",
                "description": "Optionele temporele interpretatiemodus: multiplier of absolute."
              },
              "temporal_fallback": {
                "label": "Temporele terugval",
                "description": "Optionele terugvaloptie wanneer een temporele rij ontbreekt: static_cost of error."
              },
              "temporal_profile_report": {
                "label": "Temporeel profielrapport",
                "description": "Optioneel JSON-uitvoerpad voor diagnostiek van het temporele profiel (dekking, niet-gekoppelde verbindingen, gebruik van terugvalopties)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de lijnvector met toegewezen routes."
              }
            }
          },
          "map_matching_v1": {
            "name": "Map matching V1",
            "description": "Snapt trajectpunten op een lijnennetwerk en reconstrueert een afgeleide route met diagnostiek.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlaag met lijnennetwerk."
              },
              "trajectory_points": {
                "label": "Trajectpunten",
                "description": "Invoerpuntenlaag met trajecten."
              },
              "timestamp_field": {
                "label": "Tijdstempelveld",
                "description": "Trajectveld dat wordt gebruikt voor de tijdsvolgorde."
              },
              "search_radius": {
                "label": "Zoekstraal",
                "description": "Optionele zoekradius voor kandidaten rond elk trajectpunt."
              },
              "candidate_k": {
                "label": "Kandidaat-K",
                "description": "Optioneel aantal dichtstbijzijnde kandidaten dat per punt wordt behouden."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Optionele snaptolerantie voor knooppunten bij het opbouwen van de graaf."
              },
              "max_snap_distance": {
                "label": "Maximale snapafstand",
                "description": "Optionele maximale afstand voor het snappen van trajectpunten aan netwerkknooppunten."
              },
              "edge_cost_field": {
                "label": "Veld kantkosten",
                "description": "Optioneel numeriek lijnveld dat als impedantievermenigvuldiger voor de segmentlengte wordt gebruikt."
              },
              "one_way_field": {
                "label": "Eenrichtingsveld",
                "description": "Optioneel lijnveld dat eenrichtingsverbindingen in digitaliseringsrichting markeert (ondersteunt FT/TF/B en verouderde booleaanse waarden)."
              },
              "blocked_field": {
                "label": "Veld geblokkeerd",
                "description": "Optioneel lijnveld dat geblokkeerde/gesloten verbindingen markeert die van de routering worden uitgesloten (true/1/yes blokkeert)."
              },
              "barriers": {
                "label": "Barrières",
                "description": "Optionele puntenlaag met barrières; de dichtstbijzijnde netwerkknooppunten worden voor doorgang geblokkeerd."
              },
              "barrier_snap_distance": {
                "label": "Snapafstand barrières",
                "description": "Optionele maximale afstand van elk barrièrepunt tot een netwerkknooppunt om te blokkeren."
              },
              "node_cost_points": {
                "label": "Knoopkostenpunten",
                "description": "Optionele puntenlaag met toegangskosten per knooppunt (bijvoorbeeld vertraging bij kruisingen)."
              },
              "node_cost_field": {
                "label": "Knoopkostenveld",
                "description": "Numeriek veld in node_cost_points met niet-negatieve kosten per knooppunt."
              },
              "node_cost_snap_distance": {
                "label": "Snapafstand knoopkosten",
                "description": "Optionele maximale afstand van elk knooppuntkostenpunt tot een netwerkknooppunt voor de toewijzing."
              },
              "turn_penalty": {
                "label": "Afslagstraf",
                "description": "Optionele additieve kosten voor niet-rechtdoorgaande afslagen bij netwerkknooppunten."
              },
              "u_turn_penalty": {
                "label": "Straf voor keren",
                "description": "Optionele additieve kosten voor U-bochtovergangen."
              },
              "forbid_u_turns": {
                "label": "Keren verbieden",
                "description": "Indien true, worden U-bochtovergangen niet toegestaan."
              },
              "forbid_left_turns": {
                "label": "Linksaf verbieden",
                "description": "Indien true, worden linksaf-overgangen niet toegestaan."
              },
              "forbid_right_turns": {
                "label": "Rechtsaf verbieden",
                "description": "Indien true, worden rechtsaf-overgangen niet toegestaan."
              },
              "turn_restrictions_csv": {
                "label": "CSV met afslagbeperkingen",
                "description": "Optioneel CSV-bestand met afslagovergangen met de kolommen prev_x,prev_y,node_x,node_y,next_x,next_y. Optionele kolommen: forbidden (standaard true wanneer geen turn_cost-kolom is opgegeven) en turn_cost (of penalty/cost/extra_cost) voor additieve kosten per afslag."
              },
              "matched_points_output": {
                "label": "Uitvoer gematchte punten",
                "description": "Optioneel uitvoerpad van de vector met diagnostiek per punt."
              },
              "match_report": {
                "label": "Matchrapport",
                "description": "Optioneel JSON-uitvoerpad voor samenvattende diagnostiek."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de lijnvector met de afgeleide route."
              }
            }
          },
          "multimodal_od_cost_matrix": {
            "name": "Multimodale HB-kostenmatrix",
            "description": "Berekent in batches multimodale herkomst-bestemmingskosten (OD) en samenvattingen per vervoerswijze tussen sets van herkomst- en bestemmingspunten.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlaag met lijnennetwerk."
              },
              "origins": {
                "label": "Herkomsten",
                "description": "Puntenlaag met herkomsten."
              },
              "destinations": {
                "label": "Bestemmingen",
                "description": "Puntenlaag met bestemmingen."
              },
              "mode_field": {
                "label": "Modusveld",
                "description": "Lijnattribuutveld dat de vervoerswijze per segment aangeeft."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Optionele snaptolerantie voor knooppunten bij het opbouwen van de graaf."
              },
              "max_snap_distance": {
                "label": "Maximale snapafstand",
                "description": "Optionele maximale afstand van herkomst-/bestemmingspunten tot het dichtstbijzijnde netwerkknooppunt."
              },
              "default_mode_speed": {
                "label": "Standaardsnelheid modus",
                "description": "Standaardsnelheid van de vervoerswijze in coördinaateenheden per tijdseenheid (standaard: 1)."
              },
              "mode_speed_overrides": {
                "label": "Snelheidsoverschrijvingen per modus",
                "description": "Optionele door komma's gescheiden mode:speed-overschrijvingen (bijvoorbeeld: walk:1.4,drive:12,transit:8)."
              },
              "allowed_modes": {
                "label": "Toegestane modi",
                "description": "Optionele door komma's gescheiden lijst met toegestane vervoerswijzen die in de routering worden meegenomen."
              },
              "transfer_penalty": {
                "label": "Overstapstraf",
                "description": "Optionele additieve strafwaarde die wordt toegepast telkens als de route van vervoerswijze verandert."
              },
              "temporal_cost_profile": {
                "label": "Temporeel kostenprofiel",
                "description": "Optioneel CSV-bestand dat tijdsafhankelijke verbindingskosten definieert (kolommen: edge_id,dow,start_minute,end_minute,value)."
              },
              "temporal_edge_id_field": {
                "label": "Temporeel kant-ID-veld",
                "description": "Optioneel netwerkveld dat wordt gebruikt om de edge_id-waarden van temporal_cost_profile te koppelen (standaard EDGE_ID)."
              },
              "departure_time": {
                "label": "Vertrektijd",
                "description": "Optionele vertrektijd in RFC3339-notatie die wordt gebruikt voor het opzoeken van het temporele profiel."
              },
              "temporal_mode": {
                "label": "Temporele modus",
                "description": "Optionele temporele interpretatiemodus: multiplier of absolute."
              },
              "temporal_fallback": {
                "label": "Temporele terugval",
                "description": "Optionele terugvaloptie wanneer een temporele rij ontbreekt: static_cost of error."
              },
              "temporal_profile_report": {
                "label": "Temporeel profielrapport",
                "description": "Optioneel JSON-uitvoerpad voor diagnostiek van het temporele profiel bij gebruik van directe temporele invoer."
              },
              "scenario_bundle_csv": {
                "label": "CSV met scenariobundel",
                "description": "Optioneel CSV-bestand met benoemde temporele scenario's voor vergelijkende OD-uitvoer met meerdere scenario's."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het CSV-bestand."
              }
            }
          },
          "multimodal_routes_from_od": {
            "name": "Multimodale routes uit HB-paren",
            "description": "Bouwt routegeometrieën voor multimodale paren van herkomst- en bestemmingspunten met samenvattingen per vervoerswijze per route.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlaag met lijnennetwerk."
              },
              "origins": {
                "label": "Herkomsten",
                "description": "Puntenlaag met herkomsten."
              },
              "destinations": {
                "label": "Bestemmingen",
                "description": "Puntenlaag met bestemmingen."
              },
              "mode_field": {
                "label": "Modusveld",
                "description": "Lijnattribuutveld dat de vervoerswijze per segment aangeeft."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Optionele snaptolerantie voor knooppunten bij het opbouwen van de graaf."
              },
              "max_snap_distance": {
                "label": "Maximale snapafstand",
                "description": "Optionele maximale afstand van herkomst-/bestemmingspunten tot het dichtstbijzijnde netwerkknooppunt."
              },
              "default_mode_speed": {
                "label": "Standaardsnelheid modus",
                "description": "Standaardsnelheid van de vervoerswijze in coördinaateenheden per tijdseenheid (standaard: 1)."
              },
              "mode_speed_overrides": {
                "label": "Snelheidsoverschrijvingen per modus",
                "description": "Optionele door komma's gescheiden mode:speed-overschrijvingen (bijvoorbeeld: walk:1.4,drive:12,transit:8)."
              },
              "allowed_modes": {
                "label": "Toegestane modi",
                "description": "Optionele door komma's gescheiden lijst met toegestane vervoerswijzen die in de routering worden meegenomen."
              },
              "transfer_penalty": {
                "label": "Overstapstraf",
                "description": "Optionele additieve strafwaarde die wordt toegepast telkens als de route van vervoerswijze verandert."
              },
              "temporal_cost_profile": {
                "label": "Temporeel kostenprofiel",
                "description": "Optioneel CSV-bestand dat tijdsafhankelijke verbindingskosten definieert (kolommen: edge_id,dow,start_minute,end_minute,value)."
              },
              "temporal_edge_id_field": {
                "label": "Temporeel kant-ID-veld",
                "description": "Optioneel netwerkveld dat wordt gebruikt om de edge_id-waarden van temporal_cost_profile te koppelen (standaard EDGE_ID)."
              },
              "departure_time": {
                "label": "Vertrektijd",
                "description": "Optionele vertrektijd in RFC3339-notatie die wordt gebruikt voor het opzoeken van het temporele profiel."
              },
              "temporal_mode": {
                "label": "Temporele modus",
                "description": "Optionele temporele interpretatiemodus: multiplier of absolute."
              },
              "temporal_fallback": {
                "label": "Temporele terugval",
                "description": "Optionele terugvaloptie wanneer een temporele rij ontbreekt: static_cost of error."
              },
              "temporal_profile_report": {
                "label": "Temporeel profielrapport",
                "description": "Optioneel JSON-uitvoerpad voor diagnostiek van het temporele profiel bij gebruik van directe temporele invoer."
              },
              "scenario_bundle_csv": {
                "label": "CSV met scenariobundel",
                "description": "Optioneel CSV-bestand met benoemde temporele scenario's voor vergelijkende route-uitvoer met meerdere scenario's."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de lijnvector met routes."
              }
            }
          },
          "multimodal_shortest_path": {
            "name": "Multimodaal kortste pad",
            "description": "Vindt een kortste pad over een lijnennetwerk dat rekening houdt met de vervoerswijze, met instelbare overstapboetes.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlaag met lijnennetwerk."
              },
              "start_x": {
                "label": "Start X",
                "description": "X-coördinaat van het beginpunt."
              },
              "start_y": {
                "label": "Start Y",
                "description": "Y-coördinaat van het beginpunt."
              },
              "end_x": {
                "label": "Einde X",
                "description": "X-coördinaat van het eindpunt."
              },
              "end_y": {
                "label": "Einde Y",
                "description": "Y-coördinaat van het eindpunt."
              },
              "mode_field": {
                "label": "Modusveld",
                "description": "Lijnattribuutveld dat de vervoerswijze per segment aangeeft."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Optionele snaptolerantie voor knooppunten bij het opbouwen van de graaf."
              },
              "max_snap_distance": {
                "label": "Maximale snapafstand",
                "description": "Optionele maximale afstand van de begin-/eindcoördinaten tot het dichtstbijzijnde netwerkknooppunt."
              },
              "default_mode_speed": {
                "label": "Standaardsnelheid modus",
                "description": "Standaardsnelheid van de vervoerswijze in coördinaateenheden per tijdseenheid (standaard: 1)."
              },
              "mode_speed_overrides": {
                "label": "Snelheidsoverschrijvingen per modus",
                "description": "Optionele door komma's gescheiden mode:speed-overschrijvingen (bijvoorbeeld: walk:1.4,drive:12,transit:8)."
              },
              "allowed_modes": {
                "label": "Toegestane modi",
                "description": "Optionele door komma's gescheiden lijst met toegestane vervoerswijzen die in de routering worden meegenomen."
              },
              "transfer_penalty": {
                "label": "Overstapstraf",
                "description": "Optionele additieve strafwaarde die wordt toegepast telkens als de route van vervoerswijze verandert."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Pad van de uitvoerlijnvector."
              }
            }
          },
          "network_accessibility_metrics": {
            "name": "Netwerktoegankelijkheidsmaten",
            "description": "Berekent toegankelijkheidsindices voor herkomstpunten op basis van de bereikbaarheid van bestemmingen, met optionele impedantiegrenzen en vervalfuncties.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlaag met lijnennetwerk."
              },
              "origins": {
                "label": "Herkomsten",
                "description": "Puntenlaag met herkomsten."
              },
              "destinations": {
                "label": "Bestemmingen",
                "description": "Puntenlaag met bestemmingen."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Optionele snaptolerantie voor knooppunten bij het opbouwen van de graaf."
              },
              "max_snap_distance": {
                "label": "Maximale snapafstand",
                "description": "Optionele maximale afstand van herkomst-/bestemmingspunten tot het dichtstbijzijnde netwerkknooppunt."
              },
              "impedance_cutoff": {
                "label": "Impedantie-afkapwaarde",
                "description": "Optionele maximale afstandsdrempel voor het tellen van bereikbare bestemmingen (standaard: oneindig)."
              },
              "decay_function": {
                "label": "Vervalfunctie",
                "description": "Optionele afnamefunctie: 'none' (standaard), 'linear' of 'exponential' voor afstandsgewogen bereikbaarheid."
              },
              "decay_parameter": {
                "label": "Vervalparameter",
                "description": "Optionele afnameparameter (lambda voor exponential, snelheid voor linear)."
              },
              "edge_cost_field": {
                "label": "Veld kantkosten",
                "description": "Optioneel numeriek lijnveld dat als impedantievermenigvuldiger voor de segmentlengte wordt gebruikt."
              },
              "one_way_field": {
                "label": "Eenrichtingsveld",
                "description": "Optioneel lijnveld dat eenrichtingsverbindingen in digitaliseringsrichting markeert (ondersteunt FT/TF/B en verouderde booleaanse waarden)."
              },
              "blocked_field": {
                "label": "Veld geblokkeerd",
                "description": "Optioneel lijnveld dat geblokkeerde/gesloten verbindingen markeert die van de routering worden uitgesloten (true/1/yes blokkeert)."
              },
              "node_cost_points": {
                "label": "Knoopkostenpunten",
                "description": "Optionele puntenlaag met toegangskosten per knooppunt (bijvoorbeeld vertraging bij kruisingen)."
              },
              "node_cost_field": {
                "label": "Knoopkostenveld",
                "description": "Numeriek veld in node_cost_points met niet-negatieve kosten per knooppunt."
              },
              "node_cost_snap_distance": {
                "label": "Snapafstand knoopkosten",
                "description": "Optionele maximale afstand van elk knooppuntkostenpunt tot een netwerkknooppunt voor de toewijzing."
              },
              "parallel_execution": {
                "label": "Parallelle uitvoering",
                "description": "Indien true (standaard), worden herkomsten parallel geëvalueerd voor een snellere berekening van de bereikbaarheid."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de puntvector (herkomsten met bereikbaarheidsmaten)."
              }
            }
          },
          "network_centrality_metrics": {
            "name": "Netwerkcentraliteitsmaten",
            "description": "Berekent basismaten voor graad-, nabijheids- en tussenliggendheidscentraliteit voor netwerkknopen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlaag met lijnennetwerk."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Optionele snaptolerantie voor knooppunten bij het opbouwen van de graaf."
              },
              "edge_cost_field": {
                "label": "Veld kantkosten",
                "description": "Optioneel numeriek lijnveld dat als impedantievermenigvuldiger voor de segmentlengte wordt gebruikt."
              },
              "one_way_field": {
                "label": "Eenrichtingsveld",
                "description": "Optioneel lijnveld dat eenrichtingsverbindingen in digitaliseringsrichting markeert (ondersteunt FT/TF/B en verouderde booleaanse waarden)."
              },
              "blocked_field": {
                "label": "Veld geblokkeerd",
                "description": "Optioneel lijnveld dat geblokkeerde/gesloten verbindingen markeert die van de graafopbouw worden uitgesloten (true/1/yes blokkeert)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Pad van de uitvoerpuntvector."
              }
            }
          },
          "network_connected_components": {
            "name": "Samenhangende netwerkcomponenten",
            "description": "Kent aan elk lijnobject in een netwerk een ID van de verbonden component toe.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlaag met lijnennetwerk."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Optionele snaptolerantie voor knooppunten bij het opbouwen van de graaf."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Pad van de uitvoerlijnvector."
              }
            }
          },
          "network_node_degree": {
            "name": "Netwerkknoopgraad",
            "description": "Extraheert netwerkknopen uit lijnobjecten en berekent de knoopgraad en het knooptype.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlaag met lijnennetwerk."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Optionele snaptolerantie voor knooppunten bij het opbouwen van de graaf."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Pad van de uitvoerpuntvector."
              }
            }
          },
          "network_od_cost_matrix": {
            "name": "HB-kostenmatrix (netwerk)",
            "description": "Berekent de kosten van kortste paden tussen herkomsten en bestemmingen over een lijnennetwerk en schrijft een CSV-matrix.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlaag met lijnennetwerk."
              },
              "origins": {
                "label": "Herkomsten",
                "description": "Puntenlaag met herkomsten."
              },
              "destinations": {
                "label": "Bestemmingen",
                "description": "Puntenlaag met bestemmingen."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Optionele snaptolerantie voor knooppunten bij het opbouwen van de graaf."
              },
              "max_snap_distance": {
                "label": "Maximale snapafstand",
                "description": "Optionele maximale afstand van herkomst-/bestemmingspunten tot het dichtstbijzijnde netwerkknooppunt."
              },
              "edge_cost_field": {
                "label": "Veld kantkosten",
                "description": "Optioneel numeriek lijnveld dat als impedantievermenigvuldiger voor de segmentlengte wordt gebruikt."
              },
              "one_way_field": {
                "label": "Eenrichtingsveld",
                "description": "Optioneel lijnveld dat eenrichtingsverbindingen in digitaliseringsrichting markeert (ondersteunt FT/TF/B en verouderde booleaanse waarden)."
              },
              "blocked_field": {
                "label": "Veld geblokkeerd",
                "description": "Optioneel lijnveld dat geblokkeerde/gesloten verbindingen markeert die van de routering worden uitgesloten (true/1/yes blokkeert)."
              },
              "barriers": {
                "label": "Barrières",
                "description": "Optionele puntenlaag met barrières; de dichtstbijzijnde netwerkknooppunten worden voor doorgang geblokkeerd."
              },
              "barrier_snap_distance": {
                "label": "Snapafstand barrières",
                "description": "Optionele maximale afstand van elk barrièrepunt tot een netwerkknooppunt om te blokkeren."
              },
              "node_cost_points": {
                "label": "Knoopkostenpunten",
                "description": "Optionele puntenlaag met toegangskosten per knooppunt (bijvoorbeeld vertraging bij kruisingen)."
              },
              "node_cost_field": {
                "label": "Knoopkostenveld",
                "description": "Numeriek veld in node_cost_points met niet-negatieve kosten per knooppunt."
              },
              "node_cost_snap_distance": {
                "label": "Snapafstand knoopkosten",
                "description": "Optionele maximale afstand van elk knooppuntkostenpunt tot een netwerkknooppunt voor de toewijzing."
              },
              "turn_penalty": {
                "label": "Afslagstraf",
                "description": "Optionele additieve kosten voor niet-rechtdoorgaande afslagen bij netwerkknooppunten."
              },
              "u_turn_penalty": {
                "label": "Straf voor keren",
                "description": "Optionele additieve kosten voor U-bochtovergangen."
              },
              "forbid_u_turns": {
                "label": "Keren verbieden",
                "description": "Indien true, worden U-bochtovergangen niet toegestaan."
              },
              "forbid_left_turns": {
                "label": "Linksaf verbieden",
                "description": "Indien true, worden linksaf-overgangen niet toegestaan."
              },
              "forbid_right_turns": {
                "label": "Rechtsaf verbieden",
                "description": "Indien true, worden rechtsaf-overgangen niet toegestaan."
              },
              "turn_restrictions_csv": {
                "label": "CSV met afslagbeperkingen",
                "description": "Optioneel CSV-bestand met afslagovergangen met de kolommen prev_x,prev_y,node_x,node_y,next_x,next_y. Optionele kolommen: forbidden (standaard true wanneer geen turn_cost-kolom is opgegeven) en turn_cost (of penalty/cost/extra_cost) voor additieve kosten per afslag."
              },
              "temporal_cost_profile": {
                "label": "Temporeel kostenprofiel",
                "description": "Optioneel CSV-bestand dat tijdsafhankelijke verbindingskosten definieert (kolommen: edge_id,dow,start_minute,end_minute,value)."
              },
              "temporal_edge_id_field": {
                "label": "Temporeel kant-ID-veld",
                "description": "Optioneel netwerkveld dat wordt gebruikt om de edge_id-waarden van temporal_cost_profile te koppelen (standaard EDGE_ID)."
              },
              "departure_time": {
                "label": "Vertrektijd",
                "description": "Optionele vertrektijd in RFC3339-notatie die wordt gebruikt voor het opzoeken van het temporele profiel."
              },
              "temporal_mode": {
                "label": "Temporele modus",
                "description": "Optionele temporele interpretatiemodus: multiplier of absolute."
              },
              "temporal_fallback": {
                "label": "Temporele terugval",
                "description": "Optionele terugvaloptie wanneer een temporele rij ontbreekt: static_cost of error."
              },
              "temporal_profile_report": {
                "label": "Temporeel profielrapport",
                "description": "Optioneel JSON-uitvoerpad voor diagnostiek van het temporele profiel (dekking, niet-gekoppelde verbindingen, gebruik van terugvalopties)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het CSV-bestand."
              }
            }
          },
          "network_routes_from_od": {
            "name": "Routes uit HB-paren (netwerk)",
            "description": "Bouwt routegeometrieën voor paren van herkomst- en bestemmingspunten over een lijnennetwerk.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlaag met lijnennetwerk."
              },
              "origins": {
                "label": "Herkomsten",
                "description": "Puntenlaag met herkomsten."
              },
              "destinations": {
                "label": "Bestemmingen",
                "description": "Puntenlaag met bestemmingen."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Optionele snaptolerantie voor knooppunten bij het opbouwen van de graaf."
              },
              "max_snap_distance": {
                "label": "Maximale snapafstand",
                "description": "Optionele maximale afstand van herkomst-/bestemmingspunten tot het dichtstbijzijnde netwerkknooppunt."
              },
              "edge_cost_field": {
                "label": "Veld kantkosten",
                "description": "Optioneel numeriek lijnveld dat als impedantievermenigvuldiger voor de segmentlengte wordt gebruikt."
              },
              "one_way_field": {
                "label": "Eenrichtingsveld",
                "description": "Optioneel lijnveld dat eenrichtingsverbindingen in digitaliseringsrichting markeert (ondersteunt FT/TF/B en verouderde booleaanse waarden)."
              },
              "blocked_field": {
                "label": "Veld geblokkeerd",
                "description": "Optioneel lijnveld dat geblokkeerde/gesloten verbindingen markeert die van de routering worden uitgesloten (true/1/yes blokkeert)."
              },
              "barriers": {
                "label": "Barrières",
                "description": "Optionele puntenlaag met barrières; de dichtstbijzijnde netwerkknooppunten worden voor doorgang geblokkeerd."
              },
              "barrier_snap_distance": {
                "label": "Snapafstand barrières",
                "description": "Optionele maximale afstand van elk barrièrepunt tot een netwerkknooppunt om te blokkeren."
              },
              "node_cost_points": {
                "label": "Knoopkostenpunten",
                "description": "Optionele puntenlaag met toegangskosten per knooppunt (bijvoorbeeld vertraging bij kruisingen)."
              },
              "node_cost_field": {
                "label": "Knoopkostenveld",
                "description": "Numeriek veld in node_cost_points met niet-negatieve kosten per knooppunt."
              },
              "node_cost_snap_distance": {
                "label": "Snapafstand knoopkosten",
                "description": "Optionele maximale afstand van elk knooppuntkostenpunt tot een netwerkknooppunt voor de toewijzing."
              },
              "turn_penalty": {
                "label": "Afslagstraf",
                "description": "Optionele additieve kosten voor niet-rechtdoorgaande afslagen bij netwerkknooppunten."
              },
              "u_turn_penalty": {
                "label": "Straf voor keren",
                "description": "Optionele additieve kosten voor U-bochtovergangen."
              },
              "forbid_u_turns": {
                "label": "Keren verbieden",
                "description": "Indien true, worden U-bochtovergangen niet toegestaan."
              },
              "forbid_left_turns": {
                "label": "Linksaf verbieden",
                "description": "Indien true, worden linksaf-overgangen niet toegestaan."
              },
              "forbid_right_turns": {
                "label": "Rechtsaf verbieden",
                "description": "Indien true, worden rechtsaf-overgangen niet toegestaan."
              },
              "turn_restrictions_csv": {
                "label": "CSV met afslagbeperkingen",
                "description": "Optioneel CSV-bestand met afslagovergangen met de kolommen prev_x,prev_y,node_x,node_y,next_x,next_y. Optionele kolommen: forbidden (standaard true wanneer geen turn_cost-kolom is opgegeven) en turn_cost (of penalty/cost/extra_cost) voor additieve kosten per afslag."
              },
              "temporal_cost_profile": {
                "label": "Temporeel kostenprofiel",
                "description": "Optioneel CSV-bestand dat tijdsafhankelijke verbindingskosten definieert (kolommen: edge_id,dow,start_minute,end_minute,value)."
              },
              "temporal_edge_id_field": {
                "label": "Temporeel kant-ID-veld",
                "description": "Optioneel netwerkveld dat wordt gebruikt om de edge_id-waarden van temporal_cost_profile te koppelen (standaard EDGE_ID)."
              },
              "departure_time": {
                "label": "Vertrektijd",
                "description": "Optionele vertrektijd in RFC3339-notatie die wordt gebruikt voor het opzoeken van het temporele profiel."
              },
              "temporal_mode": {
                "label": "Temporele modus",
                "description": "Optionele temporele interpretatiemodus: multiplier of absolute."
              },
              "temporal_fallback": {
                "label": "Temporele terugval",
                "description": "Optionele terugvaloptie wanneer een temporele rij ontbreekt: static_cost of error."
              },
              "temporal_profile_report": {
                "label": "Temporeel profielrapport",
                "description": "Optioneel JSON-uitvoerpad voor diagnostiek van het temporele profiel (dekking, niet-gekoppelde verbindingen, gebruik van terugvalopties)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de lijnvector met routes."
              }
            }
          },
          "network_service_area": {
            "name": "Verzorgingsgebied (netwerk)",
            "description": "Berekent de netwerkknopen die vanaf herkomstpunten bereikbaar zijn binnen maximale netwerkkosten.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlaag met lijnennetwerk."
              },
              "origins": {
                "label": "Herkomsten",
                "description": "Puntenlaag met herkomsten."
              },
              "max_cost": {
                "label": "Maximale kosten",
                "description": "Maximale bereikbare padkosten."
              },
              "ring_costs": {
                "label": "Ringkosten",
                "description": "Optionele door komma's gescheiden ringdrempelwaarden voor uitvoer met meerdere ringen (bijvoorbeeld: 5,10,15)."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Optionele snaptolerantie voor knooppunten bij het opbouwen van de graaf."
              },
              "max_snap_distance": {
                "label": "Maximale snapafstand",
                "description": "Optionele maximale afstand van herkomstpunten tot het dichtstbijzijnde netwerkknooppunt."
              },
              "output_mode": {
                "label": "Uitvoermodus",
                "description": "Uitvoermodus: 'nodes' (standaard), 'edges' voor op kosten bijgesneden bereikbare verbindingssegmenten, of 'polygons' voor isochroonachtige polygonen per herkomst op basis van de omhullenden van bereikbare verbindingen."
              },
              "polygon_merge_origins": {
                "label": "Polygonen per herkomst samenvoegen",
                "description": "Indien true en output_mode='polygons', worden overlappende herkomstpolygonen samengevoegd tot één gecombineerde dekking per ring in plaats van één polygoon per herkomst."
              },
              "mode_field": {
                "label": "Modusveld",
                "description": "Optioneel lijnattribuutveld dat de vervoerswijze per segment aangeeft; maakt kosten voor servicegebieden per vervoerswijze mogelijk."
              },
              "default_mode_speed": {
                "label": "Standaardsnelheid modus",
                "description": "Standaardsnelheid van de vervoerswijze in coördinaateenheden per tijdseenheid wanneer mode_field is opgegeven (standaard: 1)."
              },
              "mode_speed_overrides": {
                "label": "Snelheidsoverschrijvingen per modus",
                "description": "Optionele door komma's gescheiden mode:speed-overschrijvingen (bijvoorbeeld: walk:1.4,drive:12)."
              },
              "allowed_modes": {
                "label": "Toegestane modi",
                "description": "Optionele door komma's gescheiden lijst met toegestane vervoerswijzen die worden meegenomen wanneer mode_field is opgegeven."
              },
              "edge_cost_field": {
                "label": "Veld kantkosten",
                "description": "Optioneel numeriek lijnveld dat als impedantievermenigvuldiger voor de segmentlengte wordt gebruikt."
              },
              "one_way_field": {
                "label": "Eenrichtingsveld",
                "description": "Optioneel lijnveld dat eenrichtingsverbindingen in digitaliseringsrichting markeert (ondersteunt FT/TF/B en verouderde booleaanse waarden)."
              },
              "blocked_field": {
                "label": "Veld geblokkeerd",
                "description": "Optioneel lijnveld dat geblokkeerde/gesloten verbindingen markeert die van de routering worden uitgesloten (true/1/yes blokkeert)."
              },
              "barriers": {
                "label": "Barrières",
                "description": "Optionele puntenlaag met barrières; de dichtstbijzijnde netwerkknooppunten worden voor doorgang geblokkeerd."
              },
              "barrier_snap_distance": {
                "label": "Snapafstand barrières",
                "description": "Optionele maximale afstand van elk barrièrepunt tot een netwerkknooppunt om te blokkeren."
              },
              "node_cost_points": {
                "label": "Knoopkostenpunten",
                "description": "Optionele puntenlaag met toegangskosten per knooppunt (bijvoorbeeld vertraging bij kruisingen)."
              },
              "node_cost_field": {
                "label": "Knoopkostenveld",
                "description": "Numeriek veld in node_cost_points met niet-negatieve kosten per knooppunt."
              },
              "node_cost_snap_distance": {
                "label": "Snapafstand knoopkosten",
                "description": "Optionele maximale afstand van elk knooppuntkostenpunt tot een netwerkknooppunt voor de toewijzing."
              },
              "turn_penalty": {
                "label": "Afslagstraf",
                "description": "Optionele additieve kosten voor niet-rechtdoorgaande afslagen bij netwerkknooppunten."
              },
              "u_turn_penalty": {
                "label": "Straf voor keren",
                "description": "Optionele additieve kosten voor U-bochtovergangen."
              },
              "forbid_u_turns": {
                "label": "Keren verbieden",
                "description": "Indien true, worden U-bochtovergangen niet toegestaan."
              },
              "forbid_left_turns": {
                "label": "Linksaf verbieden",
                "description": "Indien true, worden linksaf-overgangen niet toegestaan."
              },
              "forbid_right_turns": {
                "label": "Rechtsaf verbieden",
                "description": "Indien true, worden rechtsaf-overgangen niet toegestaan."
              },
              "turn_restrictions_csv": {
                "label": "CSV met afslagbeperkingen",
                "description": "Optioneel CSV-bestand met afslagovergangen met de kolommen prev_x,prev_y,node_x,node_y,next_x,next_y. Optionele kolommen: forbidden (standaard true wanneer geen turn_cost-kolom is opgegeven) en turn_cost (of penalty/cost/extra_cost) voor additieve kosten per afslag."
              },
              "temporal_cost_profile": {
                "label": "Temporeel kostenprofiel",
                "description": "Optioneel CSV-bestand dat tijdsafhankelijke verbindingskosten definieert (kolommen: edge_id,dow,start_minute,end_minute,value)."
              },
              "temporal_edge_id_field": {
                "label": "Temporeel kant-ID-veld",
                "description": "Optioneel netwerkveld dat wordt gebruikt om de edge_id-waarden van temporal_cost_profile te koppelen (standaard EDGE_ID)."
              },
              "departure_time": {
                "label": "Vertrektijd",
                "description": "Optionele vertrektijd in RFC3339-notatie die wordt gebruikt voor het opzoeken van het temporele profiel."
              },
              "temporal_mode": {
                "label": "Temporele modus",
                "description": "Optionele temporele interpretatiemodus: multiplier of absolute."
              },
              "temporal_fallback": {
                "label": "Temporele terugval",
                "description": "Optionele terugvaloptie wanneer een temporele rij ontbreekt: static_cost of error."
              },
              "temporal_profile_report": {
                "label": "Temporeel profielrapport",
                "description": "Optioneel JSON-uitvoerpad voor diagnostiek van het temporele profiel (dekking, niet-gekoppelde verbindingen, gebruik van terugvalopties)."
              },
              "snapped_origins_output": {
                "label": "Uitvoer gesnapte herkomsten",
                "description": "Optioneel uitvoerpad van de vector met interne gesnapte herkomstankerpunten die als startpunt voor de doorloop worden gebruikt."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector met servicegebieden."
              }
            }
          },
          "network_topology_audit": {
            "name": "Netwerktopologie-audit",
            "description": "Controleert een lijnennetwerk op topologische anomalieën (losstaande componenten, doodlopende einden en graadanomalieën) die routeringsfouten veroorzaken.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlaag met lijnennetwerk."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Optionele snaptolerantie voor knooppunten bij het opbouwen van de graaf."
              },
              "one_way_field": {
                "label": "Eenrichtingsveld",
                "description": "Optioneel lijnveld dat eenrichtingsverbindingen markeert (ondersteunt FT/TF/B en verouderde booleaanse waarden)."
              },
              "blocked_field": {
                "label": "Veld geblokkeerd",
                "description": "Optioneel lijnveld dat geblokkeerde verbindingen markeert die van de analyse worden uitgesloten."
              },
              "report": {
                "label": "Rapport",
                "description": "Optioneel JSON-uitvoerpad voor het samenvattende auditrapport."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de puntvector met diagnostiek per knooppunt."
              }
            }
          },
          "od_sensitivity_analysis": {
            "name": "HB-gevoeligheidsanalyse",
            "description": "Berekent de kosten van kortste OD-paden met impedantieverstoringen en geeft gevoeligheidsstatistieken als uitvoer via Monte Carlo-bemonstering.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlaag met lijnennetwerk."
              },
              "origins": {
                "label": "Herkomsten",
                "description": "Puntenlaag met herkomsten."
              },
              "destinations": {
                "label": "Bestemmingen",
                "description": "Puntenlaag met bestemmingen."
              },
              "edge_cost_field": {
                "label": "Veld kantkosten",
                "description": "Vereist numeriek lijnveld dat als impedantievermenigvuldiger voor de verstoringsanalyse wordt gebruikt."
              },
              "impedance_disturbance_range": {
                "label": "Verstoringsbereik impedantie",
                "description": "Bereik voor de kostenverstoring als 'min_factor,max_factor' (bijvoorbeeld '0.8,1.2' voor een variatie van ±20%)."
              },
              "monte_carlo_samples": {
                "label": "Monte Carlo-steekproeven",
                "description": "Aantal Monte Carlo-steekproeven voor de verstoringsanalyse (standaard 1, maximaal 100)."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Optionele snaptolerantie voor knooppunten bij het opbouwen van de graaf."
              },
              "max_snap_distance": {
                "label": "Maximale snapafstand",
                "description": "Optionele maximale afstand van herkomst-/bestemmingspunten tot het dichtstbijzijnde netwerkknooppunt."
              },
              "one_way_field": {
                "label": "Eenrichtingsveld",
                "description": "Optioneel lijnveld dat eenrichtingsverbindingen in digitaliseringsrichting markeert (ondersteunt FT/TF/B en verouderde booleaanse waarden)."
              },
              "blocked_field": {
                "label": "Veld geblokkeerd",
                "description": "Optioneel lijnveld dat geblokkeerde/gesloten verbindingen markeert."
              },
              "node_cost_points": {
                "label": "Knoopkostenpunten",
                "description": "Optionele puntenlaag met toegangskosten per knooppunt (bijvoorbeeld vertraging bij kruisingen)."
              },
              "node_cost_field": {
                "label": "Knoopkostenveld",
                "description": "Numeriek veld in node_cost_points met niet-negatieve kosten per knooppunt."
              },
              "node_cost_snap_distance": {
                "label": "Snapafstand knoopkosten",
                "description": "Optionele maximale afstand van elk knooppuntkostenpunt tot een netwerkknooppunt voor de toewijzing."
              },
              "parallel_execution": {
                "label": "Parallelle uitvoering",
                "description": "Indien true (standaard), worden herkomstzoekopdrachten parallel geëvalueerd voor de basis- en de verstoorde OD-berekeningen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het CSV-bestand met OD-paren en gevoeligheidsstatistieken."
              }
            }
          },
          "shortest_path_network": {
            "name": "Kortste pad (netwerk)",
            "description": "Vindt het kortste pad tussen begin- en eindcoördinaten over een lijnennetwerk.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlaag met lijnennetwerk."
              },
              "start_x": {
                "label": "Start X",
                "description": "X-coördinaat van het beginpunt."
              },
              "start_y": {
                "label": "Start Y",
                "description": "Y-coördinaat van het beginpunt."
              },
              "end_x": {
                "label": "Einde X",
                "description": "X-coördinaat van het eindpunt."
              },
              "end_y": {
                "label": "Einde Y",
                "description": "Y-coördinaat van het eindpunt."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Optionele snaptolerantie voor knooppunten bij het opbouwen van de graaf."
              },
              "max_snap_distance": {
                "label": "Maximale snapafstand",
                "description": "Optionele maximale afstand van de begin-/eindcoördinaten tot het dichtstbijzijnde netwerkknooppunt."
              },
              "edge_cost_field": {
                "label": "Veld kantkosten",
                "description": "Optioneel numeriek lijnveld dat als impedantievermenigvuldiger voor de segmentlengte wordt gebruikt."
              },
              "one_way_field": {
                "label": "Eenrichtingsveld",
                "description": "Optioneel lijnveld dat eenrichtingsverbindingen in digitaliseringsrichting markeert (ondersteunt FT/TF/B en verouderde booleaanse waarden)."
              },
              "blocked_field": {
                "label": "Veld geblokkeerd",
                "description": "Optioneel lijnveld dat geblokkeerde/gesloten verbindingen markeert die van de routering worden uitgesloten (true/1/yes blokkeert)."
              },
              "barriers": {
                "label": "Barrières",
                "description": "Optionele puntenlaag met barrières; de dichtstbijzijnde netwerkknooppunten worden voor doorgang geblokkeerd."
              },
              "barrier_snap_distance": {
                "label": "Snapafstand barrières",
                "description": "Optionele maximale afstand van elk barrièrepunt tot een netwerkknooppunt om te blokkeren."
              },
              "turn_penalty": {
                "label": "Afslagstraf",
                "description": "Optionele additieve kosten voor niet-rechtdoorgaande afslagen bij netwerkknooppunten."
              },
              "u_turn_penalty": {
                "label": "Straf voor keren",
                "description": "Optionele additieve kosten voor U-bochtovergangen."
              },
              "forbid_u_turns": {
                "label": "Keren verbieden",
                "description": "Indien true, worden U-bochtovergangen niet toegestaan."
              },
              "forbid_left_turns": {
                "label": "Linksaf verbieden",
                "description": "Indien true, worden linksaf-overgangen niet toegestaan."
              },
              "forbid_right_turns": {
                "label": "Rechtsaf verbieden",
                "description": "Indien true, worden rechtsaf-overgangen niet toegestaan."
              },
              "turn_restrictions_csv": {
                "label": "CSV met afslagbeperkingen",
                "description": "Optioneel CSV-bestand met afslagovergangen met de kolommen prev_x,prev_y,node_x,node_y,next_x,next_y. Optionele kolommen: forbidden (standaard true wanneer geen turn_cost-kolom is opgegeven) en turn_cost (of penalty/cost/extra_cost) voor additieve kosten per afslag."
              },
              "temporal_cost_profile": {
                "label": "Temporeel kostenprofiel",
                "description": "Optioneel CSV-bestand dat tijdsafhankelijke verbindingskosten definieert (kolommen: edge_id,dow,start_minute,end_minute,value)."
              },
              "temporal_edge_id_field": {
                "label": "Temporeel kant-ID-veld",
                "description": "Optioneel netwerkveld dat wordt gebruikt om de edge_id-waarden van temporal_cost_profile te koppelen (standaard EDGE_ID)."
              },
              "departure_time": {
                "label": "Vertrektijd",
                "description": "Optionele vertrektijd in RFC3339-notatie die wordt gebruikt voor het opzoeken van het temporele profiel."
              },
              "temporal_mode": {
                "label": "Temporele modus",
                "description": "Optionele temporele interpretatiemodus: multiplier of absolute."
              },
              "temporal_fallback": {
                "label": "Temporele terugval",
                "description": "Optionele terugvaloptie wanneer een temporele rij ontbreekt: static_cost of error."
              },
              "temporal_profile_report": {
                "label": "Temporeel profielrapport",
                "description": "Optioneel JSON-uitvoerpad voor diagnostiek van het temporele profiel (dekking, niet-gekoppelde verbindingen, gebruik van terugvalopties)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Pad van de uitvoerlijnvector."
              }
            }
          },
          "split_lines_at_intersections": {
            "name": "Lijnen splitsen op kruisingen",
            "description": "Splitst een lijnennetwerk overal waar lijnsegmenten elkaar snijden, inclusief zelfdoorsnijdingen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlijnenlaag die op kruisingen moet worden gesplitst."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Optionele snaptolerantie die door splitsbewerkingen wordt gebruikt; standaard de machine-epsilon."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de lijnvector met gesplitste lijnen."
              }
            }
          },
          "snap_points_to_network": {
            "name": "Punten snappen naar netwerk",
            "description": "Snapt invoerpuntobjecten naar de dichtstbijzijnde locatie langs een netwerklijnlaag.",
            "params": {
              "points": {
                "label": "Punten",
                "description": "Invoerpuntenlaag die moet worden gesnapt."
              },
              "network": {
                "label": "Netwerk",
                "description": "Invoerlaag met netwerklijnen."
              },
              "max_snap_distance": {
                "label": "Maximale snapafstand",
                "description": "Optionele maximale snapafstand in kaarteenheden."
              },
              "keep_unsnapped": {
                "label": "Niet-gesnapte behouden",
                "description": "Indien true (standaard), worden punten behouden die niet binnen de tolerantie kunnen worden gesnapt."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de puntvector met gesnapte punten."
              }
            }
          },
          "transfer_attributes": {
            "name": "Attributen overdragen",
            "description": "Draagt bronattributen over naar doelobjecten met behulp van een ruimtelijk predicaat.",
            "params": {
              "target": {
                "label": "Doel",
                "description": "Doellaag die de overgedragen attributen ontvangt."
              },
              "source": {
                "label": "Bron",
                "description": "Bronlaag die de attributen levert."
              },
              "predicate": {
                "label": "Predicaat",
                "description": "Ruimtelijk predicaat: intersects, within, contains, touches, crosses, overlaps, within_distance."
              },
              "distance": {
                "label": "Afstand",
                "description": "Afstandsdrempel wanneer predicate=within_distance."
              },
              "strategy": {
                "label": "Strategie",
                "description": "Overdrachtsstrategie: first, last, count, sum, mean, min, max."
              },
              "prefix": {
                "label": "Voorvoegsel",
                "description": "Voorvoegsel voor overgedragen bronvelden (standaard SRC_)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "travelling_salesman_problem": {
            "name": "Handelsreizigersprobleem",
            "description": "Vindt benaderende oplossingen voor het handelsreizigersprobleem (TSP) met 2-opt-heuristieken. Identificeert voor een set puntlocaties de kortste route die alle punten verbindt.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met punten."
              },
              "duration": {
                "label": "Duur",
                "description": "Maximale optimalisatieduur in seconden."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de polylijn."
              }
            }
          },
          "vehicle_routing_cvrp": {
            "name": "Voertuigroutering (CVRP)",
            "description": "Bouwt capaciteitsbeperkte bezorgroutes met meerdere depots, met instellingen voor een heterogene vloot, doelstellingsmodi en optionele lokale optimalisatie.",
            "params": {
              "network": {
                "label": "Netwerk",
                "description": "Invoerlaag met lijnennetwerk (gevalideerd op contractpariteit)."
              },
              "depot_points": {
                "label": "Depotpunten",
                "description": "Puntenlaag met depots; elk punt kan een of meer voertuigen bijdragen."
              },
              "stop_points": {
                "label": "Stoppunten",
                "description": "Puntenlaag met bezorgstops."
              },
              "demand_field": {
                "label": "Vraagveld",
                "description": "Numeriek vraagveld in stop_points (standaard: demand)."
              },
              "priority_field": {
                "label": "Prioriteitsveld",
                "description": "Optioneel prioriteitsveld voor stops met waarden als required/high/normal/low of numerieke rangen."
              },
              "allowed_vehicle_profiles_field": {
                "label": "Veld toegestane voertuigprofielen",
                "description": "Optioneel stopveld met compatibele voertuigprofielen (gescheiden door komma's, puntkomma's of pijpsymbolen)."
              },
              "allowed_route_classes_field": {
                "label": "Veld toegestane routeklassen",
                "description": "Optionele alias van allowed_vehicle_profiles_field voor compatibiliteitsregels van routeklassen."
              },
              "depot_id_field": {
                "label": "Depot-ID-veld",
                "description": "Optioneel depot-ID-veld dat in de route-/toewijzingsuitvoer wordt gebruikt."
              },
              "vehicle_count_field": {
                "label": "Veld aantal voertuigen",
                "description": "Optioneel depotveld voor het aantal voertuigen dat bij elk depot wordt ingezet."
              },
              "vehicle_capacity_field": {
                "label": "Veld voertuigcapaciteit",
                "description": "Optioneel depotveld dat vehicle_capacity per depot-/voertuigsjabloon overschrijft."
              },
              "vehicle_fixed_cost_field": {
                "label": "Veld vaste voertuigkosten",
                "description": "Optioneel depotveld dat vehicle_fixed_cost per depot-/voertuigsjabloon overschrijft."
              },
              "travel_speed_field": {
                "label": "Veld reissnelheid",
                "description": "Optioneel depotveld dat travel_speed per depot-/voertuigsjabloon overschrijft."
              },
              "max_route_distance_field": {
                "label": "Veld maximale routeafstand",
                "description": "Optioneel depotveld dat max_route_distance per depot-/voertuigsjabloon overschrijft."
              },
              "max_route_time_field": {
                "label": "Veld maximale routetijd",
                "description": "Optioneel depotveld dat max_route_time per depot-/voertuigsjabloon overschrijft."
              },
              "vehicle_profile_field": {
                "label": "Voertuigprofielveld",
                "description": "Optioneel depotveld dat het voertuigprofiel-/categorietoken definieert dat voor de compatibiliteit van stops wordt gebruikt."
              },
              "vehicle_route_class_field": {
                "label": "Veld voertuigrouteklasse",
                "description": "Optionele alias van vehicle_profile_field voor compatibiliteitsregels van routeklassen."
              },
              "vehicle_capacity": {
                "label": "Voertuigcapaciteit",
                "description": "Capaciteit per voertuig (> 0)."
              },
              "vehicle_fixed_cost": {
                "label": "Vaste voertuigkosten",
                "description": "Optionele vaste kosten die per ingezet voertuig/route in rekening worden gebracht (standaard: 0)."
              },
              "max_vehicles": {
                "label": "Maximaal aantal voertuigen",
                "description": "Optioneel maximumaantal te construeren voertuigen/routes."
              },
              "max_route_distance": {
                "label": "Maximale routeafstand",
                "description": "Optionele maximale reisafstand per route, inclusief de terugkeer naar het depot."
              },
              "travel_speed": {
                "label": "Reissnelheid",
                "description": "Reissnelheid in coördinaateenheden per tijdseenheid (standaard: 1)."
              },
              "max_route_time": {
                "label": "Maximale routetijd",
                "description": "Optionele maximale routeduur in modeltijdseenheden, inclusief de terugkeer naar het depot."
              },
              "max_stops_per_vehicle": {
                "label": "Maximaal aantal stops per voertuig",
                "description": "Optioneel maximumaantal stops dat aan elke voertuigroute wordt toegewezen."
              },
              "objective_mode": {
                "label": "Doelstellingsmodus",
                "description": "Doelstelling voor de routeconstructie: minimize_distance, minimize_vehicles of minimize_cost."
              },
              "apply_local_optimization": {
                "label": "Lokale optimalisatie toepassen",
                "description": "Indien true, wordt op elke geconstrueerde route een deterministische lokale 2-opt-verbeteringsstap toegepast (standaard: true)."
              },
              "apply_simulated_annealing": {
                "label": "Simulated annealing toepassen",
                "description": "Indien true, wordt per route een verfijningsstap met simulated annealing en een vaste zaadwaarde toegepast na de greedy/lokale optimalisatie (standaard: false)."
              },
              "sa_iterations": {
                "label": "SA-iteraties",
                "description": "Maximaal aantal simulated annealing-iteraties per route wanneer apply_simulated_annealing=true (standaard: 1500)."
              },
              "sa_initial_temperature": {
                "label": "SA-begintemperatuur",
                "description": "Begintemperatuur voor simulated annealing (> 0, standaard: 1.0)."
              },
              "sa_cooling_rate": {
                "label": "SA-afkoelsnelheid",
                "description": "Afkoelingsvermenigvuldiger voor simulated annealing in (0, 1); standaard 0.995."
              },
              "sa_seed": {
                "label": "SA-seed",
                "description": "Optionele deterministische zaadwaarde voor simulated annealing (standaard: 42)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de lijnvector met routes."
              },
              "assignment_output": {
                "label": "Toewijzingsuitvoer",
                "description": "Optionele puntuitvoer met stoptoewijzingen en diagnostiek over bezoekvolgorde/belading."
              }
            }
          },
          "vehicle_routing_pickup_delivery": {
            "name": "Voertuigroutering (ophalen en afleveren)",
            "description": "Bouwt gekoppelde ophaal- en bezorgroutes met volgorde- en capaciteitsbeperkingen op basis van een deterministische nearest-neighbour-basislijn.",
            "params": {
              "network": {
                "label": "Netwerk",
                "description": "Invoerlaag met lijnennetwerk (gevalideerd op contractpariteit)."
              },
              "depot_points": {
                "label": "Depotpunten",
                "description": "Puntenlaag met depots; het eerste punt wordt in deze basisimplementatie als actief depot gebruikt."
              },
              "stop_points": {
                "label": "Stoppunten",
                "description": "Puntenlaag met stops die gekoppelde ophaal- en bezorgrecords bevat."
              },
              "request_id_field": {
                "label": "Verzoek-ID-veld",
                "description": "Identificatieveld voor verzoeken in stop_points dat wordt gebruikt om ophaal- en bezorgrecords te koppelen (standaard: request_id)."
              },
              "stop_type_field": {
                "label": "Veld stoptype",
                "description": "Veld met het stoptype in stop_points met de labels pickup/delivery (standaard: stop_type)."
              },
              "demand_field": {
                "label": "Vraagveld",
                "description": "Numeriek vraagveld in stop_points; de ophaalvraag wordt geladen en de bezorgde vraag wordt genegeerd (standaard: demand)."
              },
              "vehicle_capacity": {
                "label": "Voertuigcapaciteit",
                "description": "Capaciteit per voertuig (> 0)."
              },
              "max_vehicles": {
                "label": "Maximaal aantal voertuigen",
                "description": "Optioneel maximumaantal te construeren voertuigen/routes."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de lijnvector met routes."
              },
              "assignment_output": {
                "label": "Toewijzingsuitvoer",
                "description": "Optionele puntuitvoer met stoptoewijzingen en diagnostiek over verzoeken en voorrangsrelaties."
              }
            }
          },
          "vehicle_routing_vrptw": {
            "name": "Voertuigroutering (VRPTW)",
            "description": "Bouwt capaciteitsbeperkte VRPTW-routes met meerdere depots, met instellingen voor een heterogene vloot, pauzevensters en doelstellingsmodi.",
            "params": {
              "network": {
                "label": "Netwerk",
                "description": "Invoerlaag met lijnennetwerk (gevalideerd op contractpariteit)."
              },
              "depot_points": {
                "label": "Depotpunten",
                "description": "Puntenlaag met depots; elk punt kan een of meer voertuigen bijdragen."
              },
              "stop_points": {
                "label": "Stoppunten",
                "description": "Puntenlaag met bezorgstops met velden voor vraag en tijdvensters."
              },
              "demand_field": {
                "label": "Vraagveld",
                "description": "Numeriek vraagveld in stop_points (standaard: demand)."
              },
              "priority_field": {
                "label": "Prioriteitsveld",
                "description": "Optioneel prioriteitsveld voor stops met waarden als required/high/normal/low of numerieke rangen."
              },
              "allowed_vehicle_profiles_field": {
                "label": "Veld toegestane voertuigprofielen",
                "description": "Optioneel stopveld met compatibele voertuigprofielen (gescheiden door komma's, puntkomma's of pijpsymbolen)."
              },
              "allowed_route_classes_field": {
                "label": "Veld toegestane routeklassen",
                "description": "Optionele alias van allowed_vehicle_profiles_field voor compatibiliteitsregels van routeklassen."
              },
              "tw_start_field": {
                "label": "Veld begin tijdvenster",
                "description": "Numeriek veld met het begin van het tijdvenster in stop_points (standaard: tw_start)."
              },
              "tw_end_field": {
                "label": "Veld einde tijdvenster",
                "description": "Numeriek veld met het einde van het tijdvenster in stop_points (standaard: tw_end)."
              },
              "service_time_field": {
                "label": "Veld servicetijd",
                "description": "Numeriek veld met de servicetijd per stop in stop_points (standaard: service_time)."
              },
              "depot_id_field": {
                "label": "Depot-ID-veld",
                "description": "Optioneel depot-ID-veld dat in de route-/toewijzingsuitvoer wordt gebruikt."
              },
              "vehicle_count_field": {
                "label": "Veld aantal voertuigen",
                "description": "Optioneel depotveld voor het aantal voertuigen dat bij elk depot wordt ingezet."
              },
              "vehicle_capacity_field": {
                "label": "Veld voertuigcapaciteit",
                "description": "Optioneel depotveld dat vehicle_capacity per depot-/voertuigsjabloon overschrijft."
              },
              "vehicle_fixed_cost_field": {
                "label": "Veld vaste voertuigkosten",
                "description": "Optioneel depotveld dat vehicle_fixed_cost per depot-/voertuigsjabloon overschrijft."
              },
              "travel_speed_field": {
                "label": "Veld reissnelheid",
                "description": "Optioneel depotveld dat travel_speed per depot-/voertuigsjabloon overschrijft."
              },
              "max_route_distance_field": {
                "label": "Veld maximale routeafstand",
                "description": "Optioneel depotveld dat max_route_distance per depot-/voertuigsjabloon overschrijft."
              },
              "max_route_time_field": {
                "label": "Veld maximale routetijd",
                "description": "Optioneel depotveld dat max_route_time per depot-/voertuigsjabloon overschrijft."
              },
              "vehicle_profile_field": {
                "label": "Voertuigprofielveld",
                "description": "Optioneel depotveld dat het voertuigprofiel-/categorietoken definieert dat voor de compatibiliteit van stops wordt gebruikt."
              },
              "vehicle_route_class_field": {
                "label": "Veld voertuigrouteklasse",
                "description": "Optionele alias van vehicle_profile_field voor compatibiliteitsregels van routeklassen."
              },
              "depot_close_time_field": {
                "label": "Veld sluitingstijd depot",
                "description": "Optioneel depotveld dat depot_close_time per depot-/voertuigsjabloon overschrijft."
              },
              "break_start_field": {
                "label": "Veld begin pauze",
                "description": "Optioneel depotveld dat break_start_time per depot-/voertuigsjabloon overschrijft."
              },
              "break_end_field": {
                "label": "Veld einde pauze",
                "description": "Optioneel depotveld dat break_end_time per depot-/voertuigsjabloon overschrijft."
              },
              "break_duration_field": {
                "label": "Veld pauzeduur",
                "description": "Optioneel depotveld dat break_duration per depot-/voertuigsjabloon overschrijft."
              },
              "vehicle_capacity": {
                "label": "Voertuigcapaciteit",
                "description": "Capaciteit per voertuig (> 0)."
              },
              "vehicle_fixed_cost": {
                "label": "Vaste voertuigkosten",
                "description": "Optionele vaste kosten die per ingezet voertuig/route in rekening worden gebracht (standaard: 0)."
              },
              "start_time": {
                "label": "Begintijd",
                "description": "Starttijd van de route in modeltijdseenheden (standaard: 0)."
              },
              "travel_speed": {
                "label": "Reissnelheid",
                "description": "Reissnelheid in coördinaateenheden per tijdseenheid (standaard: 1)."
              },
              "enforce_time_windows": {
                "label": "Tijdvensters afdwingen",
                "description": "Indien true, komen alleen stops met een vertraging <= allowed_lateness in aanmerking voor toewijzing (standaard: false)."
              },
              "allowed_lateness": {
                "label": "Toegestane vertraging",
                "description": "Maximaal getolereerde vertraging wanneer enforce_time_windows=true (standaard: 0)."
              },
              "depot_close_time": {
                "label": "Sluitingstijd depot",
                "description": "Optionele harde sluitingstijd waarop elke route naar het depot moet zijn teruggekeerd."
              },
              "break_start_time": {
                "label": "Begintijd pauze",
                "description": "Optionele globale starttijd van het pauzevenster voor alle voertuigen."
              },
              "break_end_time": {
                "label": "Eindtijd pauze",
                "description": "Optionele globale eindtijd van het pauzevenster voor alle voertuigen."
              },
              "break_duration": {
                "label": "Pauzeduur",
                "description": "Optionele globale pauzeduur die eenmaal per route wordt toegepast wanneer het pauzevenster wordt doorsneden."
              },
              "use_priority_scoring": {
                "label": "Prioriteitsscore gebruiken",
                "description": "Indien true, worden haalbare kandidaten eerst gerangschikt op verwachte vertraging/speling en daarna op reisafstand; indien false, wordt de nearest-neighbour-basismethode gebruikt (standaard: true)."
              },
              "max_vehicles": {
                "label": "Maximaal aantal voertuigen",
                "description": "Optioneel maximumaantal te construeren voertuigen/routes."
              },
              "max_route_distance": {
                "label": "Maximale routeafstand",
                "description": "Optionele maximale reisafstand van de route, inclusief de terugkeer naar het depot."
              },
              "max_route_time": {
                "label": "Maximale routetijd",
                "description": "Optionele maximale routeduur in modeltijdseenheden, inclusief de terugkeer naar het depot."
              },
              "max_stops_per_vehicle": {
                "label": "Maximaal aantal stops per voertuig",
                "description": "Optioneel maximumaantal stops dat aan elke voertuigroute wordt toegewezen."
              },
              "objective_mode": {
                "label": "Doelstellingsmodus",
                "description": "Doelstelling voor de routeconstructie: minimize_lateness, minimize_distance, minimize_vehicles of minimize_cost."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de lijnvector met routes."
              },
              "assignment_output": {
                "label": "Toewijzingsuitvoer",
                "description": "Optionele puntuitvoer met stoptoewijzingen en diagnostiek over tijdvensters."
              }
            }
          },
          "clip": {
            "name": "Uitsnijden",
            "description": "Knipt invoerpolygonen bij tot de grenzen van overlaypolygonen met een topologiegebaseerde doorsnede.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "overlay": {
                "label": "Overlay",
                "description": "Overlay-polygoonlaag."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Optionele snaptolerantie die door topologiebewerkingen wordt gebruikt; standaard de machine-epsilon."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "difference": {
            "name": "Verschil",
            "description": "Verwijdert de gebieden van overlaypolygonen uit invoerpolygonen met een topologiegebaseerd verschil.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "overlay": {
                "label": "Overlay",
                "description": "Overlay-polygoonlaag."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Optionele snaptolerantie die door topologiebewerkingen wordt gebruikt; standaard de machine-epsilon."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "dissolve": {
            "name": "Samenvoegen (dissolve)",
            "description": "Verwijdert gedeelde polygoongrenzen globaal of op basis van een samenvoegattribuutveld.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met polygonen."
              },
              "dissolve_field": {
                "label": "Samenvoegveld",
                "description": "Optioneel attribuutveld dat wordt gebruikt om polygonen binnen groepen samen te voegen; indien weggelaten, worden alle polygonen samengevoegd."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Optionele snaptolerantie die tijdens topologiebewerkingen wordt gebruikt."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de polygoonvector."
              }
            }
          },
          "erase": {
            "name": "Wissen",
            "description": "Wist de gebieden van overlaypolygonen uit invoerpolygonen en behoudt de invoerattributen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "overlay": {
                "label": "Overlay",
                "description": "Overlay-polygoonlaag."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Optionele snaptolerantie die door topologiebewerkingen wordt gebruikt; standaard de machine-epsilon."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "identity": {
            "name": "Identiteit",
            "description": "Behoudt alle invoerobjecten; delen die overlappen met de identiteitslaag krijgen ook de identiteitsattributen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "overlay": {
                "label": "Overlay",
                "description": "Overlay-polygoonlaag."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Optionele snaptolerantie die door topologiebewerkingen wordt gebruikt; standaard de machine-epsilon."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "intersect": {
            "name": "Doorsnijden",
            "description": "Snijdt invoer- en overlaypolygonen met een topologiegebaseerde overlay en houdt de ID's van de bronobjecten bij.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "overlay": {
                "label": "Overlay",
                "description": "Overlay-polygoonlaag."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Optionele snaptolerantie die door topologiebewerkingen wordt gebruikt; standaard de machine-epsilon."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "line_intersections": {
            "name": "Lijnkruisingen",
            "description": "Vindt snijpunten van lijnen tussen invoer- en overlaylagen en voegt de ouder-ID's met samengevoegde attributen toe.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlaag met lijnen of polygonen."
              },
              "overlay": {
                "label": "Overlay",
                "description": "Overlaylaag met lijnen of polygonen."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Optionele snaptolerantie die door geometriebewerkingen wordt gebruikt; standaard de machine-epsilon."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "line_polygon_clip": {
            "name": "Lijn-polygoon-uitsnede",
            "description": "Knipt lijnobjecten bij tot het binnenste van polygonen en geeft de bijgeknipte lijnsegmenten als uitvoer.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlijnlaag."
              },
              "clip": {
                "label": "Uitsnijden",
                "description": "Polygoonlaag om mee te knippen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "near": {
            "name": "Nabijheid",
            "description": "Voegt de attributen NEAR_FID en NEAR_DIST toe die met ruimtelijke indexering de dichtstbijzijnde objecten en hun afstanden identificeren.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "near": {
                "label": "Nabijheid",
                "description": "Vectorlaag met nabijgelegen objecten."
              },
              "max_distance": {
                "label": "Maximale afstand",
                "description": "Optionele maximale zoekafstand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "select_by_location": {
            "name": "Selecteren op locatie",
            "description": "Filtert doelobjecten op ruimtelijke predicaten (intersects, within, contains, touches, overlaps, enz.) ten opzichte van queryobjecten.",
            "params": {
              "target": {
                "label": "Doel",
                "description": "Te filteren doellaag met objecten."
              },
              "query": {
                "label": "Query",
                "description": "Objectlaag voor de query."
              },
              "predicate": {
                "label": "Predicaat",
                "description": "Ruimtelijk predicaat: intersects, within, contains, touches, crosses, overlaps, disjoint, within_distance."
              },
              "distance": {
                "label": "Afstand",
                "description": "Afstandsdrempel voor het predicaat within_distance."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "spatial_join": {
            "name": "Ruimtelijke join",
            "description": "Draagt attributen van objecten in de joinlaag over naar doelen met ruimtelijke predicaten; ondersteunt aggregatiestrategieën (count, sum, mean, min, max) voor meerdere overeenkomsten.",
            "params": {
              "target": {
                "label": "Doel",
                "description": "Doellaag die de samengevoegde attributen ontvangt."
              },
              "join": {
                "label": "Koppelen",
                "description": "Koppellaag die de attributen levert."
              },
              "predicate": {
                "label": "Predicaat",
                "description": "Ruimtelijk predicaat: intersects, within, contains, touches, crosses, overlaps, within_distance."
              },
              "distance": {
                "label": "Afstand",
                "description": "Afstandsdrempel voor het predicaat within_distance."
              },
              "strategy": {
                "label": "Strategie",
                "description": "Koppelstrategie: first, last, count, sum, mean, min, max."
              },
              "prefix": {
                "label": "Voorvoegsel",
                "description": "Voorvoegsel voor gekoppelde veldnamen (standaard JOIN_)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "symmetrical_difference": {
            "name": "Symmetrisch verschil",
            "description": "Berekent niet-overlappende polygoongebieden uit invoer- en overlaylagen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "overlay": {
                "label": "Overlay",
                "description": "Overlay-polygoonlaag."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Optionele snaptolerantie die door topologiebewerkingen wordt gebruikt; standaard de machine-epsilon."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "union": {
            "name": "Vereniging",
            "description": "Voegt gecombineerde invoer- en overlaypolygonen samen tot één uniforme polygoondekking.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "overlay": {
                "label": "Overlay",
                "description": "Overlay-polygoonlaag."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Optionele snaptolerantie die door topologiebewerkingen wordt gebruikt; standaard de machine-epsilon."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "update": {
            "name": "Bijwerken",
            "description": "Vervangt invoerobjecten door bijwerkobjecten waar ze overlappen; invoerobjecten buiten de bijwerklaag blijven behouden.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "overlay": {
                "label": "Overlay",
                "description": "Overlay-polygoonlaag."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Optionele snaptolerantie die door topologiebewerkingen wordt gebruikt; standaard de machine-epsilon."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "centroid_vector": {
            "name": "Zwaartepunt (vector)",
            "description": "Berekent voor elk vectorobject het geografische middelpunt (gemiddelde coördinaat van de massa) en levert een puntenlaag voor labelplaatsing, clustering en ruimtelijke analyse.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Pad van de uitvoerpuntvector."
              }
            }
          },
          "concave_hull": {
            "name": "Concave omhullende",
            "description": "Maakt concave omhullende polygonen rond de coördinaten van invoerobjecten met het concaveman-algoritme.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "concavity": {
                "label": "Concaviteit",
                "description": "Concaviteitsratio (standaard 2.0). Hogere waarden leveren een minder concave omhullende op die dichter bij de convexe omhullende ligt. Lagere waarden staan strakkere concaviteiten toe."
              },
              "max_edge_length": {
                "label": "Maximale zijdelengte",
                "description": "Lengtedrempelwaarde: randen van de omhullende die korter zijn dan deze waarde worden niet verder verfijnd. Standaard onbeperkt (oneindig)."
              },
              "epsilon": {
                "label": "Epsilon",
                "description": "Robuustheidsepsilon (standaard 1e-9)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "densify_features": {
            "name": "Objecten verdichten",
            "description": "Voegt hoekpunten toe langs lijn- en polygoongrenzen met een opgegeven tussenafstand.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "spacing": {
                "label": "Tussenafstand",
                "description": "Maximale afstand tussen aangrenzende knikpunten."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "eliminate_coincident_points": {
            "name": "Samenvallende punten elimineren",
            "description": "Verwijdert samenvallende of vrijwel samenvallende punten binnen een tolerantieafstand.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met punten."
              },
              "tolerance_dist": {
                "label": "Tolerantieafstand",
                "description": "Afstandsdrempel waarbinnen punten als samenvallend worden beschouwd."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Pad van de uitvoerpuntvector."
              }
            }
          },
          "extend_vector_lines": {
            "name": "Vectorlijnen verlengen",
            "description": "Verlengt de eindpunten van polylijnen met een opgegeven afstand aan het begin, het einde of beide.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met polylijnen."
              },
              "distance": {
                "label": "Afstand",
                "description": "Afstand waarover de eindpunten van de polylijnen worden verlengd."
              },
              "extend_direction": {
                "label": "Verlengrichting",
                "description": "Richting waarin de eindpunten worden verlengd: both, start of end."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "merge_line_segments": {
            "name": "Lijnsegmenten samenvoegen",
            "description": "Voegt verbonden lijnsegmenten samen die elkaar ontmoeten in niet-vertakkende eindpunten.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met polylijnen."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Optionele snaptolerantie voor eindpunten die wordt gebruikt om lijneindpunten te koppelen; standaard de machine-epsilon."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "minimum_bounding_box": {
            "name": "Minimaal omsluitend rechthoek",
            "description": "Berekent georiënteerde minimale omsluitende rechthoeken rond afzonderlijke objecten of de hele laag.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "min_criteria": {
                "label": "Minimale criteria",
                "description": "Minimalisatiecriterium: area, perimeter, length of width. Standaard area."
              },
              "individual_feature_hulls": {
                "label": "Omhullende per object",
                "description": "Indien true, wordt één rechthoek per object uitgevoerd; anders één rechthoek voor de gehele laag."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de polygoonvector."
              }
            }
          },
          "minimum_bounding_circle": {
            "name": "Minimaal omsluitende cirkel",
            "description": "Berekent minimale omsluitende cirkels rond afzonderlijke objecten of de hele laag.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "individual_feature_hulls": {
                "label": "Omhullende per object",
                "description": "Indien true, wordt één cirkel per object uitgevoerd; anders één cirkel voor de gehele laag."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de polygoonvector."
              }
            }
          },
          "minimum_bounding_envelope": {
            "name": "Minimaal omsluitende envelop",
            "description": "Berekent asgeoriënteerde minimale omsluitende enveloppen rond afzonderlijke objecten of de hele laag.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "individual_feature_hulls": {
                "label": "Omhullende per object",
                "description": "Indien true, wordt één omhullende per object uitgevoerd; anders één omhullende voor de gehele laag."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de polygoonvector."
              }
            }
          },
          "minimum_convex_hull": {
            "name": "Minimale convexe omhullende",
            "description": "Maakt convexe omhullende polygonen rond afzonderlijke objecten of de volledige invoerlaag.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "individual_feature_hulls": {
                "label": "Omhullende per object",
                "description": "Indien true, wordt één omhullende per invoerobject uitgevoerd; anders één omhullende voor de gehele laag."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de polygoonvector."
              }
            }
          },
          "polygonize": {
            "name": "Polygoniseren",
            "description": "Maakt polygonen uit invoerlijnwerk, inclusief snijdende/open segmenten waar ingesloten vlakken kunnen worden gevormd.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Invoervectorlagen met lijnen als array of als tekenreeks gescheiden door puntkomma's of komma's. Indien weggelaten, wordt 'input' gebruikt."
              },
              "input": {
                "label": "Invoer",
                "description": "Optioneel pad naar één invoervectorlaag met lijnen."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Optionele snaptolerantie die door de polygonisatie wordt gebruikt; standaard de machine-epsilon."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "representative_point_vector": {
            "name": "Representatief punt (vector)",
            "description": "Genereert een binnenpunt dat gegarandeerd binnen of op elke geometrie ligt met behulp van de pool van ontoegankelijkheid (pole of inaccessibility), ideaal voor labelplaatsing in concave polygonen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Pad van de uitvoerpuntvector."
              }
            }
          },
          "simplify_features": {
            "name": "Objecten vereenvoudigen",
            "description": "Vermindert de complexiteit van geometrie met het Douglas-Peucker-algoritme om de bestandsgrootte te minimaliseren, GPS-ruis te verwijderen en de weergaveprestaties te optimaliseren met behoud van de vorm.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "tolerance": {
                "label": "Tolerantie",
                "description": "Vereenvoudigingstolerantie in kaarteenheden."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "smooth_vectors": {
            "name": "Vectoren gladstrijken",
            "description": "Vlakt polylijn- of polygoongeometrieën af met moving-average-filtering om digitaliseringsruis en jitter in GPS-sporen te verminderen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met lijnen of polygonen."
              },
              "filter_size": {
                "label": "Filtergrootte",
                "description": "Oneven venstergrootte voor het voortschrijdend gemiddelde (>= 3). Even waarden worden verhoogd naar de eerstvolgende oneven waarde."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "snap_endnodes": {
            "name": "Eindknopen snappen",
            "description": "Snapt nabijgelegen eindpunten van polylijnen binnen een tolerantie naar een gedeelde locatie.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met polylijnen."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Snaptolerantie voor eindpunten in kaarteenheden."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector met gesnapte polylijnen."
              }
            }
          },
          "split_vector_lines": {
            "name": "Vectorlijnen splitsen",
            "description": "Splitst elk polylijnobject in segmenten met een opgegeven maximale lengte.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met polylijnen."
              },
              "segment_length": {
                "label": "Segmentlengte",
                "description": "Maximale segmentlengte in kaarteenheden."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de polylijnvector."
              }
            }
          },
          "split_with_lines": {
            "name": "Splitsen met lijnen",
            "description": "Splitst invoerpolylijnen op de snijpunten met een laag met splitslijnen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Te splitsen invoerlijnenlaag."
              },
              "split": {
                "label": "Splitsen",
                "description": "Lijnenlaag die wordt gebruikt om breekpunten te maken."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Optionele snaptolerantie die door splitsbewerkingen wordt gebruikt; standaard de machine-epsilon."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "compactness_ratio": {
            "name": "Compactheidsratio",
            "description": "Berekent de compactheidsverhouding (oppervlakte / omtrek) voor polygoonobjecten.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met polygonen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervector met een toegevoegd veld voor compactheid."
              }
            }
          },
          "deviation_from_regional_direction": {
            "name": "Afwijking van regionale richting",
            "description": "Berekent de richtingsafwijking van polygonen ten opzichte van de gewogen regionale gemiddelde oriëntatie en voegt DEV_DIR toe.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met polygonen."
              },
              "elongation_threshold": {
                "label": "Verlengingsdrempel",
                "description": "Minimale langgerektheid om polygonen op te nemen in de schatting van de regionale richting; standaard 0.75."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "elongation_ratio": {
            "name": "Elongatieratio",
            "description": "Berekent de elongatieverhouding (korte as / lange as van de omsluitende rechthoek) voor polygoonobjecten.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met polygonen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervector met een toegevoegd veld voor langgerektheid."
              }
            }
          },
          "hole_proportion": {
            "name": "Aandeel gaten",
            "description": "Berekent de oppervlakte van de gaten in een polygoon gedeeld door de oppervlakte van de omhullende en voegt HOLE_PROP toe.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met polygonen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "linearity_index": {
            "name": "Lineariteitsindex",
            "description": "Berekent de lineariteitsindex (r-kwadraat van de regressie) voor polygoonobjecten.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met polygonen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervector met een toegevoegd veld voor lineariteit."
              }
            }
          },
          "narrowness_index_vector": {
            "name": "Smalheidsindex (vector)",
            "description": "Berekent de smalheidsindex (omtrek / sqrt(oppervlakte)) voor polygoonobjecten.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met polygonen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervector met een toegevoegd veld voor smalheid."
              }
            }
          },
          "patch_orientation": {
            "name": "Patchoriëntatie",
            "description": "Berekent de oriëntatie van polygonen (graden vanaf het noorden) met reduced major axis-regressie en voegt ORIENT toe.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met polygonen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "perimeter_area_ratio": {
            "name": "Omtrek-oppervlakteratio",
            "description": "Berekent de verhouding omtrek/oppervlakte van polygonen en voegt P_A_RATIO toe.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met polygonen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "polygon_area": {
            "name": "Polygoonoppervlakte",
            "description": "Berekent de oppervlakte van polygonen en voegt een attribuutveld AREA toe.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met polygonen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "polygon_long_axis": {
            "name": "Lange as van polygoon",
            "description": "Brengt de lange as van de minimale omsluitende rechthoek van elk polygoonobject in kaart als lijnuitvoer.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met polygonen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de polylijnvector."
              }
            }
          },
          "polygon_perimeter": {
            "name": "Polygoonomtrek",
            "description": "Berekent de omtrek van polygonen en voegt een attribuutveld PERIMETER toe.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met polygonen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "polygon_short_axis": {
            "name": "Korte as van polygoon",
            "description": "Brengt de korte as van de minimale omsluitende rechthoek van elk polygoonobject in kaart als lijnuitvoer.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met polygonen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de polylijnvector."
              }
            }
          },
          "related_circumscribing_circle": {
            "name": "Gerelateerde omgeschreven cirkel",
            "description": "Berekent 1 - (oppervlakte van de polygoon / oppervlakte van de kleinste omgeschreven cirkel) en voegt RC_CIRCLE toe.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met polygonen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "shape_complexity_index_vector": {
            "name": "Vormcomplexiteitsindex (vector)",
            "description": "Berekent een vormcomplexiteitsindex voor vectorpolygoonobjecten met behulp van de genormaliseerde vormfactor.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met polygonen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervector met een toegevoegd veld voor de complexiteitsindex."
              }
            }
          },
          "global_morans_i": {
            "name": "Globale Moran's I",
            "description": "Berekent de globale Moran's I om ruimtelijke autocorrelatie te toetsen: of vergelijkbare waarden ruimtelijk clusteren. Essentiële basis voor geostatistische analyse.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "field": {
                "label": "Veld",
                "description": "Numeriek attribuutveld dat moet worden geanalyseerd."
              },
              "weights_mode": {
                "label": "Gewichtenmodus",
                "description": "Omgevingsmodus: queen, rook, k_nearest, distance_band."
              },
              "k": {
                "label": "K",
                "description": "k-waarde voor de modus k_nearest."
              },
              "distance": {
                "label": "Afstand",
                "description": "Afstandsdrempel voor de modus distance_band."
              },
              "row_standardize": {
                "label": "Rijstandaardisatie",
                "description": "Rijstandaardisatie op de gewichten toepassen (standaard true)."
              },
              "inference": {
                "label": "Inferentie",
                "description": "Inferentiemodus: asymptotic of permutation (standaard: asymptotic)."
              },
              "num_simulations": {
                "label": "Aantal simulaties",
                "description": "Aantal permutaties voor permutatietoetsing (standaard: 999)."
              },
              "seed": {
                "label": "Seed",
                "description": "Zaadwaarde voor reproduceerbare permutatietoetsing."
              },
              "island_policy": {
                "label": "Eilandbeleid",
                "description": "Omgang met eilanden: drop_with_warning, keep_zero_weight, error."
              },
              "output_json": {
                "label": "JSON uitvoeren",
                "description": "Optioneel uitvoerpad van het JSON-rapport."
              },
              "output_html": {
                "label": "Uitvoer-HTML",
                "description": "Optioneel uitvoerpad van het HTML-rapport."
              },
              "output_csv": {
                "label": "CSV uitvoeren",
                "description": "Optioneel uitvoerpad van de CSV-samenvatting."
              },
              "output_distribution": {
                "label": "Verdeling uitvoeren",
                "description": "Optioneel pad om de permutatieverdeling als JSON op te slaan."
              }
            }
          },
          "getis_ord_gi_star": {
            "name": "Getis-Ord Gi*",
            "description": "Berekent Getis-Ord Gi/Gi*-z-scores voor de identificatie van lokale hotspots/coldspots. Directe maat voor de concentratie van hoge/lage waarden.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "field": {
                "label": "Veld",
                "description": "Numeriek attribuutveld dat moet worden geanalyseerd."
              },
              "weights_mode": {
                "label": "Gewichtenmodus",
                "description": "Omgevingsmodus: queen, rook, k_nearest, distance_band."
              },
              "k": {
                "label": "K",
                "description": "k-waarde voor de modus k_nearest."
              },
              "distance": {
                "label": "Afstand",
                "description": "Afstandsdrempel voor de modus distance_band."
              },
              "row_standardize": {
                "label": "Rijstandaardisatie",
                "description": "Rijstandaardisatie op de gewichten toepassen (standaard true)."
              },
              "variant": {
                "label": "Variant",
                "description": "Variant: gi of gi_star (standaard gi_star)."
              },
              "inference": {
                "label": "Inferentie",
                "description": "Inferentiemodus: asymptotic of permutation (standaard: asymptotic)."
              },
              "num_simulations": {
                "label": "Aantal simulaties",
                "description": "Aantal permutaties voor permutatietoetsing (standaard: 999)."
              },
              "seed": {
                "label": "Seed",
                "description": "Zaadwaarde voor reproduceerbare permutatietoetsing."
              },
              "island_policy": {
                "label": "Eilandbeleid",
                "description": "Omgang met eilanden: drop_with_warning, keep_zero_weight, error."
              },
              "alpha": {
                "label": "Alfa",
                "description": "Significantiedrempelwaarde in [0, 1]; standaard 0.05."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector met GI-velden."
              },
              "output_html": {
                "label": "Uitvoer-HTML",
                "description": "Optioneel uitvoerpad van het HTML-rapport."
              }
            }
          },
          "local_morans_i_lisa": {
            "name": "Lokale Moran's I (LISA)",
            "description": "Berekent voor elk object de lokale Moran's I om lokale ruimtelijke clusters en uitschieters te identificeren, met statistische significantietoetsing.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "field": {
                "label": "Veld",
                "description": "Numeriek attribuutveld dat moet worden geanalyseerd."
              },
              "weights_mode": {
                "label": "Gewichtenmodus",
                "description": "Omgevingsmodus: queen, rook, k_nearest, distance_band."
              },
              "k": {
                "label": "K",
                "description": "k-waarde voor de modus k_nearest."
              },
              "distance": {
                "label": "Afstand",
                "description": "Afstandsdrempel voor de modus distance_band."
              },
              "row_standardize": {
                "label": "Rijstandaardisatie",
                "description": "Rijstandaardisatie op de gewichten toepassen (standaard true)."
              },
              "inference": {
                "label": "Inferentie",
                "description": "Inferentiemodus: asymptotic of permutation (standaard: asymptotic)."
              },
              "num_simulations": {
                "label": "Aantal simulaties",
                "description": "Aantal permutaties voor permutatietoetsing (standaard: 999)."
              },
              "seed": {
                "label": "Seed",
                "description": "Zaadwaarde voor reproduceerbare permutatietoetsing."
              },
              "island_policy": {
                "label": "Eilandbeleid",
                "description": "Omgang met eilanden: drop_with_warning, keep_zero_weight, error."
              },
              "alpha": {
                "label": "Alfa",
                "description": "Significantiedrempelwaarde in [0, 1]; standaard 0.05."
              },
              "fdr_correction": {
                "label": "FDR-correctie",
                "description": "FDR-BH-correctie toepassen (standaard true voor permutation)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector met LISA-velden."
              },
              "output_html": {
                "label": "Uitvoer-HTML",
                "description": "Optioneel uitvoerpad van het HTML-rapport."
              }
            }
          },
          "nearest_neighbour_index": {
            "name": "Nearest-neighbour-index",
            "description": "Berekent de Clark-Evans-index voor de dichtstbijzijnde buur die toetst op volledige ruimtelijke willekeur. Detecteert clustering versus spreiding.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met punten."
              },
              "study_area_mode": {
                "label": "Studiegebiedmodus",
                "description": "Modus voor het studiegebied: hull, envelope, polygon_layer."
              },
              "study_area_polygon": {
                "label": "Studiegebiedpolygoon",
                "description": "Polygoonlaag die wordt gebruikt wanneer study_area_mode=polygon_layer."
              },
              "output_json": {
                "label": "JSON uitvoeren",
                "description": "Optioneel uitvoerpad van het JSON-rapport."
              },
              "output_html": {
                "label": "Uitvoer-HTML",
                "description": "Optioneel uitvoerpad van het HTML-rapport."
              },
              "output_csv": {
                "label": "CSV uitvoeren",
                "description": "Optioneel uitvoerpad van de CSV-samenvatting."
              }
            }
          },
          "quadrat_count_test": {
            "name": "Kwadranttellingstoets",
            "description": "Voert een chikwadraattoets uit op de willekeurigheid van een puntpatroon met behulp van kwadranttellingen. Toetst op clustering versus spreiding.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met punten."
              },
              "grid_mode": {
                "label": "Rastermodus",
                "description": "Roostermodus: rows_cols of cell_size."
              },
              "rows": {
                "label": "Rijen",
                "description": "Aantal rijen wanneer grid_mode=rows_cols."
              },
              "cols": {
                "label": "Kolommen",
                "description": "Aantal kolommen wanneer grid_mode=rows_cols."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Celgrootte wanneer grid_mode=cell_size."
              },
              "study_area_mode": {
                "label": "Studiegebiedmodus",
                "description": "Modus voor het studiegebied: hull, envelope, polygon_layer."
              },
              "study_area_polygon": {
                "label": "Studiegebiedpolygoon",
                "description": "Polygoonlaag die wordt gebruikt wanneer study_area_mode=polygon_layer."
              },
              "output_grid": {
                "label": "Raster uitvoeren",
                "description": "Optioneel uitvoerpad van het polygoonrooster met kwadraten."
              },
              "output_json": {
                "label": "JSON uitvoeren",
                "description": "Optioneel uitvoerpad van het JSON-rapport."
              },
              "output_html": {
                "label": "Uitvoer-HTML",
                "description": "Optioneel uitvoerpad van het HTML-rapport."
              },
              "output_csv": {
                "label": "CSV uitvoeren",
                "description": "Optioneel uitvoerpad van de CSV-samenvatting."
              }
            }
          },
          "spatial_lag_regression": {
            "name": "Ruimtelijke-lag-regressie",
            "description": "Schat een ruimtelijk autoregressief model dat endogene overloopeffecten vastlegt, waarbij de afhankelijke variabele wordt beïnvloed door ruimtelijke buren.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "response_field": {
                "label": "Responsveld",
                "description": "Responsvariabele (afhankelijke variabele)."
              },
              "predictor_fields": {
                "label": "Voorspellervelden",
                "description": "Door komma's gescheiden namen van de predictorvelden."
              },
              "weights_mode": {
                "label": "Gewichtenmodus",
                "description": "Ruimtelijke omgevingsmodus."
              },
              "k": {
                "label": "K",
                "description": "k-waarde voor k_nearest."
              },
              "distance": {
                "label": "Afstand",
                "description": "Afstandsdrempel."
              },
              "row_standardize": {
                "label": "Rijstandaardisatie",
                "description": "Rijstandaardisatie op de gewichten toepassen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorlaag."
              }
            }
          },
          "spatial_error_regression": {
            "name": "Ruimtelijke-foutregressie",
            "description": "Schat een ruimtelijk foutenmodel dat exogene ruimtelijke afhankelijkheid in residuen als gevolg van weggelaten variabelen of meetfouten aanpakt.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "response_field": {
                "label": "Responsveld",
                "description": "Responsvariabele."
              },
              "predictor_fields": {
                "label": "Voorspellervelden",
                "description": "Door komma's gescheiden predictorvelden."
              },
              "weights_mode": {
                "label": "Gewichtenmodus",
                "description": "Ruimtelijke omgevingsmodus."
              },
              "k": {
                "label": "K",
                "description": "k voor k_nearest."
              },
              "distance": {
                "label": "Afstand",
                "description": "Afstandsdrempel."
              },
              "row_standardize": {
                "label": "Rijstandaardisatie",
                "description": "Rijstandaardisatie op de gewichten toepassen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorlaag."
              }
            }
          },
          "geographically_weighted_regression": {
            "name": "Geografisch gewogen regressie",
            "description": "Lokale lineaire regressie met kernelgewichten op basis van afstandsverval (GWR): coëfficiënten per object, lokale R², residuen en voorspellingen, plus globale AICc-/R²-diagnostiek; vaste of adaptieve bandbreedte, optioneel geoptimaliseerd op AICc.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlaag met objecten (punten, of andere geometrieën via hun representatieve punt)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de vector (driver op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "y_field": {
                "label": "Y-veld",
                "description": "Numeriek veld met de afhankelijke variabele (respons)."
              },
              "x_fields": {
                "label": "X-velden",
                "description": "Door komma's gescheiden numeriek(e) verklarend(e) veld(en)."
              },
              "kernel": {
                "label": "Kernel",
                "description": "Kernel voor afstandsafname: 'gaussian' (standaard) of 'bisquare'."
              },
              "bandwidth_type": {
                "label": "Bandbreedtetype",
                "description": "'adaptive' (standaard; bandbreedte = k dichtstbijzijnde buren) of 'fixed' (bandbreedte = een afstand)."
              },
              "bandwidth": {
                "label": "Bandbreedte",
                "description": "Bandbreedte: aantal buren voor adaptive, of een afstand voor fixed. Laat weg om deze te bepalen door de AICc te minimaliseren."
              }
            }
          },
          "ripleys_k_test": {
            "name": "Ripley's K-toets",
            "description": "Berekent de multischalige clusteringstatistiek Ripley's K. Toont schaalafhankelijke clustering/spreiding over afstandsbereiken.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met punten."
              },
              "max_distance": {
                "label": "Maximale afstand",
                "description": "Maximale analyseafstand."
              },
              "step_size": {
                "label": "Stapgrootte",
                "description": "Stapgrootte van de afstand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervector met K-statistieken."
              }
            }
          },
          "envelope_test": {
            "name": "Enveloptoets",
            "description": "Voert een Monte Carlo-enveloptoets uit die het waargenomen patroon vergelijkt met de nulverdeling van CSR. Bepaalt de significantie van clustering/spreiding.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met punten."
              },
              "num_simulations": {
                "label": "Aantal simulaties",
                "description": "Aantal Monte Carlo-simulaties."
              },
              "max_distance": {
                "label": "Maximale afstand",
                "description": "Maximale analyseafstand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervector met de grenzen van de omhullende."
              }
            }
          },
          "point_process_residuals": {
            "name": "Puntprocesresiduen",
            "description": "Berekent residuen van een gefit Poisson-puntprocesmodel voor diagnostiek. Detecteert niet-gemodelleerde ruimtelijke structuur.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met punten."
              },
              "intensity_field": {
                "label": "Intensiteitsveld",
                "description": "Veld met de gefitte intensiteit."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervector met residuen."
              }
            }
          },
          "ripleys_k_function": {
            "name": "Ripley's K-functie",
            "description": "Berekent K(t) en L(t) voor het karakteriseren van ruimtelijke clusteringspatronen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Vectorlaag met punten."
              },
              "max_distance": {
                "label": "Maximale afstand",
                "description": "Maximale afstandsdrempel."
              },
              "num_distances": {
                "label": "Aantal afstanden",
                "description": "Aantal afstandsstappen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoer-CSV."
              }
            }
          },
          "point_pattern_envelope": {
            "name": "Puntpatroonenvelop",
            "description": "Genereert enveloppen met kritieke banden voor het toetsen van hypothesen tegen CSR.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Vectorlaag met punten."
              },
              "max_distance": {
                "label": "Maximale afstand",
                "description": "Maximale afstand."
              },
              "num_distances": {
                "label": "Aantal afstanden",
                "description": "Afstandsklassen."
              },
              "num_simulations": {
                "label": "Aantal simulaties",
                "description": "Aantal Monte Carlo-herhalingen."
              },
              "alpha": {
                "label": "Alfa",
                "description": "Significantieniveau."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoer-CSV."
              }
            }
          },
          "inhomogeneous_baseline": {
            "name": "Inhomogene basislijn",
            "description": "Schat een intensiteitsoppervlak en berekent de voor intensiteit gecorrigeerde K-functie.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Vectorlaag met punten."
              },
              "max_distance": {
                "label": "Maximale afstand",
                "description": "Maximale afstand."
              },
              "num_distances": {
                "label": "Aantal afstanden",
                "description": "Afstandsklassen."
              },
              "bandwidth": {
                "label": "Bandbreedte",
                "description": "KDE-bandbreedte (wordt automatisch gekozen indien weggelaten)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoer-CSV."
              }
            }
          },
          "hotspot_vs_process": {
            "name": "Hotspot versus proces",
            "description": "Vergelijkt hotspotpatronen met de onderliggende intensiteit van het puntproces.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Vectorlaag met punten."
              },
              "hotspot_field": {
                "label": "Hotspotveld",
                "description": "Veld met de hotspotclassificatie."
              },
              "intensity_field": {
                "label": "Intensiteitsveld",
                "description": "Intensiteitsveld."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoer-CSV."
              }
            }
          },
          "point_process_residuals_comparison": {
            "name": "Vergelijking van puntprocesresiduen",
            "description": "Berekent residudiagnostiek voor het controleren van de geschiktheid van het model.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Vectorlaag met punten."
              },
              "observed_field": {
                "label": "Veld waargenomen waarde",
                "description": "Veld met de waargenomen waarden."
              },
              "predicted_field": {
                "label": "Voorspeld veld",
                "description": "Veld met de voorspelde waarden."
              },
              "residual_type": {
                "label": "Residutype",
                "description": "Type residu."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoer-CSV."
              }
            }
          },
          "construct_vector_tin": {
            "name": "Vector-TIN opbouwen",
            "description": "Construeert een onregelmatig driehoeksnetwerk (TIN) uit een invoerpuntenset met Delaunay-triangulatie.",
            "params": {
              "input_points": {
                "label": "Invoerpunten",
                "description": "Invoervectorlaag met punten of multipunten."
              },
              "field_name": {
                "label": "Veldnaam",
                "description": "Optionele veldnaam voor de hoogten van de knikpunten (numeriek veld)."
              },
              "use_z": {
                "label": "Z gebruiken",
                "description": "Indien true, worden de Z-waarden van de geometrie gebruikt voor de hoogten van de driehoeken."
              },
              "max_triangle_edge_length": {
                "label": "Maximale driehoekszijdelengte",
                "description": "Maximaal toegestane lengte van driehoekszijden (filtert lange zijden). Gebruik 0 of een negatieve waarde voor geen limiet."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorlaag met polygonen (TIN)."
              }
            }
          },
          "contours_from_points": {
            "name": "Contouren uit punten",
            "description": "Maakt contourpolylijnen uit puntshoogten met een Delaunay-TIN.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerpad van de vector met punten of multipunten."
              },
              "base": {
                "label": "Basis",
                "description": "Basishoogte van de contourlijnen (standaard 0.0)."
              },
              "field_name": {
                "label": "Veldnaam",
                "description": "Numeriek attribuutveld met hoogtewaarden (genegeerd wanneer use_z_values=true)."
              },
              "interval": {
                "label": "Interval",
                "description": "Waarde van het contourinterval (standaard 10.0)."
              },
              "max_triangle_edge_length": {
                "label": "Maximale driehoekszijdelengte",
                "description": "Maximale lengte van driehoekszijden die in de contourberekening worden meegenomen (kaarteenheden)."
              },
              "smooth": {
                "label": "Gladstrijken",
                "description": "Grootte van het afvlakkingsfilter (oneven geheel getal, standaard 9)."
              },
              "use_z_values": {
                "label": "Z-waarden gebruiken",
                "description": "De Z-waarden van de geometrie als hoogten gebruiken (standaard false)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "contours_from_raster": {
            "name": "Contouren uit raster",
            "description": "Maakt contourpolylijnen uit een rasteroppervlaktemodel.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerpad van het rasteroppervlak of een getypeerd rasterobject."
              },
              "base": {
                "label": "Basis",
                "description": "Basishoogte van de contourlijnen (standaard 0.0)."
              },
              "interval": {
                "label": "Interval",
                "description": "Waarde van het contourinterval (standaard 10.0)."
              },
              "smooth": {
                "label": "Gladstrijken",
                "description": "Grootte van het afvlakkingsfilter (oneven geheel getal, standaard 9)."
              },
              "tolerance": {
                "label": "Tolerantie",
                "description": "Minimale afbuigingshoek van de lijn in graden voor de vereenvoudiging (standaard 10.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "extract_nodes": {
            "name": "Knopen extraheren",
            "description": "Zet hoekpunten van polylijnen en polygonen om in puntobjecten.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met polylijnen of polygonen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Pad van de uitvoerpuntvector."
              }
            }
          },
          "extract_raster_values_at_points": {
            "name": "Rasterwaarden extraheren bij punten",
            "description": "Bemonstert een of meer rasters op puntlocaties en schrijft de waarden naar puntattributen.",
            "params": {
              "rasters": {
                "label": "Rasters",
                "description": "Invoerpaden van de rasters als array of als gescheiden tekenreeks."
              },
              "points": {
                "label": "Punten",
                "description": "Invoervectorlaag met punten."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Pad van de uitvoerpuntvector."
              }
            }
          },
          "find_lowest_or_highest_points": {
            "name": "Laagste of hoogste punten vinden",
            "description": "Lokaliseert de laagste en/of hoogste rastercellen en geeft hun locaties als punten.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerraster."
              },
              "out_type": {
                "label": "Uitvoertype",
                "description": "Uitvoertype: lowest, highest of both."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Pad van de uitvoerpuntvector."
              }
            }
          },
          "hexagonal_grid_from_raster_base": {
            "name": "Hexagonaal raster op basis van raster",
            "description": "Maakt een hexagonaal polygoonraster met instelbare breedte en oriëntatie, dat een onvertekende tessellatie biedt voor heatmaps en aggregatie.",
            "params": {
              "base": {
                "label": "Basis",
                "description": "Basisraster dat de omvang van het rooster bepaalt."
              },
              "width": {
                "label": "Breedte",
                "description": "Breedte van de zeshoeken in kaarteenheden."
              },
              "orientation": {
                "label": "Oriëntatie",
                "description": "Oriëntatie van de zeshoeken: horizontal of vertical."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de polygoonvector."
              }
            }
          },
          "hexagonal_grid_from_vector_base": {
            "name": "Hexagonaal raster op basis van vector",
            "description": "Maakt een hexagonaal polygoonraster dat is uitgelijnd op de omvang van een vectorlaag, wat onvertekende ruimtelijke aggregatie en dichtheidsvisualisatie mogelijk maakt.",
            "params": {
              "base": {
                "label": "Basis",
                "description": "Basisvectorlaag die de omvang van het rooster bepaalt."
              },
              "width": {
                "label": "Breedte",
                "description": "Breedte van de zeshoeken in kaarteenheden."
              },
              "orientation": {
                "label": "Oriëntatie",
                "description": "Oriëntatie van de zeshoeken: horizontal of vertical."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de polygoonvector."
              }
            }
          },
          "layer_footprint_raster": {
            "name": "Laagomtrek (raster)",
            "description": "Maakt een polygooncontour die de volledige omvang van een invoerraster weergeeft.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerraster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de polygoonvector."
              }
            }
          },
          "layer_footprint_vector": {
            "name": "Laagomtrek (vector)",
            "description": "Maakt een polygooncontour die de volledige omsluitende omvang van een invoervectorlaag weergeeft.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de polygoonvector."
              }
            }
          },
          "medoid": {
            "name": "Medoïde",
            "description": "Berekent medoïdepunten uit vectorgeometrieën.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de puntvector met medoïden."
              }
            }
          },
          "random_points_in_polygon": {
            "name": "Willekeurige punten in polygoon",
            "description": "Genereert willekeurige punten die uniform verdeeld zijn binnen invoerpolygoongeometrieën.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlaag met polygonen."
              },
              "num_points": {
                "label": "Aantal punten",
                "description": "Aantal aan te maken willekeurige punten."
              },
              "seed": {
                "label": "Seed",
                "description": "Optionele zaadwaarde voor de generator van willekeurige getallen ten behoeve van de reproduceerbaarheid."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "rectangular_grid_from_raster_base": {
            "name": "Rechthoekig raster op basis van raster",
            "description": "Maakt een rechthoekig polygoonraster dat de omvang van een raster bedekt.",
            "params": {
              "base": {
                "label": "Basis",
                "description": "Basisraster dat de omvang van het rooster bepaalt."
              },
              "width": {
                "label": "Breedte",
                "description": "Celbreedte van het rooster in kaarteenheden."
              },
              "height": {
                "label": "Hoogte",
                "description": "Celhoogte van het rooster in kaarteenheden."
              },
              "x_origin": {
                "label": "X-oorsprong",
                "description": "Optionele x-oorsprong voor de uitlijning van het rooster."
              },
              "y_origin": {
                "label": "Y-oorsprong",
                "description": "Optionele y-oorsprong voor de uitlijning van het rooster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de polygoonvector."
              }
            }
          },
          "rectangular_grid_from_vector_base": {
            "name": "Rechthoekig raster op basis van vector",
            "description": "Maakt een rechthoekig polygoonraster dat de omsluitende omvang van een vectorlaag bedekt.",
            "params": {
              "base": {
                "label": "Basis",
                "description": "Basisvectorlaag die de omvang van het rooster bepaalt."
              },
              "width": {
                "label": "Breedte",
                "description": "Celbreedte van het rooster in kaarteenheden."
              },
              "height": {
                "label": "Hoogte",
                "description": "Celhoogte van het rooster in kaarteenheden."
              },
              "x_origin": {
                "label": "X-oorsprong",
                "description": "Optionele x-oorsprong voor de uitlijning van het rooster."
              },
              "y_origin": {
                "label": "Y-oorsprong",
                "description": "Optionele y-oorsprong voor de uitlijning van het rooster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de polygoonvector."
              }
            }
          },
          "vector_hex_binning": {
            "name": "Hexagonale binning (vector)",
            "description": "Aggregeert puntobjecten in hexagonale bins en telt de punten per zeshoekcel.",
            "params": {
              "vector_points": {
                "label": "Vectorpunten",
                "description": "Invoervectorlaag met punten of multipunten."
              },
              "width": {
                "label": "Breedte",
                "description": "Breedte van de zeshoeken (afstand tussen tegenoverliggende zijden)."
              },
              "orientation": {
                "label": "Oriëntatie",
                "description": "Oriëntatie van de zeshoeken: 'h' voor horizontaal (punt boven) of 'v' voor verticaal (vlakke bovenzijde)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerlaag met zeshoekige polygonen en aantallen."
              }
            }
          },
          "voronoi_diagram": {
            "name": "Voronoi-diagram",
            "description": "Maakt Voronoi-polygonen (Thiessen) uit invoerpuntlocaties.",
            "params": {
              "input_points": {
                "label": "Invoerpunten",
                "description": "Invoervectorlaag met punten of multipunten."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector met Voronoi-polygonen."
              }
            }
          },
          "add_field": {
            "name": "Veld toevoegen",
            "description": "Voegt een nieuw attribuutveld toe met een optionele standaardwaarde.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "field": {
                "label": "Veld",
                "description": "Naam van het nieuwe veld."
              },
              "field_type": {
                "label": "Veldtype",
                "description": "Veldtype: integer, float, text, boolean."
              },
              "default": {
                "label": "Standaard",
                "description": "Optionele standaardwaarde."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "add_geometry_attributes": {
            "name": "Geometrie-attributen toevoegen",
            "description": "Berekent automatisch geometrische eigenschappen (oppervlakte, lengte, omtrek, zwaartepunt) en voegt ze toe als nieuwe velden, met ondersteuning voor zowel vlakke als geodetische metingen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "measurement_mode": {
                "label": "Meetmodus",
                "description": "Meetmethode: auto (standaard), planar of geodesic."
              },
              "area": {
                "label": "Oppervlakte",
                "description": "Een oppervlakteveld opnemen (AREA_M2 voor geodesic, AREA_MAP2 voor planar)."
              },
              "length": {
                "label": "Lengte",
                "description": "Een lengteveld opnemen (LENGTH_M voor geodesic, LENGTH_MAP voor planar)."
              },
              "perimeter": {
                "label": "Omtrek",
                "description": "Een omtrekveld opnemen (PERIM_M voor geodesic, PERIM_MAP voor planar)."
              },
              "centroid": {
                "label": "Zwaartepunt",
                "description": "De X-/Y-velden van het zwaartepunt opnemen (standaard true)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "attribute_correlation": {
            "name": "Attribuutcorrelatie",
            "description": "Voert een Pearson-correlatieanalyse uit op numerieke attribuutvelden van een vector.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerpad van de vector."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van het HTML-rapport (alias: output_html_file)."
              }
            }
          },
          "attribute_histogram": {
            "name": "Attribuuthistogram",
            "description": "Maakt een histogram voor numerieke veldwaarden in een attribuuttabel van een vector.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerpad van de vector."
              },
              "field": {
                "label": "Veld",
                "description": "Naam van het numerieke attribuutveld."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van het HTML-rapport (alias: output_html_file)."
              }
            }
          },
          "attribute_scattergram": {
            "name": "Attribuutspreidingsdiagram",
            "description": "Berekent samenvattende statistieken van een spreidingsdiagram tussen twee numerieke vectorvelden.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerpad van de vector."
              },
              "fieldx": {
                "label": "Veld X",
                "description": "Naam van het numerieke veld voor de x-as."
              },
              "fieldy": {
                "label": "Veld Y",
                "description": "Naam van het numerieke veld voor de y-as."
              },
              "trendline": {
                "label": "Trendlijn",
                "description": "Een samenvatting van de trendlijn opnemen (standaard false)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van het HTML-rapport (alias: output_html_file)."
              }
            }
          },
          "delete_field": {
            "name": "Veld verwijderen",
            "description": "Verwijdert een of meer attribuutvelden uit een vectorlaag.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "fields": {
                "label": "Velden",
                "description": "Door komma's gescheiden namen van de te verwijderen velden."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "extract_by_attribute": {
            "name": "Extraheren op attribuut",
            "description": "Extraheert vectorobjecten die voldoen aan een attribuutexpressie.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "statement": {
                "label": "Instructie",
                "description": "Booleaanse expressie die op de attribuutvelden wordt geëvalueerd; accepteert aliassen in SQL-stijl voor AND/OR/NOT/XOR."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "field_calculator": {
            "name": "Veldcalculator",
            "description": "Berekent een veldwaarde uit een expressie met objectattributen en geometrievariabelen; ondersteunt SQL-achtige CASE, CAST, controles op null en UPDATE ... SET ... [WHERE ...]-constructies.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "field": {
                "label": "Veld",
                "description": "Naam van het uitvoerveld."
              },
              "field_type": {
                "label": "Veldtype",
                "description": "Type van het uitvoerveld: float, integer, text."
              },
              "expression": {
                "label": "Expressie",
                "description": "Expressie die per object wordt geëvalueerd. Ondersteunt CASE, CAST(... AS type), IS NULL/IS NOT NULL en UPDATE ... SET FIELD = ... [WHERE ...] in SQL-stijl."
              },
              "overwrite": {
                "label": "Overschrijven",
                "description": "Een bestaand veld overschrijven indien aanwezig (standaard true)."
              },
              "preview_rows": {
                "label": "Voorbeeldrijen",
                "description": "Optioneel aantal voorbeeldrijen dat in de resultaatpayload wordt geretourneerd. Wanneer > 0, mag output worden weggelaten voor een evaluatie die alleen een voorbeeld oplevert."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector. Optioneel wanneer preview_rows > 0."
              }
            }
          },
          "filter_vector_features_by_area": {
            "name": "Vectorobjecten filteren op oppervlakte",
            "description": "Filtert polygoonobjecten onder een drempel voor de minimale oppervlakte.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met polygonen."
              },
              "threshold": {
                "label": "Drempelwaarde",
                "description": "Minimale te behouden polygoonoppervlakte, in vierkante coördinaateenheden van de laag."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "list_unique_values": {
            "name": "Unieke waarden weergeven",
            "description": "Geeft de unieke waarden en frequenties in een attribuutveld van een vector weer.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerpad van de vector."
              },
              "field": {
                "label": "Veld",
                "description": "Naam van het attribuutveld."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van het CSV-bestand."
              }
            }
          },
          "rename_field": {
            "name": "Veld hernoemen",
            "description": "Hernoemt een attribuutveld in een vectorlaag.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "field": {
                "label": "Veld",
                "description": "Naam van het bestaande veld."
              },
              "new_field": {
                "label": "Nieuw veld",
                "description": "Naam van het vervangingsveld."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "download_osm_vector": {
            "name": "OSM-vector downloaden",
            "description": "Downloadt OpenStreetMap-objecten via de Overpass API voor een omsluitende rechthoek en schrijft het resultaat weg als vectorlaag.",
            "params": {
              "west": {
                "label": "West",
                "description": "Lengtegraad van de westgrens (EPSG:4326)."
              },
              "south": {
                "label": "Zuid",
                "description": "Breedtegraad van de zuidgrens (EPSG:4326)."
              },
              "east": {
                "label": "Oost",
                "description": "Lengtegraad van de oostgrens (EPSG:4326)."
              },
              "north": {
                "label": "Noord",
                "description": "Breedtegraad van de noordgrens (EPSG:4326)."
              },
              "input_extent_epsg": {
                "label": "EPSG van invoerextent",
                "description": "EPSG-code voor de invoeromvang west/zuid/oost/noord (standaard 4326)."
              },
              "filter_preset": {
                "label": "Filtervoorinstelling",
                "description": "Voorinstelling voor objectklassen: all, roads, buildings, water, landuse, trails, parks, rail, amenities, boundaries, transit, poi (standaard all)."
              },
              "include_tags": {
                "label": "Tags opnemen",
                "description": "Puntkomma-gescheiden filterlijst met tagsleutels, bijv. amenity;shop."
              },
              "include_key_values": {
                "label": "Sleutelwaarden opnemen",
                "description": "Puntkomma-gescheiden filterlijst met key=value-paren, bijv. amenity=school;building=yes."
              },
              "filter_key": {
                "label": "Filtersleutel",
                "description": "Verouderd filter met één tagsleutel (afgeraden; gebruik include_tags)."
              },
              "filter_key_value": {
                "label": "Filtersleutelwaarde",
                "description": "Verouderd filter met één key=value-paar (afgeraden; gebruik include_key_values)."
              },
              "include_points": {
                "label": "Punten opnemen",
                "description": "Neem OSM-node-objecten met tags op als Point-geometrieën (standaard true)."
              },
              "include_lines": {
                "label": "Lijnen opnemen",
                "description": "Neem OSM-way-objecten op als LineString-geometrieën (standaard true)."
              },
              "include_polygons": {
                "label": "Polygonen opnemen",
                "description": "Neem gesloten OSM-ways met vlaktags op als Polygon-geometrieën (standaard true)."
              },
              "clip_to_extent": {
                "label": "Uitsnijden op extent",
                "description": "Knip uitvoergeometrieën bij tot de omvang van de bbox van de query (standaard true)."
              },
              "split_output_by_geometry": {
                "label": "Uitvoer splitsen op geometrie",
                "description": "Schrijf afzonderlijke uitvoer per geometrietype (<output>_points|lines|polygons.ext)."
              },
              "output_epsg": {
                "label": "Uitvoer-EPSG",
                "description": "Herprojecteer de uitvoer naar deze EPSG-code; weglaten om EPSG:4326 te behouden."
              },
              "overpass_profile": {
                "label": "Overpass-profiel",
                "description": "Profiel van het Overpass-eindpunt: main, kumi, fr of custom (standaard main)."
              },
              "overpass_url": {
                "label": "Overpass-URL",
                "description": "URL van het Overpass API-eindpunt (standaard https://overpass-api.de/api/interpreter)."
              },
              "timeout_seconds": {
                "label": "Time-out (seconden)",
                "description": "Time-out van de query in seconden (standaard 25)."
              },
              "max_elements": {
                "label": "Maximaal aantal elementen",
                "description": "Maximumaantal geretourneerde Overpass-elementen voordat een fout wordt gegenereerd (standaard 50 000)."
              },
              "chunk_large_aoi": {
                "label": "Groot AOI opdelen",
                "description": "Splits grotere AOI's automatisch op in meerdere Overpass-aanvragen (standaard true)."
              },
              "chunk_max_area_deg2": {
                "label": "Maximale deeloppervlakte (graden²)",
                "description": "Maximale oppervlakte per blok in vierkante graden bij het opsplitsen (standaard 4.0)."
              },
              "max_chunk_count": {
                "label": "Maximaal aantal delen",
                "description": "Harde bovengrens voor het aantal blokken bij het opsplitsen van grote AOI's (standaard 64)."
              },
              "chunk_parallel_requests": {
                "label": "Parallelle verzoeken per deel",
                "description": "Maximumaantal parallelle blokaanvragen voor grote AOI's (standaard 1 = sequentieel)."
              },
              "cache_dir": {
                "label": "Cachemap",
                "description": "Optionele map voor het cachen van Overpass JSON-antwoorden op basis van de hash van eindpunt en query."
              },
              "cache_ttl_hours": {
                "label": "Cache-TTL (uren)",
                "description": "Levensduur van de cache in uren (standaard 24; 0 betekent geen vervalcontrole)."
              },
              "provenance_output": {
                "label": "Herkomstuitvoer",
                "description": "Optioneel JSON-pad voor het wegschrijven van een sidecar met query- en herkomstmetadata."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoervectorpad; indien weggelaten, wordt een tijdelijke uitvoer gebruikt."
              }
            }
          },
          "assign_projection_lidar": {
            "name": "Projectie toekennen (LiDAR)",
            "description": "Kent een coördinaatreferentiesysteem toe aan een LiDAR-puntenwolk zonder de punten te herprojecteren.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het LiDAR-invoerbestand (LAS/LAZ/COPC of een handle in het geheugen)."
              },
              "epsg": {
                "label": "EPSG",
                "description": "EPSG-code van het toe te kennen CRS, bijv. 4326 (WGS84) of 3857 (Web Mercator). Coördinaten worden niet getransformeerd."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad voor LiDAR. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              }
            }
          },
          "assign_projection_raster": {
            "name": "Projectie toekennen (raster)",
            "description": "Kent een coördinaatreferentiesysteem toe aan een raster zonder de cellen te vervormen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand (of een handle in het geheugen)."
              },
              "epsg": {
                "label": "EPSG",
                "description": "EPSG-code van het toe te kennen CRS, bijv. 4326 (WGS84) of 3857 (Web Mercator). Coördinaten worden niet getransformeerd."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              }
            }
          },
          "assign_projection_vector": {
            "name": "Projectie toekennen (vector)",
            "description": "Kent een coördinaatreferentiesysteem toe aan een vectorlaag zonder de geometrieën te herprojecteren.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoervectorbestand, formaat wordt automatisch gedetecteerd (of een handle in het geheugen)."
              },
              "epsg": {
                "label": "EPSG",
                "description": "EPSG-code van het toe te kennen CRS, bijv. 4326 (WGS84) of 3857 (Web Mercator). Coördinaten worden niet getransformeerd."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de vector (driver op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              }
            }
          },
          "georeference_raster_from_control_points": {
            "name": "Raster georefereren met paspunten",
            "description": "Past een transformatie aan op basis van paspunten (GCP's) en vervormt een raster tot gegeorefereerde uitvoer.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerraster."
              },
              "control_points": {
                "label": "Controlepunten",
                "description": "Pad naar het CSV-bestand met controlepunten met pixel_x,pixel_y,map_x,map_y (en geaccepteerde aliassen)."
              },
              "epsg": {
                "label": "EPSG",
                "description": "Doel-EPSG-code."
              },
              "transform_type": {
                "label": "Transformatietype",
                "description": "Transformatietype: affine, projective, polynomial of thin_plate_spline."
              },
              "transform_order": {
                "label": "Transformatievolgorde",
                "description": "Polynoomorde wanneer transform_type=polynomial."
              },
              "resample": {
                "label": "Herbemonsteren",
                "description": "Herbemonsteringsmethode; standaard bilinear."
              },
              "allow_auto_downgrade": {
                "label": "Automatische degradatie toestaan",
                "description": "Sta automatische terugval op een eenvoudiger transformatie toe wanneer er weinig GCP's zijn."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het gegeorefereerde raster."
              },
              "report": {
                "label": "Rapport",
                "description": "Uitvoerpad van het JSON-rapport."
              }
            }
          },
          "reproject_lidar": {
            "name": "LiDAR herprojecteren",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer"
              },
              "dst_epsg": {
                "label": "Doel-EPSG",
                "description": "Doel-EPSG"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoer"
              },
              "use_3d_transform": {
                "label": "3D-transformatie gebruiken",
                "description": "3D-transformatie gebruiken"
              },
              "failure_policy": {
                "label": "Foutbeleid",
                "description": "Foutbeleid"
              },
              "coordinate_epoch": {
                "label": "Coördinaatepoche",
                "description": "Coördinaatepoche"
              },
              "source_reference_epoch": {
                "label": "Referentie-epoche bron",
                "description": "Referentie-epoche bron"
              },
              "target_reference_epoch": {
                "label": "Referentie-epoche doel",
                "description": "Referentie-epoche doel"
              },
              "operation_code": {
                "label": "Bewerkingscode",
                "description": "Bewerkingscode"
              },
              "prefer_official_operation": {
                "label": "Officiële bewerking verkiezen",
                "description": "Officiële bewerking verkiezen"
              },
              "epoch_policy": {
                "label": "Epochebeleid",
                "description": "Epochebeleid"
              }
            }
          },
          "reproject_raster": {
            "name": "Raster herprojecteren",
            "description": "Herprojecteert (warp) een raster naar een EPSG-doelcoördinaatreferentiesysteem.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand. Moet een bron-CRS bevatten (EPSG of WKT)."
              },
              "epsg": {
                "label": "EPSG",
                "description": "EPSG-code van de bestemming, bijv. 3857 (Web Mercator) of 4326 (WGS84)."
              },
              "method": {
                "label": "Methode",
                "description": "Herbemonsteringsmethode: nearest (standaard), bilinear, cubic, lanczos, average, min, max, mode, median."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              }
            }
          },
          "reproject_vector": {
            "name": "Vector herprojecteren",
            "description": "Herprojecteert vectorgeometrieën naar een EPSG-doelprojectie met behoud van topologie en attributen, wat integratie van meerdere bronnen mogelijk maakt.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "epsg": {
                "label": "EPSG",
                "description": "EPSG-code van de bestemming."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "orthorectification": {
            "name": "Orthorectificatie",
            "description": "Op een DEM gebaseerde geometrische correctie van ruwe beelden met het RPC-cameramodel. Verwijdert reliëfverplaatsing door het terrein voor uitvoer als gegeorefereerd orthobeeld.",
            "params": {
              "input_raster": {
                "label": "Invoerraster",
                "description": "Pad naar het onbewerkte (niet-gecorrigeerde) invoerbeeldraster. RPC-metadata moeten in het bestand zijn ingebed of aanwezig zijn in een bijbehorend .RPB-sidecarbestand."
              },
              "input_dem": {
                "label": "Invoer-DEM",
                "description": "DEM-raster dat wordt gebruikt om de terreinhoogte voor elke uitvoerpixel te bepalen. Het moet de volledige omvang van de scène beslaan. Als het niet in geografische coördinaten is, herprojecteert het gereedschap het waar nodig."
              },
              "output_epsg": {
                "label": "Uitvoer-EPSG",
                "description": "EPSG-code van het coördinatenreferentiesysteem van de uitvoer (standaard 4326 geografisch; geef een geprojecteerd CRS op zoals 32617 voor UTM-zone 17N)."
              },
              "output_resolution": {
                "label": "Uitvoerresolutie",
                "description": "Pixelresolutie van de uitvoer in de eenheden van het uitvoer-CRS (bijv. graden voor geografisch, meters voor geprojecteerd). Standaard de benaderde GSD van het invoerbeeld."
              },
              "resample_method": {
                "label": "Herbemonsteringsmethode",
                "description": "Herbemonsteringsmethode voor de uitvoer: nearest, bilinear (standaard), cubic."
              },
              "nodata_value": {
                "label": "NoData-waarde",
                "description": "NoData-waarde die wordt toegekend aan pixels zonder geldige brondekking (standaard gelijk aan de invoer)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het orthobeeldraster."
              }
            }
          },
          "average_flowpath_slope": {
            "name": "Gemiddelde stroompadhelling",
            "description": "Berekent de gemiddelde hellingsgradiënt van de stroompaden die door elke DEM-cel lopen.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Depressievrij invoer-DEM-raster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt een raster in het geheugen geretourneerd."
              }
            }
          },
          "average_upslope_flowpath_length": {
            "name": "Gemiddelde bovenstroomse stroompadlengte",
            "description": "Berekent de gemiddelde bovenstroomse stroompadlengte die door elke DEM-cel loopt.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Depressievrij invoer-DEM-raster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt een raster in het geheugen geretourneerd."
              }
            }
          },
          "d8_flow_accum": {
            "name": "D8-stroomaccumulatie",
            "description": "Berekent D8-stroomaccumulatie uit een DEM of een D8-stroomrichtingsraster.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-DEM of D8-pointerraster"
              },
              "clip": {
                "label": "Uitsnijden",
                "description": "Weergavemaximum bijknippen (geaccepteerd voor compatibiliteit)"
              },
              "esri_pntr": {
                "label": "ESRI-pointer",
                "description": "Gebruik ESRI-pointercodering voor pointerinvoer"
              },
              "input_is_pointer": {
                "label": "Invoer is pointer",
                "description": "Behandel de invoer als D8-pointerraster"
              },
              "log_transform": {
                "label": "Logtransformatie",
                "description": "Uitvoer logaritmisch transformeren"
              },
              "out_type": {
                "label": "Uitvoertype",
                "description": "Uitvoertype: cells, ca of sca"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad"
              }
            }
          },
          "d8_mass_flux": {
            "name": "D8-massaflux",
            "description": "Voert een op D8 gebaseerde massafluxaccumulatie uit met rasters voor belasting, efficiëntie en absorptie.",
            "params": {
              "absorption": {
                "label": "Absorptie",
                "description": "Raster met massaverliezen per cel in belastingseenheden."
              },
              "dem": {
                "label": "DEM",
                "description": "Depressievrij invoer-DEM-raster dat wordt gebruikt om D8-stroomrichtingen af te leiden."
              },
              "efficiency": {
                "label": "Efficiëntie",
                "description": "Raster met waarden voor overdrachtsefficiëntie, in `[0, 1]` of in procenten."
              },
              "loading": {
                "label": "Belasting",
                "description": "Raster met initiële massabelastingswaarden."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt een raster in het geheugen geretourneerd."
              }
            }
          },
          "d8_pointer": {
            "name": "D8-stroomrichting",
            "description": "Stroomrichting volgens de steilste afdaling over 8 buren (N/NO/O/ZO/Z/ZW/W/NW). Basis voor hydrologische D8-analyse en afbakening van stroomgebieden.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster"
              },
              "esri_pntr": {
                "label": "ESRI-pointer",
                "description": "Gebruik ESRI-pointercodering"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad"
              }
            }
          },
          "dinf_flow_accum": {
            "name": "D-inf-stroomaccumulatie",
            "description": "Berekent D-Infinity-stroomaccumulatie uit een DEM of een D-Infinity-stroomrichtingsraster.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-DEM of D-Infinity-pointerraster"
              },
              "clip": {
                "label": "Uitsnijden",
                "description": "Weergavemaximum bijknippen (geaccepteerd voor compatibiliteit)"
              },
              "convergence_threshold": {
                "label": "Convergentiedrempel",
                "description": "Drempelwaarde waarboven de stroom niet wordt verspreid"
              },
              "input_is_pointer": {
                "label": "Invoer is pointer",
                "description": "Behandel de invoer als D-Infinity-pointerraster"
              },
              "log_transform": {
                "label": "Logtransformatie",
                "description": "Uitvoer logaritmisch transformeren"
              },
              "out_type": {
                "label": "Uitvoertype",
                "description": "Uitvoertype: cells, ca of sca"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad"
              }
            }
          },
          "dinf_mass_flux": {
            "name": "D-inf-massaflux",
            "description": "Voert een op D-Infinity gebaseerde massafluxaccumulatie uit met rasters voor belasting, efficiëntie en absorptie.",
            "params": {
              "absorption": {
                "label": "Absorptie",
                "description": "Invoerraster met absorptie in belastingseenheden."
              },
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster."
              },
              "efficiency": {
                "label": "Efficiëntie",
                "description": "Invoerraster met efficiëntie (`0-1` of procentwaarden)."
              },
              "loading": {
                "label": "Belasting",
                "description": "Invoerraster met belasting."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt een raster in het geheugen geretourneerd."
              }
            }
          },
          "dinf_pointer": {
            "name": "D-inf-stroomrichting",
            "description": "Continue stroomrichtingen (0-2π radialen) die de diagonale bias van D8 elimineren. Beter voor sedimenttransport en modellering van divergente afstroming.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad"
              }
            }
          },
          "downslope_flowpath_length": {
            "name": "Benedenstroomse stroompadlengte",
            "description": "Berekent de benedenstroomse stroompadlengte van elke cel tot een uitstroompunt in een D8-stroomrichtingsraster.",
            "params": {
              "d8_pntr": {
                "label": "D8-pointer",
                "description": "D8-pointerinvoerraster"
              },
              "watersheds": {
                "label": "Stroomgebieden",
                "description": "Optioneel stroomgebiedsraster"
              },
              "weights": {
                "label": "Gewichten",
                "description": "Optioneel raster met afstandsweging per cel"
              },
              "esri_pntr": {
                "label": "ESRI-pointer",
                "description": "Gebruik ESRI-pointercodering"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad"
              }
            }
          },
          "fd8_flow_accum": {
            "name": "FD8-stroomaccumulatie",
            "description": "Berekent FD8-stroomaccumulatie uit een DEM.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster"
              },
              "clip": {
                "label": "Uitsnijden",
                "description": "Weergavemaximum bijknippen (geaccepteerd voor compatibiliteit)"
              },
              "exponent": {
                "label": "Exponent",
                "description": "Exponent voor hellingsweging"
              },
              "log_transform": {
                "label": "Logtransformatie",
                "description": "Uitvoer logaritmisch transformeren"
              },
              "out_type": {
                "label": "Uitvoertype",
                "description": "Uitvoertype: cells, ca of sca"
              },
              "threshold": {
                "label": "Drempelwaarde",
                "description": "Drempelwaarde"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad"
              }
            }
          },
          "fd8_pointer": {
            "name": "FD8-stroomrichting",
            "description": "Fractionele afstroming naar meerdere benedenstroomse buren, gewogen naar de gradiënt. Beter dan D8 voor dispersieve, diffuse processen en massabehoud.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad"
              }
            }
          },
          "flow_accum_full_workflow": {
            "name": "Volledige stroomaccumulatieworkflow",
            "description": "Voert een volledige workflow voor niet-divergente stroomaccumulatie uit en retourneert een doorbroken DEM, een stroomrichtingsraster en de accumulatie.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster."
              },
              "clip": {
                "label": "Uitsnijden",
                "description": "Indien true, wordt het weergavemaximum van de accumulatie bijgeknipt (compatibiliteitsgedrag)."
              },
              "esri_pntr": {
                "label": "ESRI-pointer",
                "description": "Indien true, wordt de stroomrichtingsuitvoer gecodeerd in de Esri-pointerstijl."
              },
              "log_transform": {
                "label": "Logtransformatie",
                "description": "Indien true, worden de accumulatiewaarden logaritmisch getransformeerd."
              },
              "out_type": {
                "label": "Uitvoertype",
                "description": "Een van `\"cells\"`, `\"ca\"`, `\"sca\"` (standaard)."
              },
              "breached_dem_output": {
                "label": "Uitvoer doorbroken DEM",
                "description": "Optioneel uitvoerpad voor het depressievrije DEM-raster."
              },
              "flow_dir_output": {
                "label": "Uitvoer stroomrichting",
                "description": "Optioneel uitvoerpad voor het stroomrichtingsraster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad voor het stroomaccumulatieraster."
              },
              "output_pointer": {
                "label": "Pointer uitvoeren",
                "description": "Optioneel uitvoerpad voor de D8-stroomrichtingspointer (alias van flow_dir_output; ESRI-gecodeerd wanneer esri_pntr is ingesteld)"
              }
            }
          },
          "flow_length_diff": {
            "name": "Stroomlengteverschil",
            "description": "Berekent lokale maximale absolute verschillen in benedenstroomse padlengte uit een D8-stroomrichtingsraster.",
            "params": {
              "d8_pntr": {
                "label": "D8-pointer",
                "description": "D8-pointerinvoerraster."
              },
              "weights": {
                "label": "Gewichten",
                "description": "Gewichten"
              },
              "esri_pntr": {
                "label": "ESRI-pointer",
                "description": "Indien true, worden de pointerwaarden geïnterpreteerd volgens de ESRI D8-codering."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt een raster in het geheugen geretourneerd."
              }
            }
          },
          "max_upslope_flowpath_length": {
            "name": "Maximale bovenstroomse stroompadlengte",
            "description": "Berekent de maximale bovenstroomse stroompadlengte die door elke DEM-cel loopt.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Depressievrij invoer-DEM-raster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt een raster in het geheugen geretourneerd."
              }
            }
          },
          "max_upslope_value": {
            "name": "Maximale bovenstroomse waarde",
            "description": "Draagt de maximale bovenstroomse waarde langs D8-stroompaden over een DEM over.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster"
              },
              "values": {
                "label": "Waarden",
                "description": "Invoerraster met waarden"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad"
              }
            }
          },
          "mdinf_flow_accum": {
            "name": "MD-inf-stroomaccumulatie",
            "description": "Accumulatie met meervoudige stroming met weging naar de hellingsgradiënt (exponent 1.1). Brengt realisme van verspreiding in evenwicht met de identificatie van geconcentreerde hoofdstroming. Uitvoer: cellen, CA of SCA.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster."
              },
              "clip": {
                "label": "Uitsnijden",
                "description": "Compatibiliteitsvlag die door de API wordt geaccepteerd."
              },
              "convergence_threshold": {
                "label": "Convergentiedrempel",
                "description": "Drempelwaarde waarboven de stroom niet wordt verspreid"
              },
              "exponent": {
                "label": "Exponent",
                "description": "Exponent voor hellingsweging (standaard `1.1`)."
              },
              "log_transform": {
                "label": "Logtransformatie",
                "description": "Uitvoer logaritmisch transformeren"
              },
              "out_type": {
                "label": "Uitvoertype",
                "description": "Een van `\"cells\"`, `\"ca\"`, `\"sca\"` (standaard)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt een raster in het geheugen geretourneerd."
              }
            }
          },
          "minimal_dispersion_flow_algorithm": {
            "name": "Minimale-dispersie-stroomalgoritme",
            "description": "Genereert MDFA-rasters voor stroomrichting en stroomaccumulatie uit een DEM.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster"
              },
              "clip": {
                "label": "Uitsnijden",
                "description": "Compatibiliteitsvlag die door de API wordt geaccepteerd."
              },
              "debug_stats": {
                "label": "Debugstatistieken",
                "description": "Geef MDFA-diagnostiek van één regel weer (aantallen en ruwe maximumwaarde)"
              },
              "esri_pntr": {
                "label": "ESRI-pointer",
                "description": "Indien true, wordt de stroomrichtingsuitvoer gecodeerd in de Esri-pointerstijl."
              },
              "log_transform": {
                "label": "Logtransformatie",
                "description": "Indien true, worden de accumulatiewaarden logaritmisch getransformeerd."
              },
              "out_type": {
                "label": "Uitvoertype",
                "description": "Een van `\"cells\"`, `\"ca\"`, `\"sca\"` (standaard)."
              },
              "path_corrected_direction_preference": {
                "label": "Richtingsvoorkeur padcorrectie",
                "description": "Voorkeursparameter `p` in `[0, 1]`; `1.0` is volledig niet-dispersief."
              },
              "flow_dir_output": {
                "label": "Uitvoer stroomrichting",
                "description": "Optioneel uitvoerpad voor het stroomrichtingsraster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad voor het stroomaccumulatieraster."
              }
            }
          },
          "num_inflowing_neighbours": {
            "name": "Aantal instromende buurcellen",
            "description": "Telt voor elke DEM-cel het aantal instromende D8-buren.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad"
              }
            }
          },
          "qin_flow_accumulation": {
            "name": "Qin-stroomaccumulatie",
            "description": "Berekent Qin-MFD-stroomaccumulatie uit een DEM.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster."
              },
              "clip": {
                "label": "Uitsnijden",
                "description": "Compatibiliteitsvlag die door de API wordt geaccepteerd."
              },
              "convergence_threshold": {
                "label": "Convergentiedrempel",
                "description": "Drempelwaarde waarboven de stroom niet wordt verspreid"
              },
              "exponent": {
                "label": "Exponent",
                "description": "Bovengrensparameter voor de exponent (standaard `10.0`)."
              },
              "log_transform": {
                "label": "Logtransformatie",
                "description": "Uitvoer logaritmisch transformeren"
              },
              "max_slope": {
                "label": "Maximale helling",
                "description": "Bovengrens van de helling in graden die door de dynamische exponentfunctie wordt gebruikt (standaard `45.0`)."
              },
              "out_type": {
                "label": "Uitvoertype",
                "description": "Een van `\"cells\"`, `\"ca\"`, `\"sca\"` (standaard)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt een raster in het geheugen geretourneerd."
              }
            }
          },
          "quinn_flow_accumulation": {
            "name": "Quinn-stroomaccumulatie",
            "description": "Berekent Quinn-MFD-stroomaccumulatie uit een DEM.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster."
              },
              "clip": {
                "label": "Uitsnijden",
                "description": "Compatibiliteitsvlag die door de API wordt geaccepteerd."
              },
              "convergence_threshold": {
                "label": "Convergentiedrempel",
                "description": "Drempelwaarde waarboven de stroom niet wordt verspreid"
              },
              "exponent": {
                "label": "Exponent",
                "description": "Exponentparameter (standaard `1.1`)."
              },
              "log_transform": {
                "label": "Logtransformatie",
                "description": "Uitvoer logaritmisch transformeren"
              },
              "out_type": {
                "label": "Uitvoertype",
                "description": "Een van `\"cells\"`, `\"ca\"`, `\"sca\"` (standaard)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt een raster in het geheugen geretourneerd."
              }
            }
          },
          "rho8_flow_accum": {
            "name": "Rho8-stroomaccumulatie",
            "description": "Berekent Rho8-stroomaccumulatie uit een DEM of een Rho8-stroomrichtingsraster.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "DEM"
              },
              "clip": {
                "label": "Uitsnijden",
                "description": "Weergavemaximum bijknippen (geaccepteerd voor compatibiliteit)"
              },
              "log_transform": {
                "label": "Logtransformatie",
                "description": "Uitvoer logaritmisch transformeren"
              },
              "out_type": {
                "label": "Uitvoertype",
                "description": "Uitvoertype: cells, ca of sca"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad"
              }
            }
          },
          "rho8_pointer": {
            "name": "Rho8-stroomrichting",
            "description": "Stochastische enkelvoudige stroomrichting, gewogen naar de hellingsgradiënt. Voer meerdere keren uit voor ensembleanalyse die de kanalisatieartefacten van D8 vermindert.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad"
              }
            }
          },
          "trace_downslope_flowpaths": {
            "name": "Benedenstroomse stroompaden traceren",
            "description": "Markeert D8-stroompaden die beginnen bij startpunten, tot er geen afstroming meer is of de rand van het grid is bereikt.",
            "params": {
              "d8_pntr": {
                "label": "D8-pointer",
                "description": "D8-pointerinvoerraster."
              },
              "seed_points": {
                "label": "Zaadpunten",
                "description": "Invoerpuntvector met zaadlocaties."
              },
              "esri_pntr": {
                "label": "ESRI-pointer",
                "description": "Indien true, worden D8-pointers geïnterpreteerd met de ESRI-codering."
              },
              "zero_background": {
                "label": "Achtergrond nul",
                "description": "Indien true, is de achtergrond `0`; anders is de achtergrond NoData."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt een raster in het geheugen geretourneerd."
              }
            }
          },
          "breach_depressions_least_cost": {
            "name": "Depressies doorbreken (minimale kosten)",
            "description": "Doorbreekt depressies in een DEM met een beperkte zoektocht naar het pad met de laagste kosten.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster."
              },
              "fill_deps": {
                "label": "Depressies vullen",
                "description": "Indien true, worden onopgeloste depressies na het doorbreken opgevuld."
              },
              "flat_increment": {
                "label": "Vlakte-increment",
                "description": "Optionele monotone verlagingsstap."
              },
              "max_cost": {
                "label": "Maximale kosten",
                "description": "Maximaal toegestane doorbraakkosten."
              },
              "max_dist": {
                "label": "Maximale afstand",
                "description": "Maximale zoekafstand in cellen."
              },
              "minimize_dist": {
                "label": "Afstand minimaliseren",
                "description": "Indien true, worden de doorbraakkosten naar afstand gewogen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad."
              }
            }
          },
          "breach_single_cell_pits": {
            "name": "Enkelcelputten doorbreken",
            "description": "Doorbreekt enkelcelputten in een DEM door kanalen van één cel uit te snijden.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen geretourneerd wanneer dat wordt ondersteund."
              }
            }
          },
          "burn_streams": {
            "name": "Waterlopen inbranden",
            "description": "Brandt een waterloopnetwerk in een DEM in door de hoogten van waterloopcellen te verlagen.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster."
              },
              "streams": {
                "label": "Waterlopen",
                "description": "Invoervector met waterlopen."
              },
              "decrement_value": {
                "label": "Verlagingswaarde",
                "description": "Hoogteverlaging die op waterloopcellen wordt toegepast (standaard 5.0)."
              },
              "gradient_distance": {
                "label": "Gradiëntafstand",
                "description": "Gradiëntafstand in rastercellen (0 = alleen vlakke verlaging; standaard 5)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het ingebrande DEM."
              }
            }
          },
          "burn_streams_at_roads": {
            "name": "Waterlopen inbranden bij wegen",
            "description": "Verlaagt waterloophoogten nabij kruisingen van waterlopen en wegen om wegtaluds in een DEM te doorbreken.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster."
              },
              "roads": {
                "label": "Wegen",
                "description": "Vectorlaag met wegen."
              },
              "streams": {
                "label": "Waterlopen",
                "description": "Vectorlaag met waterlopen."
              },
              "method": {
                "label": "Methode",
                "description": "Methode"
              },
              "road_width": {
                "label": "Wegbreedte",
                "description": "Maximale taludbreedte in kaarteenheden die het inbrandbereik langs de waterloop bepaalt."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt een raster in het geheugen geretourneerd."
              }
            }
          },
          "depth_in_sink": {
            "name": "Diepte in sink",
            "description": "Meet de diepte waarop elke DEM-cel onder een oppervlak met gevulde depressies ligt.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster."
              },
              "zero_background": {
                "label": "Achtergrond nul",
                "description": "Indien true, wordt `0.0` toegekend aan cellen buiten de depressies; anders wordt NoData toegekend."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "fill_burn": {
            "name": "Vullen en inbranden",
            "description": "Dwingt hydrologische correctheid af in een DEM door waterlopen in te branden en vervolgens depressies te vullen.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster."
              },
              "streams": {
                "label": "Waterlopen",
                "description": "Invoervectorlaag met waterlopen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt een raster in het geheugen geretourneerd."
              }
            }
          },
          "fill_depressions": {
            "name": "Depressies vullen",
            "description": "Vult depressies in een DEM met een priority-flood-strategie, standaard met de vlakresolutie van Garbrecht-Martz en optioneel met de oudere vlakresolutie via natuurlijke paden.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster."
              },
              "fix_flats": {
                "label": "Vlaktes corrigeren",
                "description": "Indien true, wordt een kleine gradiënt aangebracht over opgevulde vlakke gebieden."
              },
              "flat_increment": {
                "label": "Vlakte-increment",
                "description": "Verhoging voor vlakke gebieden (standaard `0.0001`)."
              },
              "flat_resolution": {
                "label": "Vlakteresolutie",
                "description": "Modus voor het oplossen van vlakke gebieden. Een van `\"garbrecht_martz\"` of `\"natural\"`."
              },
              "max_depth": {
                "label": "Maximale diepte",
                "description": "Maximaal toegestane opvuldiepte."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad."
              }
            }
          },
          "fill_depressions_planchon_and_darboux": {
            "name": "Depressies vullen (Planchon en Darboux)",
            "description": "Vult depressies in een DEM met een interface die compatibel is met Planchon en Darboux.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster."
              },
              "fix_flats": {
                "label": "Vlaktes corrigeren",
                "description": "Indien true, wordt een kleine gradiënt aangebracht over opgevulde vlakke gebieden."
              },
              "flat_increment": {
                "label": "Vlakte-increment",
                "description": "Verhoging voor vlakke gebieden (standaard `0.0001`)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad."
              }
            }
          },
          "fill_depressions_wang_and_liu": {
            "name": "Depressies vullen (Wang en Liu)",
            "description": "Vult depressies in een DEM met een interface die compatibel is met Wang en Liu.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster."
              },
              "fix_flats": {
                "label": "Vlaktes corrigeren",
                "description": "Indien true, wordt een kleine gradiënt aangebracht over opgevulde vlakke gebieden."
              },
              "flat_increment": {
                "label": "Vlakte-increment",
                "description": "Verhoging voor vlakke gebieden (standaard `0.0001`)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad."
              }
            }
          },
          "fill_pits": {
            "name": "Putten vullen",
            "description": "Vult enkelcelputten in een DEM.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen geretourneerd wanneer dat wordt ondersteund."
              }
            }
          },
          "flatten_lakes": {
            "name": "Meren afvlakken",
            "description": "Vlakt meerhoogten af met behulp van de minimale hoogte langs de omtrek van elke polygoon.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster."
              },
              "lakes": {
                "label": "Meren",
                "description": "Invoerpolygoonvector met meerobjecten."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt een raster in het geheugen geretourneerd."
              }
            }
          },
          "impoundment_size_index": {
            "name": "Stuwmeergrootte-index",
            "description": "Berekent maten voor stuwmeren: gemiddelde/maximale diepte, volume, oppervlakte en damhoogte.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster."
              },
              "max_dam_length": {
                "label": "Maximale damlengte",
                "description": "Maximale damlengte in kaarteenheden."
              },
              "output_area": {
                "label": "Oppervlakte uitvoeren",
                "description": "Neem het raster met overstroomd gebied op in de uitvoertupel."
              },
              "output_height": {
                "label": "Hoogte uitvoeren",
                "description": "Neem het raster met damhoogte op in de uitvoertupel."
              },
              "output_max": {
                "label": "Maximum uitvoeren",
                "description": "Neem het raster met maximale overstromingsdiepte op in de uitvoertupel."
              },
              "output_mean": {
                "label": "Gemiddelde uitvoeren",
                "description": "Neem het raster met gemiddelde overstromingsdiepte op in de uitvoertupel."
              },
              "output_volume": {
                "label": "Volume uitvoeren",
                "description": "Neem het raster met overstromingsvolume op in de uitvoertupel."
              },
              "out_area": {
                "label": "Uitvoer oppervlakte",
                "description": "Optioneel uitvoerpad voor het oppervlakteraster"
              },
              "out_dam_height": {
                "label": "Uitvoer damhoogte",
                "description": "Optioneel uitvoerpad voor het damhoogteraster"
              },
              "out_max": {
                "label": "Uitvoer maximum",
                "description": "Optioneel uitvoerpad voor het raster met maximale diepte"
              },
              "out_mean": {
                "label": "Uitvoer gemiddelde",
                "description": "Optioneel uitvoerpad voor het raster met gemiddelde diepte"
              },
              "out_volume": {
                "label": "Uitvoer volume",
                "description": "Optioneel uitvoerpad voor het volumeraster"
              }
            }
          },
          "insert_dams": {
            "name": "Dammen invoegen",
            "description": "Voegt lokale dambermen toe op opgegeven punten met een op profielen gebaseerde selectie van de kruin.",
            "params": {
              "dam_points": {
                "label": "Dampunten",
                "description": "Invoerpuntvector met damlocaties."
              },
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster."
              },
              "dam_length": {
                "label": "Damlengte",
                "description": "Maximale damlengte in kaarteenheden."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt een raster in het geheugen geretourneerd."
              }
            }
          },
          "raise_walls": {
            "name": "Wanden verhogen",
            "description": "Verhoogt DEM-hoogten langs muurvectoren en doorbreekt optioneel geselecteerde kruisingen.",
            "params": {
              "breach_lines": {
                "label": "Doorbraaklijnen",
                "description": "Optionele vector die de doorbraaklocaties definieert."
              },
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster."
              },
              "walls": {
                "label": "Wanden",
                "description": "Invoerlijn- of -polygoonvector die de wandsegmenten definieert."
              },
              "wall_height": {
                "label": "Wandhoogte",
                "description": "Hoogteverhoging die op wandcellen wordt toegepast."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt een raster in het geheugen geretourneerd."
              }
            }
          },
          "sink": {
            "name": "Sink",
            "description": "Identificeert cellen die tot topografische depressies in een DEM behoren.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster."
              },
              "zero_background": {
                "label": "Achtergrond nul",
                "description": "Indien true, wordt `0.0` toegekend aan cellen buiten de depressies; anders wordt NoData toegekend."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "stochastic_depression_analysis": {
            "name": "Stochastische depressieanalyse",
            "description": "Voert Monte Carlo-verstoringen van een DEM uit en schat de waarschijnlijkheid van lidmaatschap van een depressie.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster."
              },
              "iterations": {
                "label": "Iteraties",
                "description": "Aantal Monte Carlo-iteraties."
              },
              "range": {
                "label": "Bereik",
                "description": "Autocorrelatiebereik van de fout in kaarteenheden."
              },
              "rmse": {
                "label": "RMSE",
                "description": "Hoogte-RMSE die wordt gebruikt voor de Gaussische verstoring."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt een raster in het geheugen geretourneerd."
              }
            }
          },
          "topological_breach_burn": {
            "name": "Bovenstroomse depressieberging",
            "description": "Brandt waterlopen in een DEM in, conditioneert het oppervlak en retourneert rasters voor waterlopen, DEM, stroomrichting en accumulatie.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster."
              },
              "streams": {
                "label": "Waterlopen",
                "description": "Invoervector met het waterloopnetwerk."
              },
              "snap_distance": {
                "label": "Snapafstand",
                "description": "Optionele vangafstand voor waterlopen die wordt gebruikt bij het schalen van de inbranddiepte."
              },
              "out_dem": {
                "label": "Uitvoer-DEM",
                "description": "Optioneel uitvoerpad voor het ingebrande/geconditioneerde DEM."
              },
              "out_dir": {
                "label": "Uitvoer stroomrichting",
                "description": "Optioneel uitvoerpad voor het D8-pointerraster."
              },
              "out_fa": {
                "label": "Uitvoer stroomaccumulatie",
                "description": "Optioneel uitvoerpad voor het stroomaccumulatieraster."
              },
              "out_streams": {
                "label": "Uitvoer waterlopen",
                "description": "Optioneel uitvoerpad voor de gerasteriseerde waterlopen."
              }
            }
          },
          "upslope_depression_storage": {
            "name": "Bekkens",
            "description": "Brengt de gemiddelde bovenstroomse bergingsdiepte van depressies in kaart door de depressiediepte over een geconditioneerde DEM te routeren.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt een raster in het geheugen geretourneerd."
              }
            }
          },
          "basins": {
            "name": "Overstromingsvolgorde",
            "description": "Bakent alle D8-afwateringsbekkens af die afwateren naar randen met geldige gegevens.",
            "params": {
              "d8_pntr": {
                "label": "D8-pointer",
                "description": "D8-pointerinvoerraster."
              },
              "esri_pntr": {
                "label": "ESRI-pointer",
                "description": "Indien true, worden de pointerwaarden geïnterpreteerd volgens de ESRI D8-codering."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt een raster in het geheugen geretourneerd."
              }
            }
          },
          "flood_order": {
            "name": "Hellingen (hillslopes)",
            "description": "Geeft voor elke DEM-cel de opeenvolgende priority-flood-volgorde als uitvoer.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt een raster in het geheugen geretourneerd."
              }
            }
          },
          "hillslopes": {
            "name": "Isobekkens",
            "description": "Identificeert de hellinggebieden die afwateren naar elke waterloopschakel en scheidt de gebieden van de linker- en rechteroever.",
            "params": {
              "d8_pntr": {
                "label": "D8-pointer",
                "description": "D8-pointerraster."
              },
              "streams": {
                "label": "Waterlopen",
                "description": "Raster met het waterloopnetwerk waarin waterloopcellen een waarde > 0 hebben en geen NoData zijn."
              },
              "esri_pntr": {
                "label": "ESRI-pointer",
                "description": "Vlag voor ESRI-pointercodering."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "isobasins": {
            "name": "Uitstroompunten snappen (Jenson)",
            "description": "Verdeelt een landschap in stroomgebieden van ongeveer gelijke grootte (isobekkens) op basis van een drempel voor de beoogde oppervlakte.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Hydrologisch geconditioneerd invoer-DEM-raster."
              },
              "target_size": {
                "label": "Doelgrootte",
                "description": "Doeloppervlakte van het isobekken in aantal rastercellen (positief geheel getal of decimaal getal)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad. Indien weggelaten, wordt een raster in het geheugen geretourneerd."
              }
            }
          },
          "jenson_snap_pour_points": {
            "name": "Langste stroompad",
            "description": "Snapt elk uitstroompunt naar de dichtstbijzijnde waterloopcel binnen een zoekafstand, met behoud van alle invoerattributen.",
            "params": {
              "pour_pts": {
                "label": "Uitstroompunten",
                "description": "Invoervectorbestand met uitstroompunten (punt- of multipuntgeometrieën)."
              },
              "streams": {
                "label": "Waterlopen",
                "description": "Invoerraster met het waterloopnetwerk waarin waterloopcellen een waarde > 0 hebben en geen NoData zijn."
              },
              "snap_dist": {
                "label": "Snapafstand",
                "description": "Maximale zoekradius in kaarteenheden. Standaard één celbreedte wanneer deze wordt weggelaten of nul is."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad voor het vectorbestand met vastgeklikte uitstroompunten (verplicht; standaard `snapped_pour_points.geojson` in de werkmap wanneer dit niet aan de wrapper wordt meegegeven)."
              }
            }
          },
          "longest_flowpath": {
            "name": "Maximale taklengte",
            "description": "Bakent voor elk bekken in een bekkenraster de lijnen van het langste stroompad af.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster"
              },
              "basins": {
                "label": "Overstromingsvolgorde",
                "description": "Invoerraster met stroomgebieden"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorpad"
              }
            }
          },
          "max_branch_length": {
            "name": "Uitstroompunten snappen",
            "description": "Berekent de maximale taklengte tussen aangrenzende D8-stroompaden, nuttig voor het benadrukken van waterscheidingen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "log_transform": {
                "label": "Logtransformatie",
                "description": "Pas een natuurlijke logaritmische transformatie toe op positieve uitvoerwaarden."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad."
              }
            }
          },
          "snap_pour_points": {
            "name": "Deelstroomgebieden",
            "description": "Snapt uitstroompunten naar de cel met de hoogste stroomaccumulatie binnen een zoekafstand.",
            "params": {
              "flow_accum": {
                "label": "Stroomaccumulatie",
                "description": "Invoerraster met stroomaccumulatie."
              },
              "pour_pts": {
                "label": "Uitstroompunten",
                "description": "Invoervectorbestand met uitstroompunten (punt- of multipuntgeometrieën)."
              },
              "snap_dist": {
                "label": "Snapafstand",
                "description": "Maximale zoekradius in kaarteenheden. Standaard één celbreedte wanneer deze wordt weggelaten of nul is."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad voor het vectorbestand met vastgeklikte uitstroompunten (verplicht; standaard `snapped_pour_points.geojson` in de werkmap wanneer dit niet aan de wrapper wordt meegegeven)."
              }
            }
          },
          "subbasins": {
            "name": "Bekkens ontnesten",
            "description": "Identificeert het stroomgebied van elke waterloopschakel (deelstroomgebieden) in een D8-waterloopnetwerk.",
            "params": {
              "d8_pntr": {
                "label": "D8-pointer",
                "description": "D8-pointerraster geproduceerd door `d8_pointer`."
              },
              "streams": {
                "label": "Waterlopen",
                "description": "Raster met het waterloopnetwerk waarin waterloopcellen een waarde > 0 hebben en geen NoData zijn."
              },
              "esri_pntr": {
                "label": "ESRI-pointer",
                "description": "Indien true, worden de pointerwaarden geïnterpreteerd volgens de ESRI-codering. Standaard `False`."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad. Indien weggelaten, wordt een raster in het geheugen geretourneerd."
              }
            }
          },
          "unnest_basins": {
            "name": "Stroomgebied",
            "description": "Maakt uit een D8-stroomrichtingsgrid één bekkenraster per nestingsniveau van de uitstroompunten.",
            "params": {
              "d8_pntr": {
                "label": "D8-pointer",
                "description": "D8-pointerinvoerraster"
              },
              "pour_points": {
                "label": "Uitstroompunten",
                "description": "Invoervector met uitstroompunten"
              },
              "esri_pntr": {
                "label": "ESRI-pointer",
                "description": "Interpreteer de pointers volgens de ESRI-stijl"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel basisuitvoerpad voor genummerde rasters"
              }
            }
          },
          "watershed": {
            "name": "Stroomgebied uit rasteruitstroompunten",
            "description": "Bakent stroomgebieden af op basis van een D8-stroomrichtingsraster en vectoruitstroompunten.",
            "params": {
              "d8_pntr": {
                "label": "D8-pointer",
                "description": "D8-pointerinvoerraster."
              },
              "pour_pts": {
                "label": "Uitstroompunten",
                "description": "Invoervectorbestand met uitstroompunten (punt- of multipuntgeometrieën)."
              },
              "esri_pntr": {
                "label": "ESRI-pointer",
                "description": "Indien true, worden de pointerwaarden geïnterpreteerd volgens de ESRI D8-codering."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt een raster in het geheugen geretourneerd."
              }
            }
          },
          "watershed_from_raster_pour_points": {
            "name": "Diepte tot water",
            "description": "Bakent stroomgebieden af op basis van een D8-stroomrichtingsraster en een raster met ID's van uitstroompunten.",
            "params": {
              "d8_pntr": {
                "label": "D8-pointer",
                "description": "D8-pointerinvoerraster."
              },
              "pour_points": {
                "label": "Uitstroompunten",
                "description": "Raster met uitstroompunten; celwaarden die niet nul en geen NoData zijn, worden uitstroom-ID's."
              },
              "esri_pntr": {
                "label": "ESRI-pointer",
                "description": "Indien true, worden de pointerwaarden geïnterpreteerd volgens de ESRI D8-codering."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt een raster in het geheugen geretourneerd."
              }
            }
          },
          "depth_to_water": {
            "name": "Afstand tot uitlaat",
            "description": "Berekent de cartografische diepte tot het water met accumulatie van de laagste kosten vanaf bronobjecten van waterlopen/meren.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster."
              },
              "stream_raster": {
                "label": "Waterlopenraster",
                "description": "Waterlopenraster"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt een raster in het geheugen geretourneerd."
              }
            }
          },
          "distance_to_outlet": {
            "name": "Benedenstroomse afstand tot waterloop",
            "description": "Berekent voor elke waterloopcel de benedenstroomse afstand tot het uitstroompunt.",
            "params": {
              "d8_pntr": {
                "label": "D8-pointer",
                "description": "D8-stroompointerraster"
              },
              "streams": {
                "label": "Waterlopen",
                "description": "Waterlopen"
              },
              "esri_pntr": {
                "label": "ESRI-pointer",
                "description": "ESRI-pointer"
              },
              "zero_background": {
                "label": "Achtergrond nul",
                "description": "Achtergrond nul"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad"
              }
            }
          },
          "downslope_distance_to_stream": {
            "name": "Benedenstroomse index",
            "description": "Berekent de benedenstroomse afstand van elke DEM-cel tot de dichtstbijzijnde waterloop langs stroompaden.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Depressievrij invoer-DEM-raster."
              },
              "streams": {
                "label": "Waterlopen",
                "description": "Invoerraster met waterlopen; waterloopcellen hebben waarden `> 0` en zijn geen NoData."
              },
              "dinf": {
                "label": "D-infinity",
                "description": "Indien true, wordt D-infinity-routering gebruikt; anders wordt D8-routering gebruikt."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt een raster in het geheugen geretourneerd."
              }
            }
          },
          "downslope_index": {
            "name": "Randcontaminatie",
            "description": "Berekent de benedenstroomse index van Hjerdt et al. (2004) met D8-stroomrichtingen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "output_type": {
                "label": "Uitvoertype",
                "description": "Uitvoermaat: tangent, degrees, radians, distance (standaard tangent)."
              },
              "vertical_drop": {
                "label": "Verticaal hoogteverschil",
                "description": "Verticale drempelwaarde d voor het afdalen langs de helling."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad."
              }
            }
          },
          "edge_contamination": {
            "name": "Hoogte relatief tot min/max van stroomgebied",
            "description": "Identificeert DEM-cellen waarvan het bovenstroomse gebied zich voor gangbare afstromingsrouteringsschema's voorbij de rand van de DEM uitstrekt.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Depressievrij invoer-DEM-raster."
              },
              "flow_type": {
                "label": "Stroomtype",
                "description": "Te gebruiken routeringsmethode: een van `\"d8\"`, `\"mfd\"`/`\"fd8\"` of `\"dinf\"`."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Optionele verticale schaalfactor. Waarden `<= 0` worden behandeld als `1.0`."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt een raster in het geheugen geretourneerd."
              }
            }
          },
          "elev_relative_to_watershed_min_max": {
            "name": "Hoogte boven waterloop",
            "description": "Berekent de relatieve hoogtepositie van een DEM-cel binnen elk stroomgebied als percentage.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "watersheds": {
                "label": "Stroomgebieden",
                "description": "Pad naar het raster met stroomgebied-ID's of een getypeerd rasterobject."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft het resultaat in het geheugen."
              }
            }
          },
          "elevation_above_stream": {
            "name": "Hoogte boven waterloop (euclidisch)",
            "description": "Berekent de hoogte boven de dichtstbijzijnde waterloop, gemeten langs benedenstroomse stroompaden.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Depressievrij invoer-DEM-raster."
              },
              "streams": {
                "label": "Waterlopen",
                "description": "Invoerraster met waterlopen; waterloopcellen hebben waarden `> 0` en zijn geen NoData."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt een raster in het geheugen geretourneerd."
              }
            }
          },
          "elevation_above_stream_euclidean": {
            "name": "Cellen zonder afstroming vinden",
            "description": "Berekent de hoogte boven de dichtstbijzijnde waterloop op basis van rechtlijnige (euclidische) nabijheid.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster."
              },
              "streams": {
                "label": "Waterlopen",
                "description": "Invoerraster met waterlopen; waterloopcellen hebben waarden `> 0` en zijn geen NoData."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt een raster in het geheugen geretourneerd."
              }
            }
          },
          "find_noflow_cells": {
            "name": "Parallelle afstroming vinden",
            "description": "Vindt DEM-cellen die geen lagere D8-buur hebben.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster."
              },
              "interior_only": {
                "label": "Alleen binnengebied",
                "description": "Indien true, worden alleen echte inwendige cellen zonder afstroming gemarkeerd (met uitzondering van uitstroompunten aan de rasterrand en naast NoData)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt een raster in het geheugen geretourneerd."
              }
            }
          },
          "find_parallel_flow": {
            "name": "Hydrologische connectiviteit",
            "description": "Identificeert waterloopcellen met parallelle D8-stroomrichtingen.",
            "params": {
              "d8_pntr": {
                "label": "D8-pointer",
                "description": "D8-pointerinvoerraster."
              },
              "esri_pntr": {
                "label": "ESRI-pointer",
                "description": "ESRI-pointer"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt een raster in het geheugen geretourneerd."
              }
            }
          },
          "hydrologic_connectivity": {
            "name": "Relatieve stroomkrachtindex",
            "description": "Berekent de connectiviteitsindices DUL en UDSA uit een DEM.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster."
              },
              "convergence_threshold": {
                "label": "Convergentiedrempel",
                "description": "Optionele drempelwaarde voor waterloopinitiatie in bijdragende cellen."
              },
              "exponent": {
                "label": "Exponent",
                "description": "Compatibiliteitsparameter voor dispersieregeling."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Optionele verticale schaalfactor."
              },
              "output1": {
                "label": "Uitvoer1",
                "description": "Optioneel uitvoerpad voor het DUL-raster."
              },
              "output2": {
                "label": "Uitvoer2",
                "description": "Optioneel uitvoerpad voor het UDSA-raster."
              }
            }
          },
          "relative_stream_power_index": {
            "name": "Sedimenttransportindex",
            "description": "Berekent de relatieve stroomkrachtindex uit het specifieke stroomgebiedsoppervlak en de helling.",
            "params": {
              "sca": {
                "label": "SCA",
                "description": "Pad naar het raster met specifiek stroomgebiedsoppervlak of een getypeerd rasterobject."
              },
              "slope": {
                "label": "Helling",
                "description": "Hellingsraster in graden."
              },
              "exponent": {
                "label": "Exponent",
                "description": "Exponent p voor het specifieke stroomgebiedsoppervlak (standaard 1.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft het resultaat in het geheugen."
              }
            }
          },
          "sediment_transport_index": {
            "name": "Vochtigheidsindex",
            "description": "Berekent de sedimenttransportindex (LS-factor) uit het specifieke stroomgebiedsoppervlak en de helling.",
            "params": {
              "sca": {
                "label": "SCA",
                "description": "Pad naar het raster met specifiek stroomgebiedsoppervlak of een getypeerd rasterobject."
              },
              "slope": {
                "label": "Helling",
                "description": "Hellingsraster in graden."
              },
              "sca_exponent": {
                "label": "SCA-exponent",
                "description": "Exponent n voor het specifieke stroomgebiedsoppervlak (standaard 0.4)."
              },
              "slope_exponent": {
                "label": "Hellingsexponent",
                "description": "Hellingsexponent m (standaard 1.3)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft het resultaat in het geheugen."
              }
            }
          },
          "wetness_index": {
            "name": "Waterlopen extraheren",
            "description": "Berekent de topografische vochtigheidsindex ln(SCA / tan(slope)).",
            "params": {
              "sca": {
                "label": "SCA",
                "description": "Pad naar het raster met specifiek stroomgebiedsoppervlak of een getypeerd rasterobject."
              },
              "slope": {
                "label": "Helling",
                "description": "Hellingsraster in graden."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen bewaard."
              }
            }
          },
          "extract_streams": {
            "name": "Valleien extraheren",
            "description": "Extraheert waterlopen op basis van een drempel voor de stroomaccumulatie.",
            "params": {
              "flow_accumulation": {
                "label": "Stroomaccumulatie",
                "description": "Invoerraster met stroomaccumulatie."
              },
              "threshold": {
                "label": "Drempelwaarde",
                "description": "Minimale accumulatiewaarde die vereist is om deel uit te maken van een waterloop."
              },
              "zero_background": {
                "label": "Achtergrond nul",
                "description": "Indien true, is de achtergrond zonder waterloop 0 in plaats van NoData."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad voor het waterloopraster."
              }
            }
          },
          "extract_valleys": {
            "name": "Vectorwaterlopen snoeien",
            "description": "Extraheert dalen uit een DEM.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "DEM"
              },
              "filter_size": {
                "label": "Filtergrootte",
                "description": "Filtergrootte"
              },
              "line_thin": {
                "label": "Lijnen uitdunnen",
                "description": "Lijnen uitdunnen"
              },
              "variant": {
                "label": "Variant",
                "description": "Variant"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad"
              }
            }
          },
          "prune_vector_streams": {
            "name": "Rasterwaterlopen naar vector",
            "description": "Snoeit een vectorwaterloopnetwerk op basis van de Shreve-magnitude.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster dat wordt gebruikt om de stroomrichting te bepalen"
              },
              "streams": {
                "label": "Waterlopen",
                "description": "Invoervector met het waterloopnetwerk"
              },
              "max_ridge_cutting_height": {
                "label": "Maximale doorsnijhoogte ruggen",
                "description": "Maximaal toegestane hoogtestijging bij het verbinden van stroomafwaartse segmenten"
              },
              "snap_distance": {
                "label": "Snapafstand",
                "description": "Maximale vangafstand voor de connectiviteit van eindpunten"
              },
              "threshold": {
                "label": "Drempelwaarde",
                "description": "Minimale Shreve-magnitude om te behouden"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorpad"
              }
            }
          },
          "raster_streams_to_vector": {
            "name": "Waterlopen rasteriseren",
            "description": "Zet een rasterwaterloopnetwerk om in vector.",
            "params": {
              "d8_pntr": {
                "label": "D8-pointer",
                "description": "D8-stroompointerraster"
              },
              "streams_raster": {
                "label": "Waterlopenraster",
                "description": "Waterloopraster"
              },
              "all_vertices": {
                "label": "Alle hoekpunten",
                "description": "Alle hoekpunten"
              },
              "esri_pntr": {
                "label": "ESRI-pointer",
                "description": "ESRI-pointer"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad"
              }
            }
          },
          "rasterize_streams": {
            "name": "Korte waterlopen verwijderen",
            "description": "Rastert een vectorwaterloopnetwerk.",
            "params": {
              "input_vector": {
                "label": "Invoervector",
                "description": "Invoervector"
              },
              "reference_raster": {
                "label": "Referentieraster",
                "description": "Referentieraster"
              },
              "use_feature_id": {
                "label": "Object-ID gebruiken",
                "description": "Object-ID gebruiken"
              },
              "zero_background": {
                "label": "Achtergrond nul",
                "description": "Achtergrond nul"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad"
              }
            }
          },
          "remove_short_streams": {
            "name": "Topologie van vectorwaterlopen repareren",
            "description": "Verwijdert waterloopschakels die korter zijn dan de minimale lengte.",
            "params": {
              "d8_pntr": {
                "label": "D8-pointer",
                "description": "D8-stroompointerraster"
              },
              "streams": {
                "label": "Waterlopen",
                "description": "Waterlopen"
              },
              "esri_pntr": {
                "label": "ESRI-pointer",
                "description": "ESRI-pointer"
              },
              "min_length": {
                "label": "Minimale lengte",
                "description": "Minimale lengte"
              },
              "zero_background": {
                "label": "Achtergrond nul",
                "description": "Achtergrond nul"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad"
              }
            }
          },
          "repair_stream_vector_topology": {
            "name": "Riviermiddellijnen",
            "description": "Herstelt de topologie van een vectorwaterloopnetwerk.",
            "params": {
              "input_vector": {
                "label": "Invoervector",
                "description": "Invoervector"
              },
              "snap": {
                "label": "Snappen",
                "description": "Snappen"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad"
              }
            }
          },
          "river_centerlines": {
            "name": "Verste kanaalkop",
            "description": "Extraheert de hartlijnen van rivieren uit een waterraster met behulp van de mediale as.",
            "params": {
              "raster": {
                "label": "Raster",
                "description": "Binair water/niet-water-raster"
              },
              "min_length": {
                "label": "Minimale lengte",
                "description": "Minimale hartlijnlengte in rastercellen"
              },
              "search_radius": {
                "label": "Zoekstraal",
                "description": "Zoekradius (cellen) die wordt gebruikt om nabijgelegen eindpunten te verbinden"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorpad van de hartlijn"
              }
            }
          },
          "farthest_channel_head": {
            "name": "Hoofdstroom vinden",
            "description": "Berekent de afstand tot de verst gelegen kanaalkop.",
            "params": {
              "d8_pntr": {
                "label": "D8-pointer",
                "description": "D8-stroompointerraster"
              },
              "streams": {
                "label": "Waterlopen",
                "description": "Waterlopen"
              },
              "esri_pntr": {
                "label": "ESRI-pointer",
                "description": "ESRI-pointer"
              },
              "zero_background": {
                "label": "Achtergrond nul",
                "description": "Achtergrond nul"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad"
              }
            }
          },
          "find_main_stem": {
            "name": "Lengte van bovenstroomse kanalen",
            "description": "Identificeert de hoofdtak van een waterloopnetwerk.",
            "params": {
              "d8_pntr": {
                "label": "D8-pointer",
                "description": "D8-stroompointerraster"
              },
              "streams": {
                "label": "Waterlopen",
                "description": "Waterlopen"
              },
              "esri_pntr": {
                "label": "ESRI-pointer",
                "description": "ESRI-pointer"
              },
              "zero_background": {
                "label": "Achtergrond nul",
                "description": "Achtergrond nul"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad"
              }
            }
          },
          "length_of_upstream_channels": {
            "name": "Lengteprofiel",
            "description": "Berekent de totale bovenstroomse kanaallengte.",
            "params": {
              "d8_pntr": {
                "label": "D8-pointer",
                "description": "D8-stroompointerraster"
              },
              "streams": {
                "label": "Waterlopen",
                "description": "Waterlopen"
              },
              "esri_pntr": {
                "label": "ESRI-pointer",
                "description": "ESRI-pointer"
              },
              "zero_background": {
                "label": "Achtergrond nul",
                "description": "Achtergrond nul"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad"
              }
            }
          },
          "long_profile": {
            "name": "Lengteprofiel uit punten",
            "description": "Maakt een lengteprofiel van een waterloop.",
            "params": {
              "d8_pntr": {
                "label": "D8-pointer",
                "description": "D8-stroompointerraster"
              },
              "dem": {
                "label": "DEM",
                "description": "DEM"
              },
              "streams_raster": {
                "label": "Waterlopenraster",
                "description": "Waterloopraster"
              },
              "esri_pntr": {
                "label": "ESRI-pointer",
                "description": "ESRI-pointer"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad"
              }
            }
          },
          "long_profile_from_points": {
            "name": "Hack-waterlooporde",
            "description": "Maakt een lengteprofiel uit vectorpunten.",
            "params": {
              "d8_pntr": {
                "label": "D8-pointer",
                "description": "D8-stroompointerraster"
              },
              "dem": {
                "label": "DEM",
                "description": "DEM"
              },
              "points": {
                "label": "Punten",
                "description": "Punten"
              },
              "esri_pntr": {
                "label": "ESRI-pointer",
                "description": "ESRI-pointer"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad"
              }
            }
          },
          "hack_stream_order": {
            "name": "Horton-ratio's",
            "description": "Kent de Hack-waterloopordening toe aan waterloopcellen.",
            "params": {
              "d8_pntr": {
                "label": "D8-pointer",
                "description": "D8-stroompointerraster"
              },
              "streams": {
                "label": "Waterlopen",
                "description": "Waterloopraster"
              },
              "esri_pntr": {
                "label": "ESRI-pointer",
                "description": "Gebruik een pointer in ESRI-stijl"
              },
              "zero_background": {
                "label": "Achtergrond nul",
                "description": "Ken nul toe aan de achtergrond"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad"
              }
            }
          },
          "horton_ratios": {
            "name": "Horton-waterlooporde",
            "description": "Berekent de Horton-verhoudingen voor bifurcatie, lengte, afwateringsoppervlak en helling.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster."
              },
              "streams_raster": {
                "label": "Waterlopenraster",
                "description": "Binair waterloopraster (positief = waterloop)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het tekstrapport (optioneel)."
              }
            }
          },
          "horton_stream_order": {
            "name": "Shreve-waterloopmagnitude",
            "description": "Kent de Horton-waterloopordening toe aan waterloopcellen.",
            "params": {
              "d8_pntr": {
                "label": "D8-pointer",
                "description": "D8-stroompointerraster"
              },
              "streams": {
                "label": "Waterlopen",
                "description": "Waterloopraster"
              },
              "esri_pntr": {
                "label": "ESRI-pointer",
                "description": "Gebruik een pointer in ESRI-stijl"
              },
              "zero_background": {
                "label": "Achtergrond nul",
                "description": "Ken nul toe aan de achtergrond"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad"
              }
            }
          },
          "shreve_stream_magnitude": {
            "name": "Strahler-ordebekkens",
            "description": "Berekent de Shreve-magnitude van waterlopen.",
            "params": {
              "d8_pntr": {
                "label": "D8-pointer",
                "description": "D8-stroompointerraster"
              },
              "streams": {
                "label": "Waterlopen",
                "description": "Waterloopraster"
              },
              "esri_pntr": {
                "label": "ESRI-pointer",
                "description": "Gebruik een pointer in ESRI-stijl"
              },
              "zero_background": {
                "label": "Achtergrond nul",
                "description": "Ken nul toe aan de achtergrond"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad"
              }
            }
          },
          "strahler_order_basins": {
            "name": "Strahler-waterlooporde",
            "description": "Bakent stroomgebieden af, gelabeld met de Horton-Strahler-orde van de waterloopschakel die ze afwatert.",
            "params": {
              "d8_pntr": {
                "label": "D8-pointer",
                "description": "D8-pointerraster."
              },
              "streams": {
                "label": "Waterlopen",
                "description": "Raster met het waterloopnetwerk waarin waterloopcellen een waarde > 0 hebben en geen NoData zijn."
              },
              "esri_pntr": {
                "label": "ESRI-pointer",
                "description": "Vlag voor ESRI-pointercodering."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "strahler_stream_order": {
            "name": "Waterlooplinkklasse",
            "description": "Kent de Strahler-waterloopordening toe aan waterloopcellen.",
            "params": {
              "d8_pntr": {
                "label": "D8-pointer",
                "description": "D8-stroompointerraster"
              },
              "streams": {
                "label": "Waterlopen",
                "description": "Waterloopraster (positieve waarden = waterloopcellen)"
              },
              "esri_pntr": {
                "label": "ESRI-pointer",
                "description": "Gebruik pointerwaarden in ESRI-stijl (standaard: Whitebox)"
              },
              "zero_background": {
                "label": "Achtergrond nul",
                "description": "Ken nul toe aan de achtergrond in plaats van NoData"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad"
              }
            }
          },
          "stream_link_class": {
            "name": "Waterlooplink-identificatie",
            "description": "Classificeert waterloopschakels als intern, extern of bron.",
            "params": {
              "d8_pntr": {
                "label": "D8-pointer",
                "description": "D8-stroompointerraster"
              },
              "streams": {
                "label": "Waterlopen",
                "description": "Waterlopen"
              },
              "esri_pntr": {
                "label": "ESRI-pointer",
                "description": "ESRI-pointer"
              },
              "zero_background": {
                "label": "Achtergrond nul",
                "description": "Achtergrond nul"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad"
              }
            }
          },
          "stream_link_identifier": {
            "name": "Waterlooplinklengte",
            "description": "Kent aan elke waterloopschakel een unieke ID toe.",
            "params": {
              "d8_pntr": {
                "label": "D8-pointer",
                "description": "D8-stroompointerraster"
              },
              "streams": {
                "label": "Waterlopen",
                "description": "Waterlopen"
              },
              "esri_pntr": {
                "label": "ESRI-pointer",
                "description": "ESRI-pointer"
              },
              "zero_background": {
                "label": "Achtergrond nul",
                "description": "Achtergrond nul"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad"
              }
            }
          },
          "stream_link_length": {
            "name": "Waterlooplinkhelling",
            "description": "Berekent de totale lengte van elke waterloopschakel.",
            "params": {
              "d8_pntr": {
                "label": "D8-pointer",
                "description": "D8-stroompointerraster"
              },
              "linkid": {
                "label": "Link-ID",
                "description": "Link-ID"
              },
              "streams": {
                "label": "Waterlopen",
                "description": "Waterlopen"
              },
              "esri_pntr": {
                "label": "ESRI-pointer",
                "description": "ESRI-pointer"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad"
              }
            }
          },
          "stream_link_slope": {
            "name": "Continue waterloophelling",
            "description": "Berekent de gemiddelde helling van elke waterloopschakel.",
            "params": {
              "d8_pntr": {
                "label": "D8-pointer",
                "description": "D8-stroompointerraster"
              },
              "dem": {
                "label": "DEM",
                "description": "DEM"
              },
              "linkid": {
                "label": "Link-ID",
                "description": "Link-ID"
              },
              "streams": {
                "label": "Waterlopen",
                "description": "Waterlopen"
              },
              "esri_pntr": {
                "label": "ESRI-pointer",
                "description": "ESRI-pointer"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad"
              }
            }
          },
          "stream_slope_continuous": {
            "name": "Topologische waterlooporde",
            "description": "Berekent de hellingswaarde voor elke waterloopcel.",
            "params": {
              "d8_pntr": {
                "label": "D8-pointer",
                "description": "D8-stroompointerraster"
              },
              "dem": {
                "label": "DEM",
                "description": "DEM"
              },
              "streams": {
                "label": "Waterlopen",
                "description": "Waterlopen"
              },
              "esri_pntr": {
                "label": "ESRI-pointer",
                "description": "ESRI-pointer"
              },
              "zero_background": {
                "label": "Achtergrond nul",
                "description": "Achtergrond nul"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad"
              }
            }
          },
          "topological_stream_order": {
            "name": "Zijrivier-identificatie",
            "description": "Kent een topologische waterloopordening toe op basis van het aantal schakels.",
            "params": {
              "d8_pntr": {
                "label": "D8-pointer",
                "description": "D8-stroompointerraster"
              },
              "streams": {
                "label": "Waterlopen",
                "description": "Waterlopen"
              },
              "esri_pntr": {
                "label": "ESRI-pointer",
                "description": "ESRI-pointer"
              },
              "zero_background": {
                "label": "Achtergrond nul",
                "description": "Achtergrond nul"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad"
              }
            }
          },
          "tributary_identifier": {
            "name": "Analyse van vectorwaterloopnetwerk",
            "description": "Kent aan elke zijrivier een unieke ID toe.",
            "params": {
              "d8_pntr": {
                "label": "D8-pointer",
                "description": "D8-stroompointerraster"
              },
              "streams": {
                "label": "Waterlopen",
                "description": "Waterlopen"
              },
              "esri_pntr": {
                "label": "ESRI-pointer",
                "description": "ESRI-pointer"
              },
              "zero_background": {
                "label": "Achtergrond nul",
                "description": "Achtergrond nul"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad"
              }
            }
          },
          "vector_stream_network_analysis": {
            "name": "Puntcoördinaten toevoegen aan tabel",
            "description": "Uitgebreide analyse van vectorwaterloopnetwerken.",
            "params": {
              "streams": {
                "label": "Waterlopen",
                "description": "Invoervectorlaag met het waterloopnetwerk."
              },
              "dem": {
                "label": "DEM",
                "description": "Invoerraster met hoogte (DEM)."
              },
              "max_ridge_cutting_height": {
                "label": "Maximale doorsnijhoogte ruggen",
                "description": "Maximaal toegestane hoogte voor het doorsnijden van ruggen."
              },
              "snap_distance": {
                "label": "Snapafstand",
                "description": "Tolerantie voor de vangafstand bij het opschonen van het netwerk."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoervectorpad."
              }
            }
          },
          "add_point_coordinates_to_table": {
            "name": "Vector opschonen",
            "description": "Kopieert een puntenlaag en voegt de attribuutvelden XCOORD en YCOORD toe.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar de invoerpuntvector."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorpad. Indien weggelaten, wordt een GeoJSON-pad naast de invoer afgeleid."
              }
            }
          },
          "clean_vector": {
            "name": "CSV-punten naar vector",
            "description": "Verwijdert lege en ongeldige vectorgeometrieën (bijv. te kleine lijnen/polygonen) met behoud van geldige objecten en attributen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerpad van de vector."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorpad. Indien weggelaten, wordt een GeoJSON-pad naast de invoer afgeleid."
              }
            }
          },
          "csv_points_to_vector": {
            "name": "Tabel exporteren naar CSV",
            "description": "Importeert puntrecords uit een CSV-bestand in een puntvectorlaag.",
            "params": {
              "input_file": {
                "label": "Invoerbestand",
                "description": "Pad naar het CSV-invoerbestand."
              },
              "x_field_num": {
                "label": "X-veldnummer",
                "description": "Nulgebaseerde index van het veld met de X-coördinaat. Standaard 0."
              },
              "y_field_num": {
                "label": "Y-veldnummer",
                "description": "Nulgebaseerde index van het veld met de Y-coördinaat. Standaard 1."
              },
              "epsg": {
                "label": "EPSG",
                "description": "Optionele EPSG-code voor het CRS van de uitvoer."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "export_table_to_csv": {
            "name": "Tabellen joinen",
            "description": "Exporteert een attribuuttabel van een vector naar een CSV-bestand.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerpad van de vector."
              },
              "output_csv_file": {
                "label": "Uitvoer-CSV-bestand",
                "description": "Pad naar het CSV-uitvoerbestand."
              },
              "headers": {
                "label": "Koppen",
                "description": "Neem een kopregel op in de uitvoer. Standaard true."
              }
            }
          },
          "join_tables": {
            "name": "Tabel samenvoegen met CSV",
            "description": "Voegt attributen uit een externe vectortabel samen met een primaire vectortabel via sleutelvelden.",
            "params": {
              "primary_vector": {
                "label": "Primaire vector",
                "description": "Pad naar de primaire vector die de gekoppelde velden ontvangt."
              },
              "primary_key_field": {
                "label": "Primair sleutelveld",
                "description": "Veld met de primaire sleutel in de primaire vector."
              },
              "foreign_vector": {
                "label": "Externe vector",
                "description": "Pad naar de externe vector met de bronvelden."
              },
              "foreign_key_field": {
                "label": "Extern sleutelveld",
                "description": "Veld met de externe sleutel in de externe vector."
              },
              "import_field": {
                "label": "Te importeren veld",
                "description": "Optioneel enkel veld om te importeren; standaard alle velden die geen sleutel- of FID-veld zijn."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorpad. Standaard een afgeleid GeoJSON-pad naast de primaire invoer."
              }
            }
          },
          "merge_table_with_csv": {
            "name": "Vectoren samenvoegen",
            "description": "Voegt attributen uit een CSV-tabel samen met een attribuuttabel van een vector via sleutelvelden.",
            "params": {
              "primary_vector": {
                "label": "Primaire vector",
                "description": "Pad naar de primaire vector die de samengevoegde velden ontvangt."
              },
              "primary_key_field": {
                "label": "Primair sleutelveld",
                "description": "Veld met de primaire sleutel in de primaire vector."
              },
              "foreign_csv_filename": {
                "label": "Extern CSV-bestand",
                "description": "CSV-bestand met de externe tabel."
              },
              "foreign_key_field": {
                "label": "Extern sleutelveld",
                "description": "Veldnaam van de externe sleutel in de CSV-kopregel."
              },
              "import_field": {
                "label": "Te importeren veld",
                "description": "Optioneel enkel CSV-veld om te importeren; standaard alle velden die geen sleutelveld zijn."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorpad. Standaard een afgeleid GeoJSON-pad naast de primaire invoer."
              }
            }
          },
          "merge_vectors": {
            "name": "Attribuuttabel opnieuw initialiseren",
            "description": "Combineert twee of meer invoervectoren van hetzelfde geometrietype tot één uitvoervector.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Array met paden naar invoervectoren (minimaal twee vereist)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "reinitialize_attribute_table": {
            "name": "Samenvattende vectorstatistieken",
            "description": "Maakt een kopie van een vectorlaag met alleen een opnieuw gegenereerd FID-attribuut.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerpad van de vector."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorpad. Indien weggelaten, wordt het invoerpad overschreven."
              }
            }
          },
          "vector_summary_statistics": {
            "name": "Loshangende bogen repareren",
            "description": "Berekent aantal, som, gemiddelde, min, max en standaardafwijking per categorische groep en exporteert naar CSV.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "group_field": {
                "label": "Groepeerveld",
                "description": "Veldnaam voor de groepering."
              },
              "value_field": {
                "label": "Waardeveld",
                "description": "Veldnaam van de numerieke waarde."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het CSV-bestand."
              }
            }
          },
          "fix_dangling_arcs": {
            "name": "Lijnen naar polygonen",
            "description": "Herstelt te korte en te lange losse bogen in een lijnennetwerk door eindpunten van lijnen binnen een drempelafstand te snappen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar de invoerpolylijnvector."
              },
              "snap": {
                "label": "Snappen",
                "description": "Drempelwaarde voor de vangafstand in kaarteenheden."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorpad. Indien weggelaten, wordt een GeoJSON-pad naast de invoer afgeleid."
              }
            }
          },
          "lines_to_polygons": {
            "name": "Meerdelig naar enkeldelig",
            "description": "Zet polylijnobjecten om in polygoonobjecten, waarbij het eerste deel als buitenring wordt behandeld en latere delen als gaten.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar de invoerpolylijnvector."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpolygoonvectorpad. Indien weggelaten, wordt een GeoJSON-pad naast de invoer afgeleid."
              }
            }
          },
          "multipart_to_singlepart": {
            "name": "Polygonen naar lijnen",
            "description": "Zet een vector met objecten uit meerdere delen om in een vector met alleen objecten uit één deel.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar de invoervector (polylijn, polygoon of multipunt)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorpad. Standaard een GeoJSON met tijdstempel naast de invoer."
              },
              "exclude_holes": {
                "label": "Gaten uitsluiten",
                "description": "Indien true, blijven polygoongaten gekoppeld aan de omsluitende buitenring (standaard: false)."
              }
            }
          },
          "polygons_to_lines": {
            "name": "Polygoongaten verwijderen",
            "description": "Zet polygoon- en multipolygoonobjecten om in lijnwerk dat hun grenzen volgt.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van de invoerpolygoonvector."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerlijnvectorpad. Indien weggelaten, wordt een GeoJSON-pad naast de invoer afgeleid."
              }
            }
          },
          "remove_polygon_holes": {
            "name": "Enkeldelig naar meerdelig",
            "description": "Verwijdert binnenringen uit polygoonobjecten met behoud van attributen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van de invoerpolygoonvector."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpolygoonvectorpad. Indien weggelaten, wordt een GeoJSON-pad naast de invoer afgeleid."
              }
            }
          },
          "singlepart_to_multipart": {
            "name": "Topologieregels automatisch herstellen",
            "description": "Voegt objecten uit één deel samen tot objecten uit meerdere delen, gegroepeerd op een optioneel categorisch veld.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerpad van de vector."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorpad. Standaard een GeoJSON met tijdstempel naast de invoer."
              },
              "field": {
                "label": "Veld",
                "description": "Optionele naam van het attribuutveld waarop objecten worden gegroepeerd. Indien weggelaten, worden alle objecten samengevoegd tot één geometrie."
              }
            }
          },
          "topology_rule_autofix": {
            "name": "Topologieregels valideren",
            "description": "Past automatisch veilige, controleerbare correcties toe op topologieschendingen die door topology_rule_validate zijn gedetecteerd: snappen van eindpunten tussen objecten, snappen/projecteren van losse eindpunten en projectie van punten op lijnen. polygon_must_not_have_gaps heeft geen automatische correctie en wordt gerapporteerd als nul wijzigingen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerpad van de vector."
              },
              "rule_set": {
                "label": "Regelset",
                "description": "Regelconfiguratie als JSON-array/-object, CSV-tekenreeks of bestandspad. Regels met automatische correcties: line_endpoints_must_snap_within_tolerance, line_must_not_have_dangles, point_must_be_covered_by_line. polygon_must_not_have_gaps wordt geaccepteerd, maar levert nooit wijzigingen op."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Tolerantie voor vangbewerkingen in coördinaateenheden. Standaard 0.01."
              },
              "dry_run": {
                "label": "Proefuitvoering",
                "description": "Indien true (DE STANDAARD), wordt alleen een voorbeeld gegeven: het wijzigingsrapport wordt gegenereerd, maar er wordt geen uitvoer weggeschreven. Geef false op om de correcties toe te passen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorpad voor de gecorrigeerde objecten. Indien weggelaten, wordt het naast de invoer afgeleid."
              },
              "change_report": {
                "label": "Wijzigingsrapport",
                "description": "Optioneel uitvoerpad van het JSON-rapport met het wijzigingslogboek."
              }
            }
          },
          "topology_rule_validate": {
            "name": "Topologievalidatierapport",
            "description": "Valideert de vectortopologie aan de hand van regelsetcontroles (zelfdoorsnijding, overlap, gaten, losse einden, puntdekking, snappen van eindpunten) en geeft schendingen op objectniveau als uitvoer.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerpad van de vector."
              },
              "rule_set": {
                "label": "Regelset",
                "description": "Regelconfiguratie als JSON-array/-object, CSV-tekenreeks of bestandspad. Standaard alle 6 MVP-regels. Ondersteund: line_must_not_self_intersect, polygon_must_not_overlap, polygon_must_not_have_gaps, line_must_not_have_dangles, point_must_be_covered_by_line, line_endpoints_must_snap_within_tolerance."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Tolerantie voor de regel line_endpoints_must_snap_within_tolerance in coördinaateenheden. Standaard 1.0."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorpad voor de overtredingen. Indien weggelaten, wordt het naast de invoer afgeleid."
              },
              "report": {
                "label": "Rapport",
                "description": "Optioneel uitvoerpad van het JSON-samenvattingsrapport."
              }
            }
          },
          "topology_validation_report": {
            "name": "NoData naar nul converteren",
            "description": "Controleert een vectorlaag op topologieproblemen en schrijft een CSV-rapport per object.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerpad van de vector."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het CSV-bestand."
              }
            }
          },
          "convert_nodata_to_zero": {
            "name": "NoData-waarde wijzigen",
            "description": "Vervangt NoData-cellen van een raster door 0 en laat geldige cellen ongewijzigd.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerraster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad. Indien weggelaten, wordt een raster in het geheugen geretourneerd."
              }
            }
          },
          "modify_nodata_value": {
            "name": "Nieuw raster op basis van raster",
            "description": "Wijzigt de NoData-waarde van een raster en herschrijft bestaande NoData-cellen naar de nieuwe waarde.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerraster."
              },
              "new_value": {
                "label": "Nieuwe waarde",
                "description": "Nieuwe NoData-waarde. Standaard -32768.0."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad. Indien weggelaten, wordt een raster in het geheugen geretourneerd."
              }
            }
          },
          "new_raster_from_base_raster": {
            "name": "Nieuw raster op basis van vector",
            "description": "Maakt een nieuw raster met de omvang, afmetingen en het CRS van een basisraster.",
            "params": {
              "base": {
                "label": "Basis",
                "description": "Pad naar het basisraster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad. Indien weggelaten, wordt een raster in het geheugen geretourneerd."
              },
              "out_val": {
                "label": "Uitvoerwaarde",
                "description": "Optionele vulwaarde. Standaard de NoData-waarde van het raster."
              },
              "data_type": {
                "label": "Gegevenstype",
                "description": "Optioneel gegevenstype: 'float', 'double' of 'integer'."
              }
            }
          },
          "new_raster_from_base_vector": {
            "name": "Raster naar vectorlijnen",
            "description": "Maakt een nieuw raster op basis van de omvang van een basisvector en een celgrootte, gevuld met een optionele waarde.",
            "params": {
              "base": {
                "label": "Basis",
                "description": "Pad naar de basisvector."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Celgrootte van het uitvoerraster (> 0)."
              },
              "out_val": {
                "label": "Uitvoerwaarde",
                "description": "Optionele vulwaarde. Standaard NoData (-32768)."
              },
              "data_type": {
                "label": "Gegevenstype",
                "description": "Optioneel sleutelwoord voor het uitvoergegevenstype: integer, float of double."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "raster_to_vector_lines": {
            "name": "Raster naar vectorpunten",
            "description": "Zet rasterlijncellen die niet nul en niet NoData zijn om in polylijnvectorobjecten.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerraster (enkelbandig)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorpad. Indien weggelaten, wordt een GeoJSON-pad naast de invoer afgeleid."
              }
            }
          },
          "raster_to_vector_points": {
            "name": "Raster naar vectorpolygonen",
            "description": "Zet cellen in een raster die niet nul en niet NoData zijn om in puntobjecten op de celcentra.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerraster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpuntvectorpad. Indien weggelaten, wordt een GeoJSON-pad naast de invoer afgeleid."
              }
            }
          },
          "raster_to_vector_polygons": {
            "name": "Rasterpolygoongaten verwijderen",
            "description": "Zet rastergebieden die niet nul en niet NoData zijn om in polygoonvectorobjecten met de attributen FID en VALUE.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerraster (enkelbandig)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorpad. Indien weggelaten, wordt een GeoJSON-pad naast de invoer afgeleid."
              }
            }
          },
          "remove_raster_polygon_holes": {
            "name": "NoData-waarde instellen",
            "description": "Verwijdert binnenste achtergrondgaten (gebieden met 0 of NoData die door de voorgrond worden omsloten) uit rasterpolygonen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerraster (enkelbandig)."
              },
              "threshold": {
                "label": "Drempelwaarde",
                "description": "Optionele maximale grootte in cellen van de te verwijderen gaten. 0 betekent alle ingesloten gaten."
              },
              "use_diagonals": {
                "label": "Diagonalen gebruiken",
                "description": "Gebruik 8-buurconnectiviteit voor het clusteren en de randconnectiviteit."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "set_nodata_value": {
            "name": "Vectorlijnen naar raster",
            "description": "Stelt een NoData-waarde voor een raster in en zet bestaande NoData-cellen om naar de opgegeven achtergrondwaarde.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerraster."
              },
              "back_value": {
                "label": "Achtergrondwaarde",
                "description": "Achtergrondwaarde die als NoData wordt toegekend. Standaard 0.0."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad. Indien weggelaten, wordt een raster in het geheugen geretourneerd."
              }
            }
          },
          "vector_lines_to_raster": {
            "name": "Vectorpunten naar raster",
            "description": "Rastert lijn- en polygoongrensgeometrieën naar een rastergrid.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar de invoervector (lijnen of polygonen)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              },
              "field": {
                "label": "Veld",
                "description": "Optionele naam van het numerieke veld dat wordt ingebrand. Standaard FID."
              },
              "zero_background": {
                "label": "Achtergrond nul",
                "description": "Indien true, wordt de achtergrond van de uitvoer geïnitialiseerd op 0 in plaats van NoData."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Celgrootte van de uitvoer wanneer 'base' niet is opgegeven. Indien weggelaten en er geen basis is opgegeven, is de automatische celgrootte de maximale omvang / 500."
              },
              "base": {
                "label": "Basis",
                "description": "Optioneel pad naar een basisraster dat het uitvoerraster en de omvang definieert."
              }
            }
          },
          "vector_points_to_raster": {
            "name": "Vectorpolygonen naar raster",
            "description": "Rastert punt- of multipuntvectoren naar een grid met een geselecteerde toewijzingsbewerking.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar de invoervector (punt/multipunt)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad. Indien weggelaten, blijft het resultaat in het geheugen."
              },
              "field": {
                "label": "Veld",
                "description": "Optioneel numeriek veld dat voor de rasterwaarden wordt gebruikt. Standaard FID."
              },
              "assign": {
                "label": "Toewijzen",
                "description": "Toekenningsbewerking: last, first, min, max, sum, num, mean."
              },
              "zero_background": {
                "label": "Achtergrond nul",
                "description": "Indien true, wordt de achtergrond geïnitialiseerd op 0; anders op NoData."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Celgrootte van de uitvoer. Vereist wanneer 'base' niet is opgegeven."
              },
              "base": {
                "label": "Basis",
                "description": "Optioneel pad naar een basisraster om de omvang en het raster te definiëren."
              }
            }
          },
          "vector_polygons_to_raster": {
            "name": "Lokale Moran's I (LISA) voor raster",
            "description": "Rastert polygoonvectoren naar een grid, met ondersteuning voor inbrandwaarden op basis van attributen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van de invoerpolygoonvector."
              },
              "field": {
                "label": "Veld",
                "description": "Optionele naam van het numerieke veld voor de in te branden waarden (standaard FID)."
              },
              "zero_background": {
                "label": "Achtergrond nul",
                "description": "Indien true, wordt de achtergrond van de uitvoer geïnitialiseerd op 0 in plaats van NoData."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Celgrootte van de uitvoer wanneer 'base' niet is opgegeven."
              },
              "base": {
                "label": "Basis",
                "description": "Optioneel pad naar een basisraster dat het uitvoerraster en de omvang definieert."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad. Indien weggelaten, blijft de uitvoer in het geheugen."
              }
            }
          },
          "local_morans_i_lisa_raster": {
            "name": "Getis-Ord Gi* voor raster",
            "description": "Berekent een LISA-clusteranalyse uit punten en geeft een categorisch raster als uitvoer (HH/LL/HL/LH/NS). Maakt rastergebaseerde integratie mogelijk.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met waarnemingspunten."
              },
              "field": {
                "label": "Veld",
                "description": "Numeriek attribuutveld dat moet worden geanalyseerd."
              },
              "weights_mode": {
                "label": "Gewichtenmodus",
                "description": "Omgevingsmodus: queen, rook, k_nearest, distance_band."
              },
              "k": {
                "label": "K",
                "description": "k-waarde voor de modus k_nearest (standaard 8)."
              },
              "distance": {
                "label": "Afstand",
                "description": "Afstandsdrempel voor de modus distance_band."
              },
              "row_standardize": {
                "label": "Rijstandaardisatie",
                "description": "Rijstandaardisatie op de gewichten toepassen (standaard true)."
              },
              "island_policy": {
                "label": "Eilandbeleid",
                "description": "Omgang met eilanden: drop_with_warning, keep_zero_weight, error."
              },
              "alpha": {
                "label": "Alfa",
                "description": "Significantiedrempelwaarde in [0, 1]; standaard 0.05."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Celgrootte van het uitvoerraster (optioneel; automatisch berekend uit de omvang)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad (classificatie: 0=NS, 1=HH, 2=LL, 3=HL, 4=LH)."
              }
            }
          },
          "getis_ord_gi_star_raster": {
            "name": "Ordinary kriging",
            "description": "Berekent Gi*-hotspot-/coldspotclassificaties uit punten en geeft een raster als uitvoer (-1=cold, 0=NS, 1=hot). Voor hotspotgebaseerde analyse.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met waarnemingspunten."
              },
              "field": {
                "label": "Veld",
                "description": "Numeriek attribuutveld dat moet worden geanalyseerd."
              },
              "weights_mode": {
                "label": "Gewichtenmodus",
                "description": "Omgevingsmodus: queen, rook, k_nearest, distance_band."
              },
              "k": {
                "label": "K",
                "description": "k-waarde voor de modus k_nearest (standaard 8)."
              },
              "distance": {
                "label": "Afstand",
                "description": "Afstandsdrempel voor de modus distance_band."
              },
              "row_standardize": {
                "label": "Rijstandaardisatie",
                "description": "Rijstandaardisatie op de gewichten toepassen (standaard true)."
              },
              "island_policy": {
                "label": "Eilandbeleid",
                "description": "Omgang met eilanden: drop_with_warning, keep_zero_weight, error."
              },
              "alpha": {
                "label": "Alfa",
                "description": "Significantiedrempelwaarde in [0, 1]; standaard 0.05."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Celgrootte van het uitvoerraster (optioneel; automatisch berekend uit de omvang)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad (classificatie: -1=Cold, 0=NS, 1=Hot)."
              }
            }
          },
          "ordinary_kriging": {
            "name": "Lokale kriging",
            "description": "Voert een ordinary-kriginginterpolatie uit om waarden in niet-gekarteerde gridcellen te schatten op basis van een steekproef van puntmetingen. Ordinary kriging is een geostatistische methode die de structuur van de ruimtelijke autocorrelatie benut om zowel voorspellingen als de bijbehorende krigingvariantie (voorspellingsonzekerheid) te leveren. Het hulpmiddel schat automatisch een empirisch variogram uit de invoerpuntgegevens en past een theoretisch variogrammodel (sferisch, exponentieel of Gaussisch) aan om de ruimtelijke afhankelijkheid vast te leggen.",
            "params": {
              "points": {
                "label": "Punten",
                "description": "Invoervectorlaag met punten."
              },
              "value_field": {
                "label": "Waardeveld",
                "description": "Numeriek attribuutveld met de te interpoleren waarden."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Celgrootte van de uitvoer in kaarteenheden (vereist als er geen base_raster is)."
              },
              "base_raster": {
                "label": "Basisraster",
                "description": "Optioneel basisraster dat de geometrie van de uitvoer bepaalt."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "local_kriging": {
            "name": "Simple kriging",
            "description": "Voert een lokale ordinary-kriginginterpolatie uit met k-nearest neighbors, wat een efficiënte ruimtelijke schatting voor grote gegevenssets oplevert. Deze benadering is rekenkundig praktischer dan globale ordinary kriging voor gegevenssets met duizenden punten.",
            "params": {
              "points": {
                "label": "Punten",
                "description": "Invoervectorlaag met punten."
              },
              "value_field": {
                "label": "Waardeveld",
                "description": "Numeriek attribuutveld met de te interpoleren waarden."
              },
              "k_neighbors": {
                "label": "K buren",
                "description": "Aantal te gebruiken naaste buren; standaard 10."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Celgrootte van de uitvoer in kaarteenheden (vereist als er geen base_raster is)."
              },
              "base_raster": {
                "label": "Basisraster",
                "description": "Optioneel basisraster dat de geometrie van de uitvoer bepaalt."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "simple_kriging": {
            "name": "Universal kriging",
            "description": "Voert een simple-kriginginterpolatie uit wanneer het gemiddelde van het ruimtelijke veld vooraf bekend is. Deze methode vermindert de krigingvariantie en levert stabielere voorspellingen op wanneer het gemiddelde betrouwbaar bekend is uit externe informatie.",
            "params": {
              "points": {
                "label": "Punten",
                "description": "Invoervectorlaag met punten."
              },
              "value_field": {
                "label": "Waardeveld",
                "description": "Numeriek attribuutveld met de te interpoleren waarden."
              },
              "known_mean": {
                "label": "Bekend gemiddelde",
                "description": "Bekend gemiddelde van het ruimtelijke veld."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Celgrootte van de uitvoer in kaarteenheden (vereist als er geen base_raster is)."
              },
              "base_raster": {
                "label": "Basisraster",
                "description": "Optioneel basisraster dat de geometrie van de uitvoer bepaalt."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "universal_kriging": {
            "name": "Ruimte-tijd-kriging",
            "description": "Voert een universal-kriginginterpolatie uit wanneer het ruimtelijke verschijnsel een systematische trend of drift vertoont. Combineert kriging met de schatting van een polynomiaal trendoppervlak.",
            "params": {
              "points": {
                "label": "Punten",
                "description": "Invoervectorlaag met punten."
              },
              "value_field": {
                "label": "Waardeveld",
                "description": "Numeriek attribuutveld met de te interpoleren waarden."
              },
              "trend_order": {
                "label": "Trendorde",
                "description": "Orde van de polynomiale trend (1=lineair, 2=kwadratisch); standaard 1."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Celgrootte van de uitvoer in kaarteenheden (vereist als er geen base_raster is)."
              },
              "base_raster": {
                "label": "Basisraster",
                "description": "Optioneel basisraster dat de geometrie van de uitvoer bepaalt."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "spacetime_kriging": {
            "name": "Ruimtelijke-lag-regressie (raster)",
            "description": "Voert een ruimte-tijd-kriginginterpolatie uit om ruimtelijke en temporele variatie in puntmetingen gezamenlijk te modelleren. Ideaal voor ruimtelijk verspreide tijdreeksgegevens.",
            "params": {
              "points": {
                "label": "Punten",
                "description": "Invoervectorlaag met punten."
              },
              "value_field": {
                "label": "Waardeveld",
                "description": "Numeriek attribuutveld met de te interpoleren waarden."
              },
              "time_field": {
                "label": "Tijdveld",
                "description": "Temporeel attribuutveld met tijdwaarden."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Celgrootte van de uitvoer in kaarteenheden (vereist als er geen base_raster is)."
              },
              "base_raster": {
                "label": "Basisraster",
                "description": "Optioneel basisraster dat de geometrie van de uitvoer bepaalt."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "spatial_lag_regression_raster": {
            "name": "Ruimtelijke-foutregressie (raster)",
            "description": "Schat een SAR-model en geeft een oppervlak met gefitte waarden als uitvoer.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "response_field": {
                "label": "Responsveld",
                "description": "Responsvariabele."
              },
              "predictor_fields": {
                "label": "Voorspellervelden",
                "description": "Predictorvelden."
              },
              "weights_mode": {
                "label": "Gewichtenmodus",
                "description": "Omgevingsmodus."
              },
              "k": {
                "label": "K",
                "description": "k voor k_nearest."
              },
              "distance": {
                "label": "Afstand",
                "description": "Afstandsdrempel."
              },
              "row_standardize": {
                "label": "Rijstandaardisatie",
                "description": "Rijstandaardisatie op de gewichten toepassen."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Celgrootte van het uitvoerraster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerraster."
              }
            }
          },
          "spatial_error_regression_raster": {
            "name": "Geografisch gewogen regressie (raster)",
            "description": "Schat een SEM-model en geeft een oppervlak met gefitte waarden als uitvoer.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "response_field": {
                "label": "Responsveld",
                "description": "Responsvariabele."
              },
              "predictor_fields": {
                "label": "Voorspellervelden",
                "description": "Predictorvelden."
              },
              "weights_mode": {
                "label": "Gewichtenmodus",
                "description": "Omgevingsmodus."
              },
              "k": {
                "label": "K",
                "description": "k voor k_nearest."
              },
              "distance": {
                "label": "Afstand",
                "description": "Afstandsdrempel."
              },
              "row_standardize": {
                "label": "Rijstandaardisatie",
                "description": "Rijstandaardisatie op de gewichten toepassen."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Celgrootte van het uitvoerraster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerraster."
              }
            }
          },
          "geographically_weighted_regression_raster": {
            "name": "Inhomogeen intensiteitsraster",
            "description": "Schat een GWR en geeft rasteroppervlakken met lokale coëfficiënten als uitvoer.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "response_field": {
                "label": "Responsveld",
                "description": "Responsvariabele."
              },
              "predictor_fields": {
                "label": "Voorspellervelden",
                "description": "Predictorvelden."
              },
              "bandwidth": {
                "label": "Bandbreedte",
                "description": "Kernelbandbreedte."
              },
              "kernel": {
                "label": "Kernel",
                "description": "Kerneltype."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Celgrootte van het uitvoerraster."
              },
              "output_prefix": {
                "label": "Uitvoervoorvoegsel",
                "description": "Voorvoegsel van het uitvoerraster."
              }
            }
          },
          "inhomogeneous_intensity_raster": {
            "name": "Optellen",
            "description": "Berekent een oppervlak met kerneldichtheidsschatting (KDE) dat de ruimtelijke puntintensiteit visualiseert. Toont hotspots en coldspots die verder gaan dan eenvoudige dichtheid.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met punten."
              },
              "bandwidth": {
                "label": "Bandbreedte",
                "description": "Kernelbandbreedte."
              },
              "kernel": {
                "label": "Kernel",
                "description": "Kerneltype."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Celgrootte van het uitvoerraster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerraster met intensiteit."
              }
            }
          },
          "add": {
            "name": "Gemiddelde-overlay",
            "description": "Telt twee rasters cel voor cel op.",
            "params": {
              "input1": {
                "label": "Invoer1",
                "description": "Eerste invoerraster (padtekenreeks of getypeerd rasterobject)."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Tweede invoerraster (padtekenreeks of getypeerd rasterobject)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, blijft de uitvoer in het geheugen en wordt deze geretourneerd als een memory://-rasterhandle."
              }
            }
          },
          "average_overlay": {
            "name": "Booleaans AND",
            "description": "Berekent per cel het gemiddelde over een rasterstapel, waarbij NoData wordt genegeerd tenzij alle invoer NoData is.",
            "params": {
              "input_rasters": {
                "label": "Invoerrasters",
                "description": "Invoerrasterstapel als een array met paden of als een tekenreeks gescheiden door puntkomma's of komma's."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters automatisch geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonsteringsmethode bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, blijft het resultaat in het geheugen."
              }
            }
          },
          "bool_and": {
            "name": "Booleaans AND",
            "description": "Berekent cel voor cel een logische AND van twee rasters.",
            "params": {
              "input1": {
                "label": "Invoer1",
                "description": "Eerste invoerraster (padtekenreeks of getypeerd rasterobject)."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Tweede invoerraster (padtekenreeks of getypeerd rasterobject)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, blijft de uitvoer in het geheugen en wordt deze geretourneerd als een memory://-rasterhandle."
              }
            }
          },
          "bool_not": {
            "name": "Booleaans NOT",
            "description": "Berekent een logische NOT van elke rastercel, met als uitvoer 1 voor cellen met de waarde nul en anders 0.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              }
            }
          },
          "bool_or": {
            "name": "Booleaans OR",
            "description": "Berekent cel voor cel een logische OR van twee rasters.",
            "params": {
              "input1": {
                "label": "Invoer1",
                "description": "Eerste invoerraster (padtekenreeks of getypeerd rasterobject)."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Tweede invoerraster (padtekenreeks of getypeerd rasterobject)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, blijft de uitvoer in het geheugen en wordt deze geretourneerd als een memory://-rasterhandle."
              }
            }
          },
          "bool_xor": {
            "name": "Booleaans XOR",
            "description": "Berekent cel voor cel een logische XOR van twee rasters.",
            "params": {
              "input1": {
                "label": "Invoer1",
                "description": "Eerste invoerraster (padtekenreeks of getypeerd rasterobject)."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Tweede invoerraster (padtekenreeks of getypeerd rasterobject)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, blijft de uitvoer in het geheugen en wordt deze geretourneerd als een memory://-rasterhandle."
              }
            }
          },
          "count_if": {
            "name": "Tellen indien",
            "description": "Telt het aantal invoerrasters waarvan de cel gelijk is aan een vergelijkingswaarde.",
            "params": {
              "input_rasters": {
                "label": "Invoerrasters",
                "description": "Invoerrasterstapel als een array met paden of als een tekenreeks gescheiden door puntkomma's of komma's."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters automatisch geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonsteringsmethode bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "comparison_value": {
                "label": "Vergelijkingswaarde",
                "description": "Vergelijkingswaarde die binnen de rasterstapel wordt geteld."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, blijft het resultaat in het geheugen."
              }
            }
          },
          "divide": {
            "name": "Delen",
            "description": "Deelt het eerste raster cel voor cel door het tweede.",
            "params": {
              "input1": {
                "label": "Invoer1",
                "description": "Eerste invoerraster (padtekenreeks of getypeerd rasterobject)."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Tweede invoerraster (padtekenreeks of getypeerd rasterobject)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, blijft de uitvoer in het geheugen en wordt deze geretourneerd als een memory://-rasterhandle."
              }
            }
          },
          "highest_position": {
            "name": "Hoogste positie",
            "description": "Retourneert voor elke cel de op nul gebaseerde index in de rasterstapel met de hoogste waarde.",
            "params": {
              "input_rasters": {
                "label": "Invoerrasters",
                "description": "Invoerrasterstapel als een array met paden of als een tekenreeks gescheiden door puntkomma's of komma's."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters automatisch geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonsteringsmethode bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, blijft het resultaat in het geheugen."
              }
            }
          },
          "lowest_position": {
            "name": "Laagste positie",
            "description": "Retourneert voor elke cel de op nul gebaseerde index in de rasterstapel met de laagste waarde.",
            "params": {
              "input_rasters": {
                "label": "Invoerrasters",
                "description": "Invoerrasterstapel als een array met paden of als een tekenreeks gescheiden door puntkomma's of komma's."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters automatisch geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonsteringsmethode bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, blijft het resultaat in het geheugen."
              }
            }
          },
          "max_absolute_overlay": {
            "name": "Maximale absolute overlay",
            "description": "Berekent per cel de maximale absolute waarde over een rasterstapel, waarbij NoData wordt doorgegeven als een invoercel NoData is.",
            "params": {
              "input_rasters": {
                "label": "Invoerrasters",
                "description": "Invoerrasterstapel als een array met paden of als een tekenreeks gescheiden door puntkomma's of komma's."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters automatisch geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonsteringsmethode bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, blijft het resultaat in het geheugen."
              }
            }
          },
          "max_overlay": {
            "name": "Maximum-overlay",
            "description": "Berekent per cel het maximum over een rasterstapel, waarbij NoData wordt doorgegeven als een invoercel NoData is.",
            "params": {
              "input_rasters": {
                "label": "Invoerrasters",
                "description": "Invoerrasterstapel als een array met paden of als een tekenreeks gescheiden door puntkomma's of komma's."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters automatisch geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonsteringsmethode bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, blijft het resultaat in het geheugen."
              }
            }
          },
          "min_absolute_overlay": {
            "name": "Minimale absolute overlay",
            "description": "Berekent per cel de minimale absolute waarde over een rasterstapel, waarbij NoData wordt doorgegeven als een invoercel NoData is.",
            "params": {
              "input_rasters": {
                "label": "Invoerrasters",
                "description": "Invoerrasterstapel als een array met paden of als een tekenreeks gescheiden door puntkomma's of komma's."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters automatisch geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonsteringsmethode bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, blijft het resultaat in het geheugen."
              }
            }
          },
          "min_overlay": {
            "name": "Minimum-overlay",
            "description": "Berekent per cel het minimum over een rasterstapel, waarbij NoData wordt doorgegeven als een invoercel NoData is.",
            "params": {
              "input_rasters": {
                "label": "Invoerrasters",
                "description": "Invoerrasterstapel als een array met paden of als een tekenreeks gescheiden door puntkomma's of komma's."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters automatisch geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonsteringsmethode bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, blijft het resultaat in het geheugen."
              }
            }
          },
          "modulo": {
            "name": "Modulo",
            "description": "Berekent cel voor cel de rest van de deling van het eerste raster door het tweede.",
            "params": {
              "input1": {
                "label": "Invoer1",
                "description": "Eerste invoerraster (padtekenreeks of getypeerd rasterobject)."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Tweede invoerraster (padtekenreeks of getypeerd rasterobject)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, blijft de uitvoer in het geheugen en wordt deze geretourneerd als een memory://-rasterhandle."
              }
            }
          },
          "multiply": {
            "name": "Vermenigvuldigen",
            "description": "Vermenigvuldigt twee rasters cel voor cel.",
            "params": {
              "input1": {
                "label": "Invoer1",
                "description": "Eerste invoerraster (padtekenreeks of getypeerd rasterobject)."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Tweede invoerraster (padtekenreeks of getypeerd rasterobject)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, blijft de uitvoer in het geheugen en wordt deze geretourneerd als een memory://-rasterhandle."
              }
            }
          },
          "multiply_overlay": {
            "name": "Vermenigvuldigings-overlay",
            "description": "Berekent per cel het product over een rasterstapel, waarbij NoData wordt doorgegeven als een invoercel NoData is.",
            "params": {
              "input_rasters": {
                "label": "Invoerrasters",
                "description": "Invoerrasterstapel als een array met paden of als een tekenreeks gescheiden door puntkomma's of komma's."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters automatisch geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonsteringsmethode bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, blijft het resultaat in het geheugen."
              }
            }
          },
          "percent_equal_to": {
            "name": "Percentage gelijk aan",
            "description": "Berekent per cel het aandeel rasters in een stapel waarvan de waarden gelijk zijn aan het vergelijkingsraster.",
            "params": {
              "input_rasters": {
                "label": "Invoerrasters",
                "description": "Invoerrasterstapel als een array met paden of als een tekenreeks gescheiden door puntkomma's of komma's."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters automatisch geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonsteringsmethode bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "comparison": {
                "label": "Vergelijking",
                "description": "Pad naar het vergelijkingsraster of een rasterhandle in het geheugen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, blijft het resultaat in het geheugen."
              }
            }
          },
          "percent_greater_than": {
            "name": "Percentage groter dan",
            "description": "Berekent per cel het aandeel rasters in een stapel waarvan de waarden groter zijn dan het vergelijkingsraster.",
            "params": {
              "input_rasters": {
                "label": "Invoerrasters",
                "description": "Invoerrasterstapel als een array met paden of als een tekenreeks gescheiden door puntkomma's of komma's."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters automatisch geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonsteringsmethode bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "comparison": {
                "label": "Vergelijking",
                "description": "Pad naar het vergelijkingsraster of een rasterhandle in het geheugen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, blijft het resultaat in het geheugen."
              }
            }
          },
          "percent_less_than": {
            "name": "Percentage kleiner dan",
            "description": "Berekent per cel het aandeel rasters in een stapel waarvan de waarden kleiner zijn dan het vergelijkingsraster.",
            "params": {
              "input_rasters": {
                "label": "Invoerrasters",
                "description": "Invoerrasterstapel als een array met paden of als een tekenreeks gescheiden door puntkomma's of komma's."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters automatisch geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonsteringsmethode bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "comparison": {
                "label": "Vergelijking",
                "description": "Pad naar het vergelijkingsraster of een rasterhandle in het geheugen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, blijft het resultaat in het geheugen."
              }
            }
          },
          "pick_from_list": {
            "name": "Kiezen uit lijst",
            "description": "Selecteert per cel waarden uit een rasterstapel met behulp van een op nul gebaseerd positieraster.",
            "params": {
              "input_rasters": {
                "label": "Invoerrasters",
                "description": "Invoerrasterstapel als een array met paden of als een tekenreeks gescheiden door puntkomma's of komma's."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters automatisch geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonsteringsmethode bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "pos_input": {
                "label": "Positieve invoer",
                "description": "Nulgebaseerd raster met posities in de stapel."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "power": {
            "name": "Macht",
            "description": "Verheft het eerste raster cel voor cel tot de macht van het tweede.",
            "params": {
              "input1": {
                "label": "Invoer1",
                "description": "Eerste invoerraster (padtekenreeks of getypeerd rasterobject)."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Tweede invoerraster (padtekenreeks of getypeerd rasterobject)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, blijft de uitvoer in het geheugen en wordt deze geretourneerd als een memory://-rasterhandle."
              }
            }
          },
          "standard_deviation_overlay": {
            "name": "Standaardafwijkings-overlay",
            "description": "Berekent per cel de standaardafwijking over een rasterstapel, waarbij NoData wordt doorgegeven als een invoercel NoData is.",
            "params": {
              "input_rasters": {
                "label": "Invoerrasters",
                "description": "Invoerrasterstapel als een array met paden of als een tekenreeks gescheiden door puntkomma's of komma's."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters automatisch geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonsteringsmethode bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, blijft het resultaat in het geheugen."
              }
            }
          },
          "subtract": {
            "name": "Aftrekken",
            "description": "Trekt het tweede raster cel voor cel af van het eerste.",
            "params": {
              "input1": {
                "label": "Invoer1",
                "description": "Eerste invoerraster (padtekenreeks of getypeerd rasterobject)."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Tweede invoerraster (padtekenreeks of getypeerd rasterobject)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, blijft de uitvoer in het geheugen en wordt deze geretourneerd als een memory://-rasterhandle."
              }
            }
          },
          "sum_overlay": {
            "name": "Som-overlay",
            "description": "Berekent per cel de som over een rasterstapel, waarbij NoData wordt doorgegeven als een invoercel NoData is.",
            "params": {
              "input_rasters": {
                "label": "Invoerrasters",
                "description": "Invoerrasterstapel als een array met paden of als een tekenreeks gescheiden door puntkomma's of komma's."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters automatisch geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonsteringsmethode bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, blijft het resultaat in het geheugen."
              }
            }
          },
          "update_nodata_cells": {
            "name": "NoData-cellen bijwerken",
            "description": "Vult NoData-cellen in input1 met de overeenkomstige geldige cellen uit input2.",
            "params": {
              "input1": {
                "label": "Invoer1",
                "description": "Primair raster dat wordt bijgewerkt."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Secundair raster dat de vervangingswaarden levert."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "weighted_overlay": {
            "name": "Gewogen overlay",
            "description": "Combineert factorrasters met genormaliseerde gewichten, optionele kostenvlaggen en optionele binaire beperkingen.",
            "params": {
              "factors": {
                "label": "Factoren",
                "description": "Invoerrasterstapel met factoren."
              },
              "weights": {
                "label": "Gewichten",
                "description": "Numerieke gewichten die bij elk factorraster horen."
              },
              "cost": {
                "label": "Kosten",
                "description": "Optionele booleaanse vlaggen die kostenfactoren aangeven."
              },
              "constraints": {
                "label": "Beperkingen",
                "description": "Optionele rasterstapel met beperkingen; waarden <= 0 dwingen de uitvoer naar nul."
              },
              "scale_max": {
                "label": "Schaalmaximum",
                "description": "Maximale schaalwaarde die na de normalisatie van de factoren wordt gebruikt."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "weighted_sum": {
            "name": "Gewogen som",
            "description": "Berekent een gewogen som over een rasterstapel nadat de gewichten zijn genormaliseerd zodat ze optellen tot één.",
            "params": {
              "input_rasters": {
                "label": "Invoerrasters",
                "description": "Invoerrasterstapel."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters automatisch geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonsteringsmethode bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "weights": {
                "label": "Gewichten",
                "description": "Numerieke gewichten die bij elk invoerraster horen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "image_correlation_neighbourhood_analysis": {
            "name": "Beeldcorrelatie-omgevingsanalyse",
            "description": "Voert een correlatieanalyse in een bewegend venster uit tussen twee rasters en retourneert rasters met de correlatie en de p-waarde.",
            "params": {
              "input1": {
                "label": "Invoer1",
                "description": "Pad naar het eerste invoerraster."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Pad naar het tweede invoerraster."
              },
              "filter_size": {
                "label": "Filtergrootte",
                "description": "Grootte van het bewegende venster in cellen (minimaal 3, standaard 11)."
              },
              "correlation_stat": {
                "label": "Correlatiestatistiek",
                "description": "Correlatiemaat: pearson, spearman of kendall (standaard pearson)."
              },
              "output1": {
                "label": "Uitvoer1",
                "description": "Optioneel uitvoerpad voor het correlatieraster."
              },
              "output2": {
                "label": "Uitvoer2",
                "description": "Optioneel uitvoerpad voor het raster met significantie (p-waarde)."
              }
            }
          },
          "natural_neighbour_interpolation": {
            "name": "Natural-neighbour-interpolatie",
            "description": "Interpoleert een raster uit puntmonsters met echte oppervlakteweging van natuurlijke buren volgens Sibson.",
            "params": {
              "points": {
                "label": "Punten",
                "description": "Invoervectorlaag met punten."
              },
              "field_name": {
                "label": "Veldnaam",
                "description": "Optioneel numeriek attribuutveld; standaard wordt teruggevallen op FID."
              },
              "use_z": {
                "label": "Z gebruiken",
                "description": "Gebruik Z-waarden uit de puntgeometrie in plaats van attributen."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Celgrootte van de uitvoer wanneer base_raster niet is opgegeven."
              },
              "base_raster": {
                "label": "Basisraster",
                "description": "Optioneel basisraster dat de geometrie van de uitvoer bepaalt."
              },
              "clip_to_hull": {
                "label": "Uitsnijden op omhullende",
                "description": "Beperk de interpolatie tot de convexe omhullende van de punten."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "nearest_neighbour_interpolation": {
            "name": "Nearest-neighbour-interpolatie",
            "description": "Interpoleert een raster uit puntmonsters door aan elke cel de waarde van het dichtstbijzijnde monster toe te kennen.",
            "params": {
              "points": {
                "label": "Punten",
                "description": "Invoervectorlaag met punten."
              },
              "field_name": {
                "label": "Veldnaam",
                "description": "Optioneel numeriek attribuutveld; standaard wordt teruggevallen op FID."
              },
              "use_z": {
                "label": "Z gebruiken",
                "description": "Gebruik Z-waarden uit de puntgeometrie in plaats van attributen."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Celgrootte van de uitvoer wanneer base_raster niet is opgegeven."
              },
              "base_raster": {
                "label": "Basisraster",
                "description": "Optioneel basisraster dat de geometrie van de uitvoer bepaalt."
              },
              "max_dist": {
                "label": "Maximale afstand",
                "description": "Optionele maximale zoekafstand in kaarteenheden; standaard oneindig."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "conditional_evaluation": {
            "name": "Voorwaardelijke evaluatie",
            "description": "Voert een voorwaardelijke if-then-else-evaluatie uit op rastercellen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerraster."
              },
              "statement": {
                "label": "Instructie",
                "description": "Voorwaardelijke expressie die per cel wordt geëvalueerd."
              },
              "true": {
                "label": "Waar",
                "description": "Waarde of raster/expressie die wordt gebruikt wanneer de voorwaarde waar is."
              },
              "false": {
                "label": "Onwaar",
                "description": "Waarde of raster/expressie die wordt gebruikt wanneer de voorwaarde onwaar is."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "reclass": {
            "name": "Herclassificeren",
            "description": "Herclassificeert rasterwaarden met bereiken of met paren voor exacte toewijzing.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerraster."
              },
              "reclass_values": {
                "label": "Herclassificatiewaarden",
                "description": "Herclassificatiewaarden als rijen van [new, from, to_less_than] of [new, old] wanneer assign_mode=true."
              },
              "assign_mode": {
                "label": "Toewijzingsmodus",
                "description": "Indien true, wordt de exacte toekenningsmodus met paren [new_value, old_value] gebruikt."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad. Indien weggelaten, blijft het resultaat in het geheugen."
              }
            }
          },
          "reclass_equal_interval": {
            "name": "Herclassificeren met gelijke intervallen",
            "description": "Herclassificeert rasterwaarden in intervallen van gelijke breedte over een optioneel waardebereik.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerraster."
              },
              "interval_size": {
                "label": "Intervalgrootte",
                "description": "Klassenbreedte bij gelijke intervallen."
              },
              "start_value": {
                "label": "Beginwaarde",
                "description": "Optionele ondergrens voor de herclassificatie; standaard het minimum van het raster."
              },
              "end_value": {
                "label": "Eindwaarde",
                "description": "Optionele bovengrens voor de herclassificatie; standaard het maximum van het raster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad. Indien weggelaten, blijft het resultaat in het geheugen."
              }
            }
          },
          "buffer_raster": {
            "name": "Raster bufferen",
            "description": "Maakt een binaire bufferzone binnen een opgegeven afstand rond rastercellen die niet nul en niet NoData zijn.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerraster waarin cellen die niet nul zijn de te bufferen doelen vormen."
              },
              "buffer_size": {
                "label": "Buffergrootte",
                "description": "Drempelwaarde voor de bufferafstand."
              },
              "grid_cell_units": {
                "label": "Rastereenheden",
                "description": "Indien true, wordt buffer_size geïnterpreteerd in rastercellen in plaats van in kaarteenheden."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "cost_allocation": {
            "name": "Kostenallocatie",
            "description": "Wijst elke cel toe aan een brongebied met behulp van een backlinkraster uit een kostenafstandsanalyse.",
            "params": {
              "source": {
                "label": "Bron",
                "description": "Bronraster met positieve broncellen."
              },
              "backlink": {
                "label": "Terugkoppeling",
                "description": "Backlink-raster afkomstig van cost_distance."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "cost_distance": {
            "name": "Kostenafstand",
            "description": "Berekent rasters met geaccumuleerde reiskosten en backlinks uit bron- en kostenoppervlakken.",
            "params": {
              "source": {
                "label": "Bron",
                "description": "Bronraster met positieve broncellen."
              },
              "cost": {
                "label": "Kosten",
                "description": "Kosten-/frictieraster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad voor de geaccumuleerde kosten."
              },
              "backlink_output": {
                "label": "Backlink-uitvoer",
                "description": "Optioneel uitvoerrasterpad voor het backlink-raster."
              }
            }
          },
          "cost_pathway": {
            "name": "Kostenpad",
            "description": "Traceert paden met de laagste kosten vanaf bestemmingscellen met behulp van een backlinkraster.",
            "params": {
              "destination": {
                "label": "Bestemming",
                "description": "Bestemmingsraster met positieve bestemmingscellen."
              },
              "backlink": {
                "label": "Terugkoppeling",
                "description": "Backlink-raster afkomstig van cost_distance."
              },
              "zero_background": {
                "label": "Achtergrond nul",
                "description": "Indien true, is de achtergrond van de uitvoer nul in plaats van NoData."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "euclidean_allocation": {
            "name": "Euclidische allocatie",
            "description": "Kent aan elke geldige cel de waarde van de dichtstbijzijnde doelcel toe die niet nul is.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerraster met doelcellen die niet nul zijn."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "euclidean_distance": {
            "name": "Euclidische afstand",
            "description": "Berekent de euclidische afstand tot de dichtstbijzijnde doelcel in een raster die niet nul is.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerraster met doelcellen die niet nul zijn."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "abs": {
            "name": "Absolute waarde",
            "description": "Berekent de absolute waarde van elke rastercel.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              }
            }
          },
          "aggregate_raster": {
            "name": "Raster aggregeren",
            "description": "Verlaagt de rasterresolutie door blokken te aggregeren met gemiddelde, som, min, max of bereik.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerraster."
              },
              "aggregation_factor": {
                "label": "Aggregatiefactor",
                "description": "Blokgrootte in broncellen."
              },
              "aggregation_type": {
                "label": "Aggregatietype",
                "description": "Een van mean, sum, maximum, minimum of range."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "anova": {
            "name": "ANOVA",
            "description": "Voert een eenweg-ANOVA uit op rasterwaarden, gegroepeerd per categorie van een klasseraster.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het meetraster."
              },
              "features": {
                "label": "Kenmerken",
                "description": "Pad naar het klasse-/categorieraster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van het HTML-rapport (alias: output_html_file)."
              }
            }
          },
          "arccos": {
            "name": "Arccos",
            "description": "Berekent de inverse cosinus (arccos) van elke rastercel.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              }
            }
          },
          "arcosh": {
            "name": "Arcosh",
            "description": "Berekent de inverse cosinus hyperbolicus van elke rastercel.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              }
            }
          },
          "arcsin": {
            "name": "Arcsin",
            "description": "Berekent de inverse sinus (arcsin) van elke rastercel.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              }
            }
          },
          "arctan": {
            "name": "Arctan",
            "description": "Berekent de inverse tangens (arctan) van elke rastercel.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              }
            }
          },
          "arsinh": {
            "name": "Arsinh",
            "description": "Berekent de inverse sinus hyperbolicus van elke rastercel.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              }
            }
          },
          "artanh": {
            "name": "Artanh",
            "description": "Berekent de inverse tangens hyperbolicus van elke rastercel.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              }
            }
          },
          "atan2": {
            "name": "Atan2",
            "description": "Berekent cel voor cel de inverse tangens over vier kwadranten met twee rasters.",
            "params": {
              "input1": {
                "label": "Invoer1",
                "description": "Eerste invoerraster (padtekenreeks of getypeerd rasterobject)."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Tweede invoerraster (padtekenreeks of getypeerd rasterobject)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, blijft de uitvoer in het geheugen en wordt deze geretourneerd als een memory://-rasterhandle."
              }
            }
          },
          "block_maximum": {
            "name": "Blokmaximum",
            "description": "Rastert puntobjecten door aan elke uitvoercel de hoogste waargenomen waarde toe te kennen.",
            "params": {
              "points": {
                "label": "Punten",
                "description": "Invoervectorlaag met punten."
              },
              "field_name": {
                "label": "Veldnaam",
                "description": "Optioneel numeriek attribuutveld om te rasteriseren; standaard wordt teruggevallen op FID."
              },
              "use_z": {
                "label": "Z gebruiken",
                "description": "Gebruik Z-waarden uit de puntgeometrie in plaats van attributen."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Celgrootte van de uitvoer wanneer base_raster niet is opgegeven."
              },
              "base_raster": {
                "label": "Basisraster",
                "description": "Optioneel basisraster dat de geometrie van de uitvoer bepaalt."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "block_minimum": {
            "name": "Blokminimum",
            "description": "Rastert puntobjecten door aan elke uitvoercel de laagste waargenomen waarde toe te kennen.",
            "params": {
              "points": {
                "label": "Punten",
                "description": "Invoervectorlaag met punten."
              },
              "field_name": {
                "label": "Veldnaam",
                "description": "Optioneel numeriek attribuutveld om te rasteriseren; standaard wordt teruggevallen op FID."
              },
              "use_z": {
                "label": "Z gebruiken",
                "description": "Gebruik Z-waarden uit de puntgeometrie in plaats van attributen."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Celgrootte van de uitvoer wanneer base_raster niet is opgegeven."
              },
              "base_raster": {
                "label": "Basisraster",
                "description": "Optioneel basisraster dat de geometrie van de uitvoer bepaalt."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "boundary_shape_complexity": {
            "name": "Grensvormcomplexiteit",
            "description": "Berekent de complexiteit van de grensvorm van rastervlakken met een takmaat op basis van een door lijnverdunning verkregen skelet.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerraster met patch-ID's met positieve geheeltallige ID's."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "ceil": {
            "name": "Afronden naar boven",
            "description": "Rondt elke rastercel naar boven af op het dichtstbijzijnde gehele getal.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              }
            }
          },
          "centroid_raster": {
            "name": "Zwaartepunt (raster)",
            "description": "Berekent de zwaartepuntcel voor elke vlak-ID met een positieve waarde in een raster.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerraster met patches."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "clip_raster_to_polygon": {
            "name": "Raster uitsnijden op polygoon",
            "description": "Knipt een raster bij tot de omvang van polygonen; cellen buiten de polygonen worden op NoData gezet.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerraster."
              },
              "polygons": {
                "label": "Polygonen",
                "description": "Invoervectorlaag met polygonen."
              },
              "maintain_dimensions": {
                "label": "Afmetingen behouden",
                "description": "Behoud de oorspronkelijke rasterafmetingen in plaats van bij te snijden tot de omvang van het polygoon."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "clump": {
            "name": "Clusteren (clump)",
            "description": "Groepeert aaneengesloten rastercellen met gelijke waarden tot unieke vlak-ID's.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Categorisch invoerraster."
              },
              "diag": {
                "label": "Diagonaal",
                "description": "Indien true, wordt diagonale connectiviteit meegenomen (8 buren); anders worden 4 buren gebruikt."
              },
              "zero_background": {
                "label": "Achtergrond nul",
                "description": "Indien true, worden cellen met waarde nul als achtergrond behandeld en blijven ze nul in de uitvoer."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "cos": {
            "name": "Cos",
            "description": "Berekent de cosinus van de waarde van elke rastercel.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              }
            }
          },
          "cosh": {
            "name": "Cosh",
            "description": "Berekent de cosinus hyperbolicus van elke rastercel.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              }
            }
          },
          "create_plane": {
            "name": "Vlak maken",
            "description": "Maakt een raster uit een vlakvergelijking met behulp van de geometrie van een basisraster.",
            "params": {
              "base": {
                "label": "Basis",
                "description": "Basisraster dat de geometrie van de uitvoer definieert."
              },
              "gradient": {
                "label": "Gradiënt",
                "description": "Hellingsgradiënt van het vlak in graden."
              },
              "aspect": {
                "label": "Expositie",
                "description": "Expositie van het vlak in graden."
              },
              "constant": {
                "label": "Constante",
                "description": "Additieve constante term in de vlakvergelijking."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "crispness_index": {
            "name": "Scherpte-index",
            "description": "Berekent de scherpte-index (crispness) voor een raster met lidmaatschapswaarschijnlijkheden.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerraster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van het HTML-rapport (alias: output_html_file)."
              }
            }
          },
          "cross_tabulation": {
            "name": "Kruistabel",
            "description": "Voert een kruistabellering uit op twee categorische rasters.",
            "params": {
              "input1": {
                "label": "Invoer1",
                "description": "Pad naar invoerraster 1."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Pad naar invoerraster 2."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van het HTML-rapport (alias: output_html_file)."
              }
            }
          },
          "cumulative_distribution": {
            "name": "Cumulatieve verdeling",
            "description": "Zet rasterwaarden om in cumulatieve verdelingswaarschijnlijkheden.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerraster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "dbscan": {
            "name": "DBSCAN",
            "description": "Voert een niet-gesuperviseerde, op dichtheid gebaseerde DBSCAN-clustering uit op een stapel invoerrasters.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Door komma's of puntkomma's gescheiden lijst of JSON-array met paden naar invoerrasters (kenmerkbanden)."
              },
              "scaling_method": {
                "label": "Schalingsmethode",
                "description": "Schaling van kenmerken: 'none' (standaard), 'normalize' (bereik 0-1) of 'standardize' (z-scores)."
              },
              "search_distance": {
                "label": "Zoekafstand",
                "description": "Epsilon: zoekradius van de omgeving in de kenmerkruimte (standaard 1.0)."
              },
              "min_points": {
                "label": "Minimaal aantal punten",
                "description": "Minimumaantal buren binnen epsilon voor een kernpunt (standaard 5)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad voor de labels met cluster-ID's."
              }
            }
          },
          "decrement": {
            "name": "Verlagen",
            "description": "Trekt een waarde (standaard 1.0) af van elke rastercel die niet NoData is.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand."
              },
              "value": {
                "label": "Waarde",
                "description": "De waarde die van elke cel wordt afgetrokken. Standaard 1.0."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              }
            }
          },
          "edge_proportion": {
            "name": "Randaandeel",
            "description": "Berekent het aandeel van de cellen van elk vlak dat randcel is en projecteert dit terug op de vlakcellen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerraster met patch-ID's met positieve geheeltallige ID's."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "equal_to": {
            "name": "Gelijk aan",
            "description": "Toetst cel voor cel of twee rasters gelijk zijn.",
            "params": {
              "input1": {
                "label": "Invoer1",
                "description": "Eerste invoerraster (padtekenreeks of getypeerd rasterobject)."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Tweede invoerraster (padtekenreeks of getypeerd rasterobject)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, blijft de uitvoer in het geheugen en wordt deze geretourneerd als een memory://-rasterhandle."
              }
            }
          },
          "erase_polygon_from_raster": {
            "name": "Polygoon wissen uit raster",
            "description": "Zet rastercellen binnen polygonen op NoData en behoudt cellen in de gaten van polygonen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerraster."
              },
              "polygons": {
                "label": "Polygonen",
                "description": "Invoervectorlaag met polygonen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "exp": {
            "name": "Exp",
            "description": "Berekent e tot de macht van elke rastercel.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              }
            }
          },
          "exp2": {
            "name": "Exp2",
            "description": "Berekent 2 tot de macht van elke rastercel.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              }
            }
          },
          "fft_random_field": {
            "name": "FFT-willekeurig veld",
            "description": "Maakt een ruimtelijk geautocorreleerd willekeurig veld met FFT-spectrale synthese.",
            "params": {
              "base_raster": {
                "label": "Basisraster",
                "description": "Pad naar het basisraster dat voor de rastergeometrie wordt gebruikt."
              },
              "range": {
                "label": "Bereik",
                "description": "Benaderd correlatiebereik in kaarteenheden. Standaard: 1.0."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "filter_raster_features_by_area": {
            "name": "Rasterobjecten filteren op oppervlakte",
            "description": "Verwijdert met gehele getallen gelabelde rasterelementen die kleiner zijn dan een drempel voor het aantal cellen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerraster met geheeltallige klasselabels."
              },
              "threshold": {
                "label": "Drempelwaarde",
                "description": "Minimale objectgrootte in cellen om te behouden."
              },
              "zero_background": {
                "label": "Achtergrond nul",
                "description": "Indien true, krijgen verwijderde objecten de waarde 0; anders krijgen verwijderde objecten NoData."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad. Indien weggelaten, blijft het resultaat in het geheugen."
              }
            }
          },
          "find_patch_edge_cells": {
            "name": "Patchrandcellen vinden",
            "description": "Identificeert randcellen voor elke positieve vlak-ID in een raster; vlakcellen die geen rand zijn, worden op nul gezet.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerraster met patch-ID's; positieve waarden worden als patchcellen behandeld."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "floor": {
            "name": "Afronden naar beneden",
            "description": "Rondt elke rastercel naar beneden af op het dichtstbijzijnde gehele getal.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              }
            }
          },
          "greater_than": {
            "name": "Groter dan",
            "description": "Toetst cel voor cel of het eerste raster groter is dan het tweede.",
            "params": {
              "input1": {
                "label": "Invoer1",
                "description": "Eerste invoerraster (padtekenreeks of getypeerd rasterobject)."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Tweede invoerraster (padtekenreeks of getypeerd rasterobject)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, blijft de uitvoer in het geheugen en wordt deze geretourneerd als een memory://-rasterhandle."
              }
            }
          },
          "heat_map": {
            "name": "Heatmap",
            "description": "Genereert een heatmapraster op basis van kerneldichtheid uit puntwaarnemingen.",
            "params": {
              "points": {
                "label": "Punten",
                "description": "Invoervectorlaag met punten."
              },
              "field_name": {
                "label": "Veldnaam",
                "description": "Optioneel numeriek gewichtsveld; standaard ongewogen voorkomens."
              },
              "bandwidth": {
                "label": "Bandbreedte",
                "description": "Kernelbandbreedte in kaarteenheden."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Celgrootte van de uitvoer wanneer base_raster niet is opgegeven."
              },
              "base_raster": {
                "label": "Basisraster",
                "description": "Optioneel basisraster dat de geometrie van de uitvoer bepaalt."
              },
              "kernel_function": {
                "label": "Kernelfunctie",
                "description": "Type kernelfunctie; standaard quartic."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "idw_interpolation": {
            "name": "IDW-interpolatie",
            "description": "Interpoleert een raster uit puntmonsters met inverse afstandsweging.",
            "params": {
              "points": {
                "label": "Punten",
                "description": "Invoervectorlaag met punten."
              },
              "field_name": {
                "label": "Veldnaam",
                "description": "Optioneel numeriek attribuutveld; standaard wordt teruggevallen op FID."
              },
              "use_z": {
                "label": "Z gebruiken",
                "description": "Gebruik Z-waarden uit de puntgeometrie in plaats van attributen."
              },
              "weight": {
                "label": "Gewicht",
                "description": "IDW-afstandsexponent; standaard 2.0."
              },
              "radius": {
                "label": "Straal",
                "description": "Optionele omgevingsradius in kaarteenheden; <=0 gebruikt de k-naaste-buren-terugval."
              },
              "min_points": {
                "label": "Minimaal aantal punten",
                "description": "Minimaal aantal te gebruiken buren; standaard 0."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Celgrootte van de uitvoer wanneer base_raster niet is opgegeven."
              },
              "base_raster": {
                "label": "Basisraster",
                "description": "Optioneel basisraster dat de geometrie van de uitvoer bepaalt."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "image_autocorrelation": {
            "name": "Beeldautocorrelatie",
            "description": "Berekent Moran's I voor een of meer rasterbeelden.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Lijst met invoerrasterpaden."
              },
              "contiguity": {
                "label": "Contiguïteit",
                "description": "Omgevingsregel: rook, king/queen of bishop."
              }
            }
          },
          "image_correlation": {
            "name": "Beeldcorrelatie",
            "description": "Berekent de Pearson-correlatiematrix voor twee of meer rasterbeelden.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Lijst met invoerrasterpaden."
              }
            }
          },
          "image_regression": {
            "name": "Beeldregressie",
            "description": "Voert een bivariate lineaire regressie uit tussen twee rasters en geeft een residuraster en een rapport als uitvoer.",
            "params": {
              "input1": {
                "label": "Invoer1",
                "description": "Rasterpad van de onafhankelijke variabele."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Rasterpad van de afhankelijke variabele."
              },
              "standardize_residuals": {
                "label": "Residuen standaardiseren",
                "description": "Of residuen moeten worden gestandaardiseerd met de standaardfout van het model."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad voor het residuenraster."
              }
            }
          },
          "increment": {
            "name": "Verhogen",
            "description": "Telt een waarde (standaard 1.0) op bij elke rastercel die niet NoData is.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand."
              },
              "value": {
                "label": "Waarde",
                "description": "De waarde die aan elke cel wordt toegevoegd. Standaard 1.0."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              }
            }
          },
          "inplace_add": {
            "name": "In-place optellen",
            "description": "Voert een optelling ter plaatse uit (input1 += input2).",
            "params": {
              "input1": {
                "label": "Invoer1",
                "description": "Te wijzigen invoerraster."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Invoerrasterpad of numerieke constante."
              }
            }
          },
          "inplace_divide": {
            "name": "In-place delen",
            "description": "Voert een deling ter plaatse uit (input1 /= input2).",
            "params": {
              "input1": {
                "label": "Invoer1",
                "description": "Te wijzigen invoerraster."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Invoerrasterpad of numerieke constante ongelijk aan nul."
              }
            }
          },
          "inplace_multiply": {
            "name": "In-place vermenigvuldigen",
            "description": "Voert een vermenigvuldiging ter plaatse uit (input1 *= input2).",
            "params": {
              "input1": {
                "label": "Invoer1",
                "description": "Te wijzigen invoerraster."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Invoerrasterpad of numerieke constante."
              }
            }
          },
          "inplace_subtract": {
            "name": "In-place aftrekken",
            "description": "Voert een aftrekking ter plaatse uit (input1 -= input2).",
            "params": {
              "input1": {
                "label": "Invoer1",
                "description": "Te wijzigen invoerraster."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Invoerrasterpad of numerieke constante."
              }
            }
          },
          "integer_division": {
            "name": "Geheeltallige deling",
            "description": "Deelt twee rasters en kapt elk resultaat af richting nul.",
            "params": {
              "input1": {
                "label": "Invoer1",
                "description": "Eerste invoerraster (padtekenreeks of getypeerd rasterobject)."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Tweede invoerraster (padtekenreeks of getypeerd rasterobject)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, blijft de uitvoer in het geheugen en wordt deze geretourneerd als een memory://-rasterhandle."
              }
            }
          },
          "inverse_pca": {
            "name": "Inverse PCA",
            "description": "Reconstrueert de oorspronkelijke bandbeelden uit PCA-componentrasters met behulp van opgeslagen eigenvectoren.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Rasterpaden van de componenten."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters automatisch geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonsteringsmethode bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "pca_report": {
                "label": "PCA-rapport",
                "description": "JSON-rapporttekst van de PCA."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel basisuitvoerpad."
              }
            }
          },
          "is_nodata": {
            "name": "Is NoData",
            "description": "Geeft 1 als uitvoer voor NoData-cellen en 0 voor alle geldige cellen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              }
            }
          },
          "kappa_index": {
            "name": "Kappa-index",
            "description": "Berekent Cohens kappa en overeenstemmingsmaten tussen twee categorische rasters.",
            "params": {
              "input1": {
                "label": "Invoer1",
                "description": "Pad van het invoerclassificatieraster."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Pad van het referentie-invoerraster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van het HTML-rapport (alias: output_html_file)."
              }
            }
          },
          "ks_normality_test": {
            "name": "KS-normaliteitstoets",
            "description": "Evalueert of rasterwaarden afkomstig zijn uit een normale verdeling.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerraster."
              },
              "num_samples": {
                "label": "Aantal monsters",
                "description": "Optionele willekeurige steekproefomvang. Weglaten om alle geldige cellen te gebruiken."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van het HTML-rapport (alias: output_html_file)."
              }
            }
          },
          "less_than": {
            "name": "Kleiner dan",
            "description": "Toetst cel voor cel of het eerste raster kleiner is dan het tweede.",
            "params": {
              "input1": {
                "label": "Invoer1",
                "description": "Eerste invoerraster (padtekenreeks of getypeerd rasterobject)."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Tweede invoerraster (padtekenreeks of getypeerd rasterobject)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, blijft de uitvoer in het geheugen en wordt deze geretourneerd als een memory://-rasterhandle."
              }
            }
          },
          "list_unique_values_raster": {
            "name": "Unieke waarden weergeven (raster)",
            "description": "Geeft de unieke geldige rastercategorieën en hun frequenties weer.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerraster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van het CSV-bestand."
              },
              "strict_parity": {
                "label": "Strikte pariteit",
                "description": "Indien true wordt de volledige uitvoer met categoriefrequenties geretourneerd (standaard true)."
              },
              "max_values": {
                "label": "Maximale waarden",
                "description": "Maximaal aantal unieke waarden dat wordt opgenomen wanneer strict_parity false is (standaard 10000)."
              }
            }
          },
          "ln": {
            "name": "Ln",
            "description": "Berekent de natuurlijke logaritme van elke rastercel.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              }
            }
          },
          "log10": {
            "name": "Log10",
            "description": "Berekent de logaritme met grondtal 10 van elke rastercel.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              }
            }
          },
          "log2": {
            "name": "Log2",
            "description": "Berekent de logaritme met grondtal 2 van elke rastercel.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              }
            }
          },
          "map_features": {
            "name": "Objecten karteren",
            "description": "Brengt discrete verhoogde terreinelementen uit een raster in kaart met regiogroei in dalende prioriteitsvolgorde.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerraster."
              },
              "min_feature_height": {
                "label": "Minimale objecthoogte",
                "description": "Minimale verticale scheiding voor onafhankelijke objecten."
              },
              "min_feature_size": {
                "label": "Minimale objectgrootte",
                "description": "Minimale objectgrootte in cellen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "max": {
            "name": "Max",
            "description": "Voert een MAX-bewerking uit op twee rasters of op een raster en een constante waarde.",
            "params": {
              "input1": {
                "label": "Invoer1",
                "description": "Eerste rasterpad of numerieke constante."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Tweede rasterpad of numerieke constante."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "min": {
            "name": "Min",
            "description": "Voert een MIN-bewerking uit op twee rasters of op een raster en een constante waarde.",
            "params": {
              "input1": {
                "label": "Invoer1",
                "description": "Eerste rasterpad of numerieke constante."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Tweede rasterpad of numerieke constante."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "modified_shepard_interpolation": {
            "name": "Gewijzigde Shepard-interpolatie",
            "description": "Interpoleert een raster uit puntmonsters met lokaal gewogen modified-Shepard-vermenging.",
            "params": {
              "points": {
                "label": "Punten",
                "description": "Invoervectorlaag met punten."
              },
              "field_name": {
                "label": "Veldnaam",
                "description": "Optioneel numeriek attribuutveld; standaard wordt teruggevallen op FID."
              },
              "use_z": {
                "label": "Z gebruiken",
                "description": "Gebruik Z-waarden uit de puntgeometrie in plaats van attributen."
              },
              "weight": {
                "label": "Gewicht",
                "description": "Gewichtsexponent van Shepard; standaard 2.0."
              },
              "radius": {
                "label": "Straal",
                "description": "Optionele omgevingsradius in kaarteenheden."
              },
              "min_points": {
                "label": "Minimaal aantal punten",
                "description": "Minimaal aantal buren; standaard 8."
              },
              "use_quadratic_basis": {
                "label": "Kwadratische basis gebruiken",
                "description": "Lokale kwadratische basiscorrecties toepassen (modus compatibel met de oude versie)."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Celgrootte van de uitvoer wanneer base_raster niet is opgegeven."
              },
              "base_raster": {
                "label": "Basisraster",
                "description": "Optioneel basisraster dat de geometrie van de uitvoer bepaalt."
              },
              "use_data_hull": {
                "label": "Gegevensomhullende gebruiken",
                "description": "Beperk de interpolatie tot de convexe omhullende van de punten."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "narrowness_index": {
            "name": "Smalheidsindex",
            "description": "Berekent de smalheidsindex van rastervlakken als de oppervlakte gedeeld door de oppervlakte van de grootste ingesloten cirkel, op basis van de maximale afstand tot de rand.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerraster met patch-ID's met positieve geheeltallige ID's."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "negate": {
            "name": "Negeren (teken omkeren)",
            "description": "Keert het teken om van de waarde van elke rastercel die niet NoData is.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              }
            }
          },
          "nibble": {
            "name": "Knabbelen (nibble)",
            "description": "Vult achtergrondgebieden met toewijzing naar de dichtstbijzijnde buur.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerraster waarop Nibble wordt toegepast."
              },
              "mask": {
                "label": "Masker",
                "description": "Binair maskerraster."
              },
              "use_nodata": {
                "label": "NoData gebruiken",
                "description": "Nodata in de invoer als klassewaarde behandelen (niet als achtergrond)."
              },
              "nibble_nodata": {
                "label": "NoData wegknabbelen",
                "description": "Nibble ook toepassen in nodata-gebieden waar het masker uit staat."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "not_equal_to": {
            "name": "Niet gelijk aan",
            "description": "Toetst cel voor cel of twee rasters ongelijk zijn.",
            "params": {
              "input1": {
                "label": "Invoer1",
                "description": "Eerste invoerraster (padtekenreeks of getypeerd rasterobject)."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Tweede invoerraster (padtekenreeks of getypeerd rasterobject)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, blijft de uitvoer in het geheugen en wordt deze geretourneerd als een memory://-rasterhandle."
              }
            }
          },
          "paired_sample_t_test": {
            "name": "Gepaarde t-toets",
            "description": "Voert een gepaarde t-toets uit op twee rasters met gepaarde geldige cellen.",
            "params": {
              "input1": {
                "label": "Invoer1",
                "description": "Pad naar het eerste invoerraster."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Pad naar het tweede invoerraster."
              },
              "num_samples": {
                "label": "Aantal monsters",
                "description": "Optionele steekproefomvang met teruglegging."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van het HTML-rapport (alias: output_html_file)."
              }
            }
          },
          "phi_coefficient": {
            "name": "Phi-coëfficiënt",
            "description": "Voert een beoordeling van de overeenstemming van binaire classificaties uit met de phi-coëfficiënt.",
            "params": {
              "input1": {
                "label": "Invoer1",
                "description": "Pad van het eerste binaire raster."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Pad van het tweede binaire raster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van het HTML-rapport (alias: output_html_file)."
              }
            }
          },
          "principal_component_analysis": {
            "name": "Hoofdcomponentenanalyse",
            "description": "Voert een PCA uit op een stapel rasters en retourneert componentbeelden en een JSON-rapport.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Invoerrasterpaden (≥3)."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters automatisch geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonsteringsmethode bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "num_components": {
                "label": "Aantal componenten",
                "description": "Aantal componenten. Standaard: alle."
              },
              "standardized": {
                "label": "Gestandaardiseerd",
                "description": "Correlatiematrix gebruiken. Standaard: false."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel basisuitvoerpad."
              }
            }
          },
          "print_geotiff_tags": {
            "name": "GeoTIFF-tags weergeven",
            "description": "Maakt een tekstrapport met een beschrijving van de TIFF/GeoTIFF-tags en de belangrijkste metadata van een invoerraster uit de GeoTIFF-familie.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerraster."
              }
            }
          },
          "quantiles": {
            "name": "Kwantielen",
            "description": "Transformeert rasterwaarden in kwantielklassen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerraster."
              },
              "num_quantiles": {
                "label": "Aantal kwantielen",
                "description": "Aantal kwantielen (standaard 5)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "radial_basis_function_interpolation": {
            "name": "Interpolatie met radiale basisfuncties",
            "description": "Interpoleert een raster uit puntmonsters met lokale gelijkenisweging op basis van radiale basisfuncties.",
            "params": {
              "points": {
                "label": "Punten",
                "description": "Invoervectorlaag met punten."
              },
              "field_name": {
                "label": "Veldnaam",
                "description": "Optioneel numeriek attribuutveld; standaard wordt teruggevallen op FID."
              },
              "use_z": {
                "label": "Z gebruiken",
                "description": "Gebruik Z-waarden uit de puntgeometrie in plaats van attributen."
              },
              "approximate_mode": {
                "label": "Benaderingsmodus",
                "description": "Indien true wordt de snelle benaderende NG-weging gebruikt; indien false worden lokale RBF-stelsels opgelost (op de oude manier)."
              },
              "radius": {
                "label": "Straal",
                "description": "Optionele omgevingsradius in kaarteenheden."
              },
              "min_points": {
                "label": "Minimaal aantal punten",
                "description": "Minimaal aantal te gebruiken buren."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Celgrootte van de uitvoer wanneer base_raster niet is opgegeven."
              },
              "base_raster": {
                "label": "Basisraster",
                "description": "Optioneel basisraster dat de geometrie van de uitvoer bepaalt."
              },
              "func_type": {
                "label": "Functietype",
                "description": "Type radiale basis (thinplatespline, polyharmonic, gaussian, multiquadric, inversemultiquadric)."
              },
              "poly_order": {
                "label": "Polynoomgraad",
                "description": "Aanwijzing voor de polynoomorde (none, constant, quadratic)."
              },
              "weight": {
                "label": "Gewicht",
                "description": "Vormparameter/exponent van de basis, afhankelijk van func_type."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "radius_of_gyration": {
            "name": "Gyratiestraal",
            "description": "Berekent per vlak de gyratiestraal en projecteert de waarden terug op de vlakcellen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerraster met patch-ID's met positieve geheeltallige ID's."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "random_field": {
            "name": "Willekeurig veld",
            "description": "Maakt een raster met standaardnormaal verdeelde willekeurige waarden.",
            "params": {
              "base": {
                "label": "Basis",
                "description": "Pad naar het basisraster dat voor de rastergeometrie wordt gebruikt."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "random_forest_classification_fit": {
            "name": "Random-forest-classificatie (fitten)",
            "description": "Past een Random Forest-classificatiemodel toe en retourneert de geserialiseerde modelbytes.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Array van enkelbandige invoerrasters."
              },
              "training_data": {
                "label": "Trainingsgegevens",
                "description": "Pad van de punt-/polygoonvector met trainingsgegevens."
              },
              "class_field": {
                "label": "Klasseveld",
                "description": "Klasseveld in de attributen van training_data."
              },
              "scaling": {
                "label": "Schaling",
                "description": "Schalingsmodus voor kenmerken: none (standaard), normalize, standardize."
              },
              "split_criterion": {
                "label": "Splitsingscriterium",
                "description": "Aanwijzing voor het splitsingscriterium van de boom (behouden voor compatibiliteit met oudere versies)."
              },
              "n_trees": {
                "label": "Aantal bomen",
                "description": "Aantal bomen in het bos (standaard 200)."
              },
              "min_samples_leaf": {
                "label": "Minimaal aantal monsters per blad",
                "description": "Minimaal aantal steekproeven dat in een bladknoop vereist is (standaard 1)."
              },
              "min_samples_split": {
                "label": "Minimaal aantal monsters per splitsing",
                "description": "Minimaal aantal steekproeven dat vereist is om een interne knoop te splitsen (standaard 2)."
              },
              "test_proportion": {
                "label": "Testaandeel",
                "description": "Argument voor compatibiliteit met oudere versies; gereserveerd voor toekomstige diagnostiek."
              }
            }
          },
          "random_forest_classification_predict": {
            "name": "Random-forest-classificatie (voorspellen)",
            "description": "Past een geserialiseerd Random Forest-classificatiemodel toe op multiband-voorspellers.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Array van enkelbandige invoerrasters."
              },
              "model_bytes": {
                "label": "Modelbytes",
                "description": "Modelbytes geproduceerd door random_forest_classification_fit."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "random_forest_regression_fit": {
            "name": "Random-forest-regressie (fitten)",
            "description": "Past een Random Forest-regressiemodel toe en retourneert de geserialiseerde modelbytes.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Array van enkelbandige invoerrasters."
              },
              "training_data": {
                "label": "Trainingsgegevens",
                "description": "Pad van de puntvector met trainingsgegevens."
              },
              "field": {
                "label": "Veld",
                "description": "Numeriek doelveld in de attributen van training_data."
              },
              "scaling": {
                "label": "Schaling",
                "description": "Schalingsmodus voor kenmerken: none (standaard), normalize, standardize."
              },
              "n_trees": {
                "label": "Aantal bomen",
                "description": "Aantal bomen in het bos (standaard 200)."
              },
              "min_samples_leaf": {
                "label": "Minimaal aantal monsters per blad",
                "description": "Minimaal aantal steekproeven dat in een bladknoop vereist is (standaard 1)."
              },
              "min_samples_split": {
                "label": "Minimaal aantal monsters per splitsing",
                "description": "Minimaal aantal steekproeven dat vereist is om een interne knoop te splitsen (standaard 2)."
              },
              "test_proportion": {
                "label": "Testaandeel",
                "description": "Argument voor compatibiliteit met oudere versies; gereserveerd voor toekomstige diagnostiek."
              }
            }
          },
          "random_forest_regression_predict": {
            "name": "Random-forest-regressie (voorspellen)",
            "description": "Past een geserialiseerd Random Forest-regressiemodel toe op multiband-voorspellers.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Array van enkelbandige invoerrasters."
              },
              "model_bytes": {
                "label": "Modelbytes",
                "description": "Modelbytes geproduceerd door random_forest_regression_fit."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "random_sample": {
            "name": "Willekeurige steekproef",
            "description": "Maakt een raster met willekeurig gelegen monstercellen met unieke ID's.",
            "params": {
              "base": {
                "label": "Basis",
                "description": "Basisrasterpad dat wordt gebruikt voor de rastergeometrie en het masker van geldige cellen."
              },
              "num_samples": {
                "label": "Aantal monsters",
                "description": "Aantal te genereren steekproefcellen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "raster_area": {
            "name": "Rasteroppervlakte",
            "description": "Schat de oppervlakte van rasterpolygonen per klasse in gridcellen of kaarteenheden en schrijft de klassetotalen naar elke klassecel.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Categorisch invoerraster."
              },
              "units": {
                "label": "Eenheden",
                "description": "Oppervlakte-eenheden: 'map units' (standaard) of 'grid cells'."
              },
              "zero_background": {
                "label": "Achtergrond nul",
                "description": "Indien true worden cellen met de waarde nul uitgesloten van de analyse."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "raster_calculator": {
            "name": "Rastercalculator",
            "description": "Evalueert cel voor cel een wiskundige expressie op een lijst van invoerrasters.",
            "params": {
              "expression": {
                "label": "Expressie",
                "description": "Wiskundige expressie met rastervariabelenamen tussen aanhalingstekens."
              },
              "inputs": {
                "label": "Invoeren",
                "description": "Geordende invoerrasterpaden."
              },
              "auto_reproject": {
                "label": "Automatisch herprojecteren",
                "description": "Indien waar (standaard) worden stackrasters automatisch geherprojecteerd naar inputs[0] wanneer het CRS verschilt."
              },
              "auto_reproject_method": {
                "label": "Methode voor automatisch herprojecteren",
                "description": "Optionele overschrijving van de herbemonsteringsmethode bij herprojectie: nearest, bilinear, cubic, lanczos, average, min, max, mode, median, stddev."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "raster_cell_assignment": {
            "name": "Rastercel-toewijzing",
            "description": "Maakt een raster afgeleid van een basisraster dat aan elke cel rij-, kolom-, x- of y-waarden toekent.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Basisinvoerraster."
              },
              "what_to_assign": {
                "label": "Toe te wijzen waarde",
                "description": "Toewijzingsdoel: column, row, x of y."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "raster_histogram": {
            "name": "Rasterhistogram",
            "description": "Stelt een histogram met vaste bins op voor geldige rastercellen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerraster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van het HTML-rapport (alias: output_html_file)."
              },
              "bins": {
                "label": "Klassen (bins)",
                "description": "Aantal histogramklassen (standaard log2(rows*cols)+1)."
              }
            }
          },
          "raster_perimeter": {
            "name": "Rasteromtrek",
            "description": "Schat de omtrek van rasterpolygonen per klasse met een anti-aliasing-opzoektabel en schrijft de klassetotalen naar elke klassecel.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Categorisch invoerraster."
              },
              "units": {
                "label": "Eenheden",
                "description": "Omtrekeenheden: 'map units' (standaard) of 'grid cells'."
              },
              "zero_background": {
                "label": "Achtergrond nul",
                "description": "Indien true worden cellen met de waarde nul uitgesloten van de analyse."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "raster_summary_stats": {
            "name": "Samenvattende rasterstatistieken",
            "description": "Berekent eenvoudige samenvattende statistieken voor geldige rastercellen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerraster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van het rapport (.json of .csv)."
              }
            }
          },
          "reciprocal": {
            "name": "Reciproque",
            "description": "Berekent het omgekeerde (1/x) van elke rastercel.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              }
            }
          },
          "rescale_value_range": {
            "name": "Waardebereik herschalen",
            "description": "Herschaalt rasterwaarden lineair naar een doelbereik.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerraster."
              },
              "out_min": {
                "label": "Uitvoerminimum",
                "description": "Minimale uitvoerwaarde."
              },
              "out_max": {
                "label": "Uitvoer maximum",
                "description": "Maximale uitvoerwaarde."
              },
              "clip_min": {
                "label": "Afkapminimum",
                "description": "Optioneel invoerminimum voor het afkappen vóór het herschalen."
              },
              "clip_max": {
                "label": "Afkapmaximum",
                "description": "Optioneel invoermaximum voor het afkappen vóór het herschalen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "root_mean_square_error": {
            "name": "Wortel van gemiddelde kwadratische fout",
            "description": "Berekent de RMSE en verwante nauwkeurigheidsstatistieken tussen twee rasters.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het vergelijkingsraster."
              },
              "base": {
                "label": "Basis",
                "description": "Pad naar het basisraster."
              }
            }
          },
          "round": {
            "name": "Afronden",
            "description": "Rondt elke rastercel af op het dichtstbijzijnde gehele getal.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              }
            }
          },
          "shape_complexity_index_raster": {
            "name": "Vormcomplexiteitsindex (raster)",
            "description": "Berekent de vormcomplexiteit van rastervlakken uit de frequentie van horizontale/verticale overgangen, genormaliseerd naar de spanwijdte van het vlak.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerraster met patch-ID's met positieve geheeltallige ID's."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "sieve": {
            "name": "Zeven (sieve)",
            "description": "Verwijdert kleine geïsoleerde vlakken onder een drempel voor het aantal cellen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Categorisch invoerraster."
              },
              "threshold": {
                "label": "Drempelwaarde",
                "description": "Minimale patchgrootte in cellen die behouden blijft."
              },
              "zero_background": {
                "label": "Achtergrond nul",
                "description": "Achtergrondcellen (waarde 0) in de uitvoer op nul zetten."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "sin": {
            "name": "Sin",
            "description": "Berekent de sinus van de waarde van elke rastercel.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              }
            }
          },
          "sinh": {
            "name": "Sinh",
            "description": "Berekent de sinus hyperbolicus van elke rastercel.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              }
            }
          },
          "sqrt": {
            "name": "Sqrt",
            "description": "Berekent de vierkantswortel van elke rastercel.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              }
            }
          },
          "square": {
            "name": "Kwadraat",
            "description": "Kwadrateert de waarde van elke rastercel.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              }
            }
          },
          "tan": {
            "name": "Tan",
            "description": "Berekent de tangens van de waarde van elke rastercel.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              }
            }
          },
          "tanh": {
            "name": "Tanh",
            "description": "Berekent de tangens hyperbolicus van elke rastercel.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              }
            }
          },
          "tin_interpolation": {
            "name": "TIN-interpolatie",
            "description": "Interpoleert een raster uit puntmonsters met Delaunay-triangulatie en vlakke interpolatie binnen elke driehoek.",
            "params": {
              "points": {
                "label": "Punten",
                "description": "Invoervectorlaag met punten."
              },
              "field_name": {
                "label": "Veldnaam",
                "description": "Optioneel numeriek attribuutveld; standaard wordt teruggevallen op FID."
              },
              "use_z": {
                "label": "Z gebruiken",
                "description": "Gebruik Z-waarden uit de puntgeometrie in plaats van attributen."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Celgrootte van de uitvoer wanneer base_raster niet is opgegeven."
              },
              "base_raster": {
                "label": "Basisraster",
                "description": "Optioneel basisraster dat de geometrie van de uitvoer bepaalt."
              },
              "max_triangle_edge_length": {
                "label": "Maximale driehoekszijdelengte",
                "description": "Optionele maximaal toegestane lengte van een driehoekszijde in kaarteenheden."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "to_degrees": {
            "name": "Naar graden",
            "description": "Zet elke rastercel om van radialen naar graden.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              }
            }
          },
          "to_radians": {
            "name": "Naar radialen",
            "description": "Zet elke rastercel om van graden naar radialen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              }
            }
          },
          "trend_surface": {
            "name": "Trendoppervlak",
            "description": "Past met kleinste-kwadratenregressie een polynomiaal trendoppervlak aan op een raster.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerraster."
              },
              "polynomial_order": {
                "label": "Polynoomgraad",
                "description": "Polynoomorde 1–10. Standaard: 1."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "trend_surface_vector_points": {
            "name": "Trendoppervlak (vectorpunten)",
            "description": "Past met kleinste-kwadratenregressie een polynomiaal trendoppervlak aan op vectorpuntgegevens.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Bestandspad van het invoervectorbestand met punten."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Celgrootte van het uitvoerraster in kaarteenheden."
              },
              "field_name": {
                "label": "Veldnaam",
                "description": "Attribuutveld voor Z-waarden. Standaard: 'FID'."
              },
              "polynomial_order": {
                "label": "Polynoomgraad",
                "description": "Polynoomorde 1–10. Standaard: 1."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "truncate": {
            "name": "Afkappen",
            "description": "Kapt de waarde van elke rastercel af tot het gehele deel.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              }
            }
          },
          "turning_bands_simulation": {
            "name": "Turning-bands-simulatie",
            "description": "Maakt een ruimtelijk geautocorreleerd willekeurig veld met het turning-bands-algoritme.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het basisraster."
              },
              "range": {
                "label": "Bereik",
                "description": "Correlatiebereik in kaarteenheden. Standaard: 1.0."
              },
              "iterations": {
                "label": "Iteraties",
                "description": "Aantal bandrichtingen. Standaard: 1000."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "two_sample_ks_test": {
            "name": "Tweesteekproeven-KS-toets",
            "description": "Voert een Kolmogorov-Smirnov-toets voor twee steekproeven uit op twee verdelingen van rasterwaarden.",
            "params": {
              "input1": {
                "label": "Invoer1",
                "description": "Pad naar het eerste invoerraster."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Pad naar het tweede invoerraster."
              },
              "num_samples": {
                "label": "Aantal monsters",
                "description": "Optionele steekproefomvang met teruglegging per raster."
              }
            }
          },
          "wilcoxon_signed_rank_test": {
            "name": "Wilcoxon-rangtekentoets",
            "description": "Voert een Wilcoxon-rangtekentoets uit op gepaarde rasterverschillen.",
            "params": {
              "input1": {
                "label": "Invoer1",
                "description": "Pad naar het eerste invoerraster."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Pad naar het tweede invoerraster."
              },
              "num_samples": {
                "label": "Aantal monsters",
                "description": "Optionele steekproefomvang met teruglegging."
              }
            }
          },
          "z_scores": {
            "name": "Z-scores",
            "description": "Standaardiseert rasterwaarden naar z-scores met het globale gemiddelde en de globale standaardafwijking.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerraster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "zonal_statistics": {
            "name": "Zonale statistiek",
            "description": "Vat de waarden van een gegevensraster samen binnen zones die door een objectraster worden gedefinieerd.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoergegevensraster."
              },
              "features": {
                "label": "Kenmerken",
                "description": "Pad van het raster met de zonedefinitie."
              },
              "stat_type": {
                "label": "Statistiektype",
                "description": "Statistiek: 'mean', 'median', 'min', 'max', 'range', 'standard deviation', 'diversity', 'total'. Standaard: 'mean'."
              },
              "zero_is_background": {
                "label": "Nul is achtergrond",
                "description": "Cellen in zone 0 uitsluiten. Standaard: false."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "assess_route": {
            "name": "Route beoordelen",
            "description": "Segmenteert routelijnen en evalueert per segment terreinmaten uit een DEM.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "routes": {
                "label": "Routes",
                "description": "Pad van het invoervectorbestand met polylijnroutes."
              },
              "search_radius": {
                "label": "Zoekstraal",
                "description": "Zoekradius voor zichtbaarheid in rastercellen (standaard 15, minimaal 4)."
              },
              "segment_length": {
                "label": "Segmentlengte",
                "description": "Beoogde segmentlengte van de route in kaarteenheden (standaard 100.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoervectorpad."
              }
            }
          },
          "breakline_mapping": {
            "name": "Breuklijnkartering",
            "description": "Brengt breuklijnen in kaart door drempeling van de log-getransformeerde curvedness en vectorisatie van verdunde lijnvormige elementen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "threshold": {
                "label": "Drempelwaarde",
                "description": "Minimale drempelwaarde voor log-gekromdheid die wordt gebruikt bij de extractie van breuklijnen (standaard 0.8)."
              },
              "min_length": {
                "label": "Minimale lengte",
                "description": "Minimale lijnlengte in de uitvoer in rastercellen (standaard 3)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoervectorpad (standaard een tijdelijk .shp-bestand)."
              }
            }
          },
          "convergence_index": {
            "name": "Convergentie-index",
            "description": "Stromingsconvergentie/-divergentie op basis van de lokale uitlijning van de expositie. Identificeert dalen (convergent) en ruggen (divergent) zonder volledige afstromingsroutering. Efficiënt alternatief voor stroomrichtingsalgoritmen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Z-conversiefactor."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad."
              }
            }
          },
          "dem_void_filling": {
            "name": "DEM-gaten opvullen",
            "description": "Vult lege gebieden in een DEM met een secundair oppervlak en geïnterpoleerde hoogteverschuivingen voor een naadloze fusie.",
            "params": {
              "fill": {
                "label": "Vullen",
                "description": "Pad van het opvul-DEM-raster of getypeerd rasterobject dat wordt gebruikt om leemten op te vullen."
              },
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoer-DEM-raster (met leemten) of getypeerd rasterobject."
              },
              "edge_treatment": {
                "label": "Randbehandeling",
                "description": "Behandeling van de leemterand: 'dem', 'fill' of 'average' (standaard 'dem')."
              },
              "mean_plane_dist": {
                "label": "Afstand tot gemiddeld vlak",
                "description": "Afstand in cellen vanaf de leemteranden waarbuiten de verschuivingen op de globale gemiddelde verschuiving worden gezet (standaard 20)."
              },
              "weight_value": {
                "label": "Gewichtswaarde",
                "description": "Machtsexponent van de inverse-afstandsinterpolatie voor de interpolatie van verschuivingen nabij de rand (standaard 2.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad."
              }
            }
          },
          "deviation_from_mean_elevation": {
            "name": "Afwijking van gemiddelde hoogte",
            "description": "Berekent de lokale topografische z-score met het lokale gemiddelde en de lokale standaardafwijking.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "filter_size_x": {
                "label": "Filtergrootte X",
                "description": "Oneven filterbreedte in cellen (standaard 11). Alias: filterx."
              },
              "filter_size_y": {
                "label": "Filtergrootte Y",
                "description": "Oneven filterhoogte in cellen (standaard filter_size_x). Alias: filtery."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft het resultaat in het geheugen."
              }
            }
          },
          "difference_from_mean_elevation": {
            "name": "Verschil met gemiddelde hoogte",
            "description": "Berekent het verschil tussen elke hoogte en de lokale gemiddelde hoogte.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "filter_size_x": {
                "label": "Filtergrootte X",
                "description": "Oneven filterbreedte in cellen (standaard 11). Alias: filterx."
              },
              "filter_size_y": {
                "label": "Filtergrootte Y",
                "description": "Oneven filterhoogte in cellen (standaard filter_size_x). Alias: filtery."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft het resultaat in het geheugen."
              }
            }
          },
          "directional_relief": {
            "name": "Directioneel reliëf",
            "description": "Berekent het gerichte reliëf door de hoogte te ray-tracen in een opgegeven azimut.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "azimuth": {
                "label": "Azimut",
                "description": "Richtingsazimut in graden met de klok mee vanaf het noorden."
              },
              "max_dist": {
                "label": "Maximale afstand",
                "description": "Optionele maximale straalafstand in kaarteenheden."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad."
              }
            }
          },
          "elev_above_pit": {
            "name": "Hoogte boven put",
            "description": "Berekent de hoogte boven de dichtstbijzijnde benedenstroomse putcel (of randsink).",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad."
              }
            }
          },
          "elev_above_pit_dist": {
            "name": "Hoogte boven put (afstand)",
            "description": "Compatibiliteitsalias voor elev_above_pit.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad."
              }
            }
          },
          "elevation_percentile": {
            "name": "Hoogtepercentiel",
            "description": "Lokale percentielrang van de hoogte binnen de omgeving (0-100). Identificeert dalen (laag %), ruggen (hoog %) en hellingen (midden %). Maat voor landvormclassificatie die onafhankelijk is van de absolute hoogte.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "filter_size_x": {
                "label": "Filtergrootte X",
                "description": "Oneven filterbreedte in cellen (standaard 11). Alias: filterx."
              },
              "filter_size_y": {
                "label": "Filtergrootte Y",
                "description": "Oneven filterhoogte in cellen (standaard filter_size_x). Alias: filtery."
              },
              "sig_digits": {
                "label": "Significante cijfers",
                "description": "Aantal significante decimalen dat behouden blijft bij het indelen in klassen (standaard 2)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad."
              }
            }
          },
          "embankment_mapping": {
            "name": "Dijkkartering",
            "description": "Brengt verkeerstaluds in kaart op basis van een DEM en een wegennetwerk, met optionele verwijdering van het taludoppervlak via interpolatie. Geschreven door John Lindsay en Nigel VanNieuwenhuizen.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "roads_vector": {
                "label": "Wegenvector",
                "description": "Pad van het invoervectorbestand met wegen (polylijngeometrie)."
              },
              "embankment_max_width": {
                "label": "Maximale breedte talud",
                "description": "Maximale taludbreedte in kaarteenheden (standaard 60.0)."
              },
              "max_upwards_increment": {
                "label": "Maximale opwaartse toename",
                "description": "Maximaal toegestane lokale opwaartse toename tijdens het groeien (standaard 0.05)."
              },
              "min_road_width": {
                "label": "Minimale wegbreedte",
                "description": "Minimale gekarteerde wegbreedte in kaarteenheden (standaard 6.0)."
              },
              "remove_embankments": {
                "label": "Taluds verwijderen",
                "description": "Indien true wordt bovendien een DEM zonder taluds uitgevoerd via lokale interpolatie."
              },
              "search_dist": {
                "label": "Zoekafstand",
                "description": "Herpositioneringsafstand van het wegzaadpunt in kaarteenheden (standaard 2.5)."
              },
              "spillout_slope": {
                "label": "Overloophelling",
                "description": "Maximale uitstroomhelling in graden voor bergopwaartse overgangen (standaard 4.0)."
              },
              "typical_embankment_max_height": {
                "label": "Typische maximale taludhoogte",
                "description": "Typische maximale taludhoogte in hoogte-eenheden (standaard 2.0)."
              },
              "typical_embankment_width": {
                "label": "Typische taludbreedte",
                "description": "Typische taludbreedte in kaarteenheden (standaard 30.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van het taludmasker."
              },
              "output_dem": {
                "label": "Uitvoer-DEM",
                "description": "Optioneel uitvoerpad van de DEM zonder taluds wanneer remove_embankments=true."
              }
            }
          },
          "exposure_towards_wind_flux": {
            "name": "Blootstelling aan windflux",
            "description": "Berekent de blootstelling van het terrein ten opzichte van de dominante windrichting en de afscherming door de horizon aan de windzijde.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "azimuth": {
                "label": "Azimut",
                "description": "Azimut van de overheersende wind in graden met de klok mee vanaf het noorden."
              },
              "max_dist": {
                "label": "Maximale afstand",
                "description": "Maximale zoekafstand voor de horizonhoek bovenwinds in kaarteenheden."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Optionele verticale schaalfactor voor geprojecteerde DEM's."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad."
              }
            }
          },
          "feature_preserving_smoothing": {
            "name": "Kenmerkbehoudend gladstrijken",
            "description": "Vlakt de ruwheid van een DEM af met behoud van hellingsbreuken met behulp van normaalvectorfiltering.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "filter_size": {
                "label": "Filtergrootte",
                "description": "Oneven filtergrootte in cellen (standaard 11)."
              },
              "iterations": {
                "label": "Iteraties",
                "description": "Aantal afvlakkingsiteraties (standaard 3)."
              },
              "max_elevation_diff": {
                "label": "Maximaal hoogteverschil",
                "description": "Maximaal toegestane verticale verandering ten opzichte van de oorspronkelijke DEM (standaard inf)."
              },
              "normal_diff_threshold": {
                "label": "Normaalverschildrempel",
                "description": "Maximaal verschil in normaalhoek in graden (standaard 8.0)."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Optionele z-conversiefactor (standaard 1.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft het resultaat in het geheugen."
              }
            }
          },
          "feature_preserving_smoothing_multiscale": {
            "name": "Kenmerkbehoudend gladstrijken (multischaal)",
            "description": "Vlakt de ruwheid van een DEM af met een multischalige voortzetting van grof naar fijn. Elke schaal leidt de normalen opnieuw af, past adaptieve robuuste diffusie van het normaalveld toe en reconstrueert de hoogten met een gescreende Poisson-oplossing.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "smoothing_amount": {
                "label": "Mate van gladstrijken",
                "description": "Algehele mate van afvlakking in [0,1] (standaard 0.65). Hogere waarden vergroten het diffusiebudget, vooral op grove schalen."
              },
              "edge_preservation": {
                "label": "Randbehoud",
                "description": "Sterkte van het randbehoud in [0,1] (standaard 0.75). Hogere waarden onderdrukken de afvlakking over belangrijke hellingbreuken heen sterker."
              },
              "scale_levels": {
                "label": "Schaalniveaus",
                "description": "Aantal piramideniveaus voor afvlakking van grof naar fijn (standaard 3)."
              },
              "fidelity": {
                "label": "Getrouwheid",
                "description": "Gewicht van de gegevensgetrouwheid in de screened-Poisson-reconstructie (standaard 0.45). Hogere waarden houden het resultaat dichter bij de bron-DEM."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Optionele z-conversiefactor (standaard 1.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft het resultaat in het geheugen."
              }
            }
          },
          "fetch_analysis": {
            "name": "Strijklengteanalyse",
            "description": "Berekent de afstand aan de windzijde tot het eerste topografische obstakel langs een opgegeven azimut.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "azimuth": {
                "label": "Azimut",
                "description": "Windazimut in graden met de klok mee vanaf het noorden."
              },
              "hgt_inc": {
                "label": "Hoogtetoename",
                "description": "Drempelwaarde voor de hoogtetoename in m/m (standaard 0.05)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad."
              }
            }
          },
          "fill_missing_data": {
            "name": "Ontbrekende gegevens opvullen",
            "description": "Vult NoData-gaten met inverse afstandsweging vanuit geldige cellen aan de rand van het gat.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerraster of getypt rasterobject."
              },
              "exclude_edge_nodata": {
                "label": "Rand-NoData uitsluiten",
                "description": "NoData-gebieden die met de rand verbonden zijn uitsluiten van het opvullen (standaard false). Alias: no_edges."
              },
              "filter_size": {
                "label": "Filtergrootte",
                "description": "Zoekradius in rastercellen (standaard 11)."
              },
              "weight": {
                "label": "Gewicht",
                "description": "Machtsexponent van de inverse afstand (standaard 2.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft het resultaat in het geheugen."
              }
            }
          },
          "find_ridges": {
            "name": "Ruggen vinden",
            "description": "Identificeert mogelijke rug- en piekcellen in een DEM, met optionele lijnverdunning.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "line_thin": {
                "label": "Lijnen uitdunnen",
                "description": "Iteratieve lijnverdunning toepassen (standaard true)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad."
              }
            }
          },
          "hillshade": {
            "name": "Schaduwreliëf",
            "description": "Gerichte schaduwreliëfvisualisatie met één lichtbron (grijswaarden 0-255). De parameters voor azimut en hoogte bepalen de lichtrichting. Snelle terreinvisualisatie voor inspectie van DEM's en kaartweergave.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-DEM-raster"
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Verticale overdrijving toegepast op de hoogten"
              },
              "altitude": {
                "label": "Zonhoogte",
                "description": "Verlichtingshoogte boven de horizon in graden"
              },
              "azimuth": {
                "label": "Azimut",
                "description": "Verlichtingsazimut in graden met de klok mee vanaf het noorden"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad"
              }
            }
          },
          "hypsometrically_tinted_hillshade": {
            "name": "Hypsometrisch getint schaduwreliëf",
            "description": "Maakt een terreinweergave in Zwitserse stijl door schaduwreliëf uit meerdere azimuts te vermengen met hypsometrische kleuring en optionele atmosferische nevel.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Pad van het invoer-DEM-raster."
              },
              "solar_altitude": {
                "label": "Zonhoogte",
                "description": "Zonnehoogte in graden [0, 90]."
              },
              "hillshade_weight": {
                "label": "Gewicht schaduwreliëf",
                "description": "Mengingsgewicht van het schaduwreliëf in [0, 1]."
              },
              "brightness": {
                "label": "Helderheid",
                "description": "Helderheidsregeling in [0, 1]."
              },
              "atmospheric_effects": {
                "label": "Atmosferische effecten",
                "description": "Mate van atmosferische nevel in [0, 1]."
              },
              "palette": {
                "label": "Palet",
                "description": "Naam van het palet (atlas, high_relief, arid, soft, muted, viridis, dem, grey, white, enz.)."
              },
              "reverse_palette": {
                "label": "Palet omkeren",
                "description": "Volgorde van het palet omkeren."
              },
              "full_360_mode": {
                "label": "Volledige 360°-modus",
                "description": "Verlichting uit 8 richtingen gebruiken in plaats van de modus met 4 richtingen."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Vermenigvuldigingsfactor voor de verticale overdrijving."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad."
              }
            }
          },
          "local_hypsometric_analysis": {
            "name": "Lokale hypsometrische analyse",
            "description": "Berekent de minimale lokale hypsometrische integraal over een niet-lineair bemonsterd bereik van omgevingsschalen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "min_scale": {
                "label": "Minimale schaal",
                "description": "Minimale halvevensterradius in cellen (standaard 4)."
              },
              "step_size": {
                "label": "Stapgrootte",
                "description": "Basisstapgrootte in cellen (standaard 1). Alias: step."
              },
              "num_steps": {
                "label": "Aantal stappen",
                "description": "Aantal te evalueren schalen (standaard 10)."
              },
              "step_nonlinearity": {
                "label": "Niet-lineariteit stappen",
                "description": "Niet-lineariteit van de schaalstap in [1,4] (standaard 1.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad voor het raster met het lokale HI-minimum."
              },
              "output_scale": {
                "label": "Uitvoerschaal",
                "description": "Optioneel uitvoerpad voor het raster met de schaal van het HI-minimum."
              }
            }
          },
          "low_points_on_headwater_divides": {
            "name": "Lage punten op bovenloopwaterscheidingen",
            "description": "Lokaliseert lage passen langs waterscheidingen tussen aangrenzende deelstroomgebieden in bovenlopen.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Pad van het depressievrije invoer-DEM-raster of getypeerd rasterobject."
              },
              "streams": {
                "label": "Waterlopen",
                "description": "Pad van het invoerwaterloopraster (positieve waarden duiden geulcellen aan)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoervectorpad (standaard een tijdelijk .shp-bestand)."
              }
            }
          },
          "max_downslope_elev_change": {
            "name": "Maximale benedenstroomse hoogteverandering",
            "description": "Berekent de maximale hoogtedaling naar lagere aangrenzende cellen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad."
              }
            }
          },
          "max_upslope_elev_change": {
            "name": "Maximale bovenstroomse hoogteverandering",
            "description": "Berekent de maximale hoogtestijging naar hogere aangrenzende cellen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad."
              }
            }
          },
          "min_downslope_elev_change": {
            "name": "Minimale benedenstroomse hoogteverandering",
            "description": "Berekent de minimale niet-negatieve hoogtedaling naar aangrenzende cellen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad."
              }
            }
          },
          "multidirectional_hillshade": {
            "name": "Multidirectioneel schaduwreliëf",
            "description": "Schaduwreliëf uit meerdere richtingen (8+ lichtbronnen) dat de schaduwartefacten van één lichtbron elimineert. Evenwichtige zichtbaarheid van elementen in complex terrein; de voorkeur voor publicaties en gedetailleerde analyse.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoer-DEM-raster"
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Verticale overdrijving toegepast op de hoogten"
              },
              "altitude": {
                "label": "Zonhoogte",
                "description": "Verlichtingshoogte boven de horizon in graden"
              },
              "full_360_mode": {
                "label": "Volledige 360°-modus",
                "description": "8 lichtbronnen over de volledige 360 graden combineren in plaats van de standaard 4"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad"
              }
            }
          },
          "num_downslope_neighbours": {
            "name": "Aantal benedenstroomse buurcellen",
            "description": "Telt het aantal van de 8 aangrenzende cellen dat lager ligt dan elke DEM-cel.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad."
              }
            }
          },
          "num_upslope_neighbours": {
            "name": "Aantal bovenstroomse buurcellen",
            "description": "Telt het aantal van de 8 aangrenzende cellen dat hoger ligt dan elke DEM-cel.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad."
              }
            }
          },
          "profile": {
            "name": "Profiel",
            "description": "Maakt een HTML-grafiek van het hoogteprofiel voor een of meer invoerpolylijnobjecten, bemonsterd uit een oppervlakteraster.",
            "params": {
              "lines_vector": {
                "label": "Lijnenvector",
                "description": "Pad naar de invoerpolylijnvector."
              },
              "surface": {
                "label": "Oppervlak",
                "description": "Pad van het invoeroppervlakraster of getypeerd rasterobject."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Pad van het uitvoer-HTML-rapport."
              }
            }
          },
          "slope_vs_aspect_plot": {
            "name": "Helling-expositiediagram",
            "description": "Maakt een radiale HTML-analysegrafiek van helling versus expositie voor een invoer-DEM.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "aspect_bin_size": {
                "label": "Expositieklassegrootte",
                "description": "Klassebreedte van de expositie in graden (standaard 2.0)."
              },
              "min_slope": {
                "label": "Minimale helling",
                "description": "Hellingen onder deze drempelwaarde in graden negeren (standaard 0.1)."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Verticale schaalfactor voor hoogtewaarden."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Pad van het uitvoer-HTML-rapport."
              }
            }
          },
          "slope_vs_elev_plot": {
            "name": "Helling-hoogtediagram",
            "description": "Maakt een HTML-analysegrafiek van helling versus hoogte voor een of meer DEM's.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Invoer-DEM-paden als tekenreeks gescheiden door ';' of ',', of als lijst."
              },
              "watershed": {
                "label": "Stroomgebied uit rasteruitstroompunten",
                "description": "Optionele stroomgebiedrasters die bij elke invoer-DEM horen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Pad van het uitvoer-HTML-rapport."
              }
            }
          },
          "surface_area_ratio": {
            "name": "Oppervlakteratio",
            "description": "Verhouding tussen 3D-oppervlakte en planimetrische oppervlakte (methode van Jenness). >1.0=ruw terrein, ≈1.0=vlak. Dimensieloze rugositeitsmaat die vergelijking van terrein tussen regio's mogelijk maakt.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen bewaard."
              }
            }
          },
          "topographic_hachures": {
            "name": "Topografische arceringen",
            "description": "Maakt topografische hachure-polylijnen uit een DEM met vanuit contouren gestarte benedenstroomse en bovenstroomse stroomlijnen. De oorspronkelijke auteursvermelding blijft voor dit hulpmiddel bewust behouden.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "base": {
                "label": "Basis",
                "description": "Basishoogte van de contourlijnen (standaard 0.0)."
              },
              "depth": {
                "label": "Diepte",
                "description": "Recursieve opvuldiepte die in divergente gebieden wordt gebruikt (standaard 16)."
              },
              "discretization": {
                "label": "Discretisatie",
                "description": "Staplengte van de stroomlijn in eenheden van de gemiddelde cel (standaard 0.5)."
              },
              "distmax": {
                "label": "Maximale afstand",
                "description": "Maximale afstandsvermenigvuldiger die wordt gebruikt om extra hachures in te voegen (standaard 2.0)."
              },
              "distmin": {
                "label": "Minimale afstand",
                "description": "Minimale afstandsvermenigvuldiger die wordt gebruikt om nabijgelegen hachures af te kappen (standaard 0.5)."
              },
              "interval": {
                "label": "Interval",
                "description": "Waarde van het contourinterval (standaard 10.0)."
              },
              "separation": {
                "label": "Scheiding",
                "description": "Nominale afstand tussen zaadpunten op hoogtelijnen in eenheden van de gemiddelde cel (standaard 2.0)."
              },
              "slopemin": {
                "label": "Minimale helling",
                "description": "Minimale hellingshoek in graden om het traceren voort te zetten (standaard 0.5)."
              },
              "smooth": {
                "label": "Gladstrijken",
                "description": "Filtergrootte voor de afvlakking van hoogtelijnen (bij voorkeur een oneven geheel getal, standaard 9)."
              },
              "tolerance": {
                "label": "Tolerantie",
                "description": "Minimale buighoek van hoogtelijnen in graden die bij het vereenvoudigen behouden blijft (standaard 10.0)."
              },
              "turnmax": {
                "label": "Maximale draaiing",
                "description": "Maximaal toegestane draaihoek in graden tijdens het traceren van hachures (standaard 45.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "map_off_terrain_objects": {
            "name": "Objecten boven terrein karteren",
            "description": "Brengt segmenten van objecten boven het terrein in DSM's in kaart met hellingsbeperkte regiogroei en optionele filtering op minimale elementgrootte.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoer-DSM-raster of getypeerd rasterobject."
              },
              "max_slope": {
                "label": "Maximale helling",
                "description": "Maximale verbindende helling in graden [1, 90] (standaard inf, begrensd op 90)."
              },
              "min_feature_size": {
                "label": "Minimale objectgrootte",
                "description": "Minimale behouden segmentgrootte in cellen (standaard 0). Kleinere segmenten worden aan achtergrondklasse 1 toegewezen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft het resultaat in het geheugen."
              }
            }
          },
          "remove_off_terrain_objects": {
            "name": "Objecten boven terrein verwijderen",
            "description": "Verwijdert steile objecten boven het terrein uit DEM's met witte top-hatnormalisatie, hellingsbeperkte regiogroei en lokale interpolatie.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "filter_size": {
                "label": "Filtergrootte",
                "description": "Maximaal verwachte objectbreedte in cellen; wordt omgezet naar een oneven grootte >= 3 (standaard 11)."
              },
              "slope_threshold": {
                "label": "Hellingsdrempel",
                "description": "Minimale hellingshoek van de objectrand in graden (standaard 15.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft het resultaat in het geheugen."
              }
            }
          },
          "ridge_and_valley_vectors": {
            "name": "Rug- en valleivectoren",
            "description": "Extraheert vectoren van de hartlijnen van ruggen en dalen uit een DEM.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster."
              },
              "filter_size": {
                "label": "Filtergrootte",
                "description": "Omgevingsgrootte voor het hoogtepercentiel."
              },
              "ep_threshold": {
                "label": "EP-drempel",
                "description": "Drempelwaarde voor het hoogtepercentiel [5, 50]."
              },
              "slope_threshold": {
                "label": "Hellingsdrempel",
                "description": "Minimale hellingsdrempelwaarde in graden."
              },
              "min_length": {
                "label": "Minimale lengte",
                "description": "Minimale lengte van de hartlijn in cellen."
              },
              "output_ridges": {
                "label": "Ruggen uitvoeren",
                "description": "Uitvoerpad van de hartlijnen van ruggen."
              },
              "output_valleys": {
                "label": "Dalen uitvoeren",
                "description": "Uitvoerpad van de hartlijnen van dalen."
              }
            }
          },
          "smooth_vegetation_residual": {
            "name": "Vegetatieresidu gladstrijken",
            "description": "Vermindert de resterende ruwheid van het kronendak door hoge lokale DEV-responsen op kleine schalen te maskeren en de gemaskeerde hoogten opnieuw te interpoleren.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "max_scale": {
                "label": "Maximale schaal",
                "description": "Maximale halvevensterradius voor DEV in cellen (standaard 30)."
              },
              "dev_threshold": {
                "label": "Afwijkingsdrempel",
                "description": "Minimale DEV-magnitude die wordt gebruikt om ruwheidscellen te markeren (standaard 1.0)."
              },
              "scale_threshold": {
                "label": "Schaaldrempel",
                "description": "Maximale schaal die als ruwheid wordt beschouwd (standaard 5)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft het resultaat in het geheugen."
              }
            }
          },
          "average_horizon_distance": {
            "name": "Gemiddelde horizonafstand",
            "description": "Berekent de gemiddelde afstand tot de horizon over azimutrichtingen.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Pad van het invoer-DEM/DSM-raster."
              },
              "az_fraction": {
                "label": "Azimutfractie",
                "description": "Azimutstap in graden [1, 45]."
              },
              "max_dist": {
                "label": "Maximale afstand",
                "description": "Maximale zoekafstand in kaarteenheden."
              },
              "observer_hgt_offset": {
                "label": "Hoogteoffset waarnemer",
                "description": "Hoogteverschuiving van de waarnemer boven het terrein."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad."
              }
            }
          },
          "horizon_angle": {
            "name": "Horizonhoek",
            "description": "Berekent de horizonhoek (maximale helling) langs een opgegeven azimutrichting.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Pad van het invoer-DEM-raster."
              },
              "azimuth": {
                "label": "Azimut",
                "description": "Azimut in graden [0, 360)."
              },
              "max_dist": {
                "label": "Maximale afstand",
                "description": "Maximale zoekafstand in kaarteenheden."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad."
              }
            }
          },
          "horizon_area": {
            "name": "Horizonoppervlakte",
            "description": "Berekent de oppervlakte van de horizonpolygoon (hectare).",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Pad van het invoer-DEM/DSM-raster."
              },
              "az_fraction": {
                "label": "Azimutfractie",
                "description": "Azimutstap in graden [1, 45]."
              },
              "max_dist": {
                "label": "Maximale afstand",
                "description": "Maximale zoekafstand in kaarteenheden."
              },
              "observer_hgt_offset": {
                "label": "Hoogteoffset waarnemer",
                "description": "Hoogteverschuiving van de waarnemer boven het terrein."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad."
              }
            }
          },
          "openness": {
            "name": "Openheid",
            "description": "Topografische openheid volgens Yokoyama: maten voor positieve (blootgestelde ruggen/pieken) en negatieve (ingesloten dalen) blootstelling. Landvormclassificatie en analyse van zichtbaarheid/microklimaat.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "dist": {
                "label": "Afstand",
                "description": "Zoekafstand in cellen (standaard 20)."
              },
              "neg_output": {
                "label": "Negatieve uitvoer",
                "description": "Optioneel uitvoerpad voor de negatieve openheid."
              },
              "pos_output": {
                "label": "Positieve uitvoer",
                "description": "Optioneel uitvoerpad voor de positieve openheid."
              }
            }
          },
          "shadow_animation": {
            "name": "Schaduwanimatie",
            "description": "Maakt een interactieve HTML-viewer en een geanimeerde GIF die de terreinschaduwen gedurende een dag tonen.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Pad van het invoer-DEM/DSM-raster."
              },
              "date": {
                "label": "Datum",
                "description": "Datum in de notatie DD/MM/YYYY."
              },
              "delay": {
                "label": "Vertraging",
                "description": "GIF-vertraging per frame in milliseconden."
              },
              "image_height": {
                "label": "Beeldhoogte",
                "description": "Weergegeven beeldhoogte in pixels."
              },
              "label": {
                "label": "Label",
                "description": "Optioneel label dat in de viewer wordt weergegeven."
              },
              "location": {
                "label": "Locatie",
                "description": "Locatietekenreeks LAT/LON/UTC_OFFSET, bijv. 43.5448/-80.2482/-4."
              },
              "max_dist": {
                "label": "Maximale afstand",
                "description": "Maximale zoekafstand voor de horizon in kaarteenheden."
              },
              "palette": {
                "label": "Palet",
                "description": "Naam van het hypsometrische palet (bijv. soft, atlas, high_relief, turbo, viridis, dem, grey, white)."
              },
              "time_interval": {
                "label": "Tijdsinterval",
                "description": "Frame-interval in minuten [1, 60]."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het HTML-bestand."
              }
            }
          },
          "shadow_image": {
            "name": "Schaduwbeeld",
            "description": "Genereert een raster met de intensiteit van terreinschaduw voor een opgegeven datum, tijd en locatie.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Pad van het invoer-DEM/DSM-raster."
              },
              "date": {
                "label": "Datum",
                "description": "Datum in de notatie DD/MM/YYYY."
              },
              "location": {
                "label": "Locatie",
                "description": "Locatietekenreeks LAT/LON/UTC_OFFSET, bijv. 43.5448/-80.2482/-4."
              },
              "max_dist": {
                "label": "Maximale afstand",
                "description": "Maximale zoekafstand voor de horizon in kaarteenheden."
              },
              "palette": {
                "label": "Palet",
                "description": "Naam van het hypsometrische palet (bijv. soft, atlas, high_relief, turbo, viridis, dem, grey, white)."
              },
              "time": {
                "label": "Tijd",
                "description": "Lokale tijd in de notatie HH:MM of HH:MMAM/HH:MMPM."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "sky_view_factor": {
            "name": "Sky view factor",
            "description": "Berekent het aandeel zichtbare hemel uit een DEM/DSM.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Pad van het invoer-DEM/DSM-raster."
              },
              "az_fraction": {
                "label": "Azimutfractie",
                "description": "Azimutstap in graden [1, 45]."
              },
              "max_dist": {
                "label": "Maximale afstand",
                "description": "Maximale zoekafstand in kaarteenheden."
              },
              "observer_hgt_offset": {
                "label": "Hoogteoffset waarnemer",
                "description": "Hoogteverschuiving van de waarnemer boven het terrein."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad."
              }
            }
          },
          "skyline_analysis": {
            "name": "Skyline-analyse",
            "description": "Voert een skylineanalyse uit voor een of meer waarnemingspunten en schrijft een vectorhorizonlijn plus een HTML-rapport.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Pad van het invoer-DEM/DSM-raster."
              },
              "points": {
                "label": "Punten",
                "description": "Pad naar de invoerpuntvector."
              },
              "az_fraction": {
                "label": "Azimutfractie",
                "description": "Azimutstap in graden [0.01, 45]."
              },
              "max_dist": {
                "label": "Maximale afstand",
                "description": "Maximale zoekafstand in kaarteenheden."
              },
              "observer_hgt_offset": {
                "label": "Hoogteoffset waarnemer",
                "description": "Hoogteverschuiving van de waarnemer boven het terrein."
              },
              "output_as_polygons": {
                "label": "Als polygonen uitvoeren",
                "description": "Horizonnen als polygonen wegschrijven in plaats van als polylijnen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              },
              "output_html": {
                "label": "Uitvoer-HTML",
                "description": "Optioneel pad van het HTML-rapport."
              }
            }
          },
          "time_in_daylight": {
            "name": "Tijd in daglicht",
            "description": "Berekent het aandeel van de dag dat elke cel verlicht is (niet in de schaduw van terrein/objecten).",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Pad van het invoer-DEM/DSM-raster."
              },
              "az_fraction": {
                "label": "Azimutfractie",
                "description": "Klassebreedte van de azimut in graden (0, 360)."
              },
              "end_day": {
                "label": "Einddag",
                "description": "Einddag van het jaar (1..366)."
              },
              "end_time": {
                "label": "Eindtijd",
                "description": "Eindtijd HH:MM:SS of 'sunset'."
              },
              "latitude": {
                "label": "Breedtegraad",
                "description": "Optionele overschrijving van de breedtegraad in graden; anders afgeleid uit het CRS van de DEM."
              },
              "longitude": {
                "label": "Lengtegraad",
                "description": "Optionele overschrijving van de lengtegraad in graden; anders afgeleid uit het CRS van de DEM."
              },
              "max_dist": {
                "label": "Maximale afstand",
                "description": "Maximale zoekafstand voor de horizon in kaarteenheden."
              },
              "start_day": {
                "label": "Begindag",
                "description": "Begindag van het jaar (1..366)."
              },
              "start_time": {
                "label": "Begintijd",
                "description": "Begintijd HH:MM:SS of 'sunrise'."
              },
              "utc_offset": {
                "label": "UTC-offset",
                "description": "Optionele UTC-offsettekenreeks zoals UTC+00:00; indien weggelaten, wordt deze geschat op basis van de lengtegraad van het midden."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad."
              }
            }
          },
          "viewshed": {
            "name": "Zichtveld",
            "description": "Berekent het aantal zichtbare stations vanuit puntstations over een DEM.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "stations": {
                "label": "Stations",
                "description": "Invoervectorbestand met puntlocaties van de waarnemingsstations."
              },
              "height": {
                "label": "Hoogte",
                "description": "Hoogte van het waarnemingsstation boven het maaiveld in z-eenheden van de DEM (standaard 2.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad."
              }
            }
          },
          "visibility_index": {
            "name": "Zichtbaarheidsindex",
            "description": "Berekent een zichtbaarheidsindex op basis van de topografie uit bemonsterde zichtvelden.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Pad van het invoer-DEM-raster."
              },
              "max_dist": {
                "label": "Maximale afstand",
                "description": "Maximale zoekafstand voor zichtbaarheid in kaarteenheden."
              },
              "resolution_factor": {
                "label": "Resolutiefactor",
                "description": "Resolutiefactor voor de bemonstering [1, 25]."
              },
              "station_height": {
                "label": "Stationshoogte",
                "description": "Hoogte van de waarnemer boven het maaiveld."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad."
              }
            }
          },
          "accumulation_curvature": {
            "name": "Accumulatiekromming",
            "description": "Berekent de accumulatiekromming uit een DEM.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Optionele z-conversiefactor (standaard 1.0). Alias: zfactor."
              },
              "log_transform": {
                "label": "Logtransformatie",
                "description": "Optionele log-transformatie van de uitvoerwaarden (standaard false). Alias: log."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen bewaard."
              }
            }
          },
          "aspect": {
            "name": "Expositie",
            "description": "Richting van de maximale helling (0°=N, 90°=O, 180°=Z, 270°=W). Cruciaal voor analyse van zonnestraling, vegetatiepatronen, microklimaat en blootstelling.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Z-conversiefactor."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad."
              }
            }
          },
          "casorati_curvature": {
            "name": "Casorati-kromming",
            "description": "Berekent de Casorati-kromming uit een DEM.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Optionele z-conversiefactor (standaard 1.0). Alias: zfactor."
              },
              "log_transform": {
                "label": "Logtransformatie",
                "description": "Optionele log-transformatie van de uitvoerwaarden (standaard false). Alias: log."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen bewaard."
              }
            }
          },
          "curvedness": {
            "name": "Krommingsgraad",
            "description": "Berekent de vormdescriptor curvedness van het oppervlak uit een DEM.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Optionele z-conversiefactor (standaard 1.0). Alias: zfactor."
              },
              "log_transform": {
                "label": "Logtransformatie",
                "description": "Optionele log-transformatie van de uitvoerwaarden (standaard false). Alias: log."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen bewaard."
              }
            }
          },
          "difference_curvature": {
            "name": "Verschilkromming",
            "description": "Berekent de verschilkromming uit een DEM.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Optionele z-conversiefactor (standaard 1.0). Alias: zfactor."
              },
              "log_transform": {
                "label": "Logtransformatie",
                "description": "Optionele log-transformatie van de uitvoerwaarden (standaard false). Alias: log."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen bewaard."
              }
            }
          },
          "gaussian_curvature": {
            "name": "Gaussiaanse kromming",
            "description": "Berekent de Gaussische (intrinsieke) kromming (product van de hoofdkrommingen). Geeft de lokale oppervlaktetopologie aan: positief (kom/koepel), negatief (zadel), nul (cilindrisch). Classificeert het terrein in landvormcategorieën: convexe elementen (ruggen), concave elementen (dalen), zadelelementen (passen/doorgangen). Gebruikt in geavanceerde landvormclassificatie.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Optionele z-conversiefactor wanneer de verticale en horizontale eenheden verschillen (standaard 1.0). Alias: zfactor."
              },
              "log_transform": {
                "label": "Logtransformatie",
                "description": "Optionele log-transformatie van de uitvoerwaarden voor de leesbaarheid (standaard false). Alias: log."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen bewaard."
              }
            }
          },
          "generating_function": {
            "name": "Genererende functie",
            "description": "Berekent de genererende functie uit een DEM.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Optionele z-conversiefactor (standaard 1.0). Alias: zfactor."
              },
              "log_transform": {
                "label": "Logtransformatie",
                "description": "Optionele log-transformatie van de uitvoerwaarden (standaard false). Alias: log."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen bewaard."
              }
            }
          },
          "horizontal_excess_curvature": {
            "name": "Horizontale exceskromming",
            "description": "Berekent de horizontale overschotkromming uit een DEM.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Optionele z-conversiefactor (standaard 1.0). Alias: zfactor."
              },
              "log_transform": {
                "label": "Logtransformatie",
                "description": "Optionele log-transformatie van de uitvoerwaarden (standaard false). Alias: log."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen bewaard."
              }
            }
          },
          "maximal_curvature": {
            "name": "Maximale kromming",
            "description": "Berekent de maximale kromming (maximale hoofdkromming) uit een DEM.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Optionele z-conversiefactor (standaard 1.0). Alias: zfactor."
              },
              "log_transform": {
                "label": "Logtransformatie",
                "description": "Optionele log-transformatie van de uitvoerwaarden (standaard false). Alias: log."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen bewaard."
              }
            }
          },
          "mean_curvature": {
            "name": "Gemiddelde kromming",
            "description": "Berekent de gemiddelde kromming (gemiddelde van de hoofdkrommingen). Verwant aan de totale kromming, maar benadrukt de gladheid van het oppervlak. Waarden rond 0 wijzen op glad terrein; hoge waarden wijzen op abrupte krommingsveranderingen. Nuttig voor oppervlaktekarakterisering en detectie van breuklijnen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Optionele z-conversiefactor wanneer de verticale en horizontale eenheden verschillen (standaard 1.0). Alias: zfactor."
              },
              "log_transform": {
                "label": "Logtransformatie",
                "description": "Optionele log-transformatie van de uitvoerwaarden voor de leesbaarheid (standaard false). Alias: log."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen bewaard."
              }
            }
          },
          "minimal_curvature": {
            "name": "Minimale kromming",
            "description": "Berekent de minimale kromming (minimale hoofdkromming) uit een DEM.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Optionele z-conversiefactor (standaard 1.0). Alias: zfactor."
              },
              "log_transform": {
                "label": "Logtransformatie",
                "description": "Optionele log-transformatie van de uitvoerwaarden (standaard false). Alias: log."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen bewaard."
              }
            }
          },
          "plan_curvature": {
            "name": "Plankromming",
            "description": "Berekent de plan- (contour)kromming, die de convergentie/divergentie van de afstroming over contourlijnen meet. Positieve waarden (convergent) wijzen op concentratie van de afstroming naar het centrum (concaaf); negatieve waarden (divergent) wijzen op verspreiding van de afstroming weg van het centrum (convex). Identificeert zones met laterale concentratie van de afstroming (dalen) versus verspreidingszones (ruggen). Essentieel voor het voorspellen van de verdeling van bodemvocht en de gevoeligheid voor aardverschuivingen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Optionele z-conversiefactor wanneer de verticale en horizontale eenheden verschillen (standaard 1.0). Alias: zfactor."
              },
              "log_transform": {
                "label": "Logtransformatie",
                "description": "Optionele log-transformatie van de uitvoerwaarden voor de leesbaarheid (standaard false). Alias: log."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen bewaard."
              }
            }
          },
          "principal_curvature_direction": {
            "name": "Hoofdkrommingsrichting",
            "description": "Berekent de hoek van de richting van de hoofdkromming (graden).",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Optionele z-conversiefactor (standaard 1.0). Alias: zfactor."
              },
              "log_transform": {
                "label": "Logtransformatie",
                "description": "Optionele log-transformatie van de uitvoerwaarden (standaard false). Alias: log."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen bewaard."
              }
            }
          },
          "profile_curvature": {
            "name": "Profielkromming",
            "description": "Berekent de profiel- (hellingafwaartse) kromming, die de versnelling/vertraging van de afstroming in de hellingsrichting meet. Positieve waarden (concaaf) wijzen op zones met versnelling van de afstroming (erosief); negatieve waarden (convex) wijzen op zones met vertraging van de afstroming (afzettend). Toont de hellingsvorm: concaaf (dalbodems, erosie), convex (ruggen, materiaalverwijdering), lineair (overgang).",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Optionele z-conversiefactor wanneer de verticale en horizontale eenheden verschillen (standaard 1.0). Alias: zfactor."
              },
              "log_transform": {
                "label": "Logtransformatie",
                "description": "Optionele log-transformatie van de uitvoerwaarden voor de leesbaarheid (standaard false). Alias: log."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen bewaard."
              }
            }
          },
          "relative_aspect": {
            "name": "Relatieve expositie",
            "description": "Berekent de expositie van het terrein ten opzichte van een door de gebruiker opgegeven azimut (0 tot 180 graden).",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "azimuth": {
                "label": "Azimut",
                "description": "Referentieazimut in graden met de klok mee vanaf het noorden."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Optionele verticale schaalfactor."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad."
              }
            }
          },
          "ring_curvature": {
            "name": "Ringkromming",
            "description": "Berekent de ringkromming (gekwadrateerde torsie van stroomlijnen) uit een DEM.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Optionele z-conversiefactor (standaard 1.0). Alias: zfactor."
              },
              "log_transform": {
                "label": "Logtransformatie",
                "description": "Optionele log-transformatie van de uitvoerwaarden (standaard false). Alias: log."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen bewaard."
              }
            }
          },
          "rotor": {
            "name": "Rotor",
            "description": "Berekent de rotor (torsie van stroomlijnen) uit een DEM.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Optionele z-conversiefactor (standaard 1.0). Alias: zfactor."
              },
              "log_transform": {
                "label": "Logtransformatie",
                "description": "Optionele log-transformatie van de uitvoerwaarden (standaard false). Alias: log."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen bewaard."
              }
            }
          },
          "shape_index": {
            "name": "Vormindex",
            "description": "Berekent de vormdescriptor shape index van het oppervlak uit een DEM.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Optionele z-conversiefactor (standaard 1.0). Alias: zfactor."
              },
              "log_transform": {
                "label": "Logtransformatie",
                "description": "Optionele log-transformatie van de uitvoerwaarden (standaard false). Alias: log."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen bewaard."
              }
            }
          },
          "slope": {
            "name": "Helling",
            "description": "Hellingsgradiënt volgens Zevenbergen-Thorne (graden/radialen/procent). Fundamentele geomorfometrische maat; verdere invoer voor kromming, stroomrichting, schaduwwerking en zichtbaarheid.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "units": {
                "label": "Eenheden",
                "description": "Uitvoereenheden: degrees, radians, percent."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Z-conversiefactor."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad."
              }
            }
          },
          "tangential_curvature": {
            "name": "Tangentiële kromming",
            "description": "Berekent de tangentiële kromming (component in O-W-richting), vergelijkbaar met de plankromming maar gericht. Gebruikt voor een uitgebreide karakterisering van de kromming die de laterale divergentie van de afstroming loodrecht op de hellingsrichting vastlegt. Wordt vaak gecombineerd met de profielkromming voor een volledig begrip van de 3D-kromming.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Optionele z-conversiefactor wanneer de verticale en horizontale eenheden verschillen (standaard 1.0). Alias: zfactor."
              },
              "log_transform": {
                "label": "Logtransformatie",
                "description": "Optionele log-transformatie van de uitvoerwaarden voor de leesbaarheid (standaard false). Alias: log."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen bewaard."
              }
            }
          },
          "total_curvature": {
            "name": "Totale kromming",
            "description": "Berekent de totale kromming (kwadratisch gemiddelde van de hoofdkrommingen). Scalaire maat die onafhankelijk is van de richting. Hoge waarden wijzen op sterk gekromd terrein (pieken, putten); lage waarden wijzen op vlak terrein. Nuttig als dimensieloze ruwheidsmaat voor terreinclassificatie en anomaliedetectie.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Optionele z-conversiefactor wanneer de verticale en horizontale eenheden verschillen (standaard 1.0). Alias: zfactor."
              },
              "log_transform": {
                "label": "Logtransformatie",
                "description": "Optionele log-transformatie van de uitvoerwaarden voor de leesbaarheid (standaard false). Alias: log."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen bewaard."
              }
            }
          },
          "unsphericity": {
            "name": "Onbolvormigheid",
            "description": "Berekent de onbolvormigheidskromming (unsphericity; de helft van het verschil tussen de hoofdkrommingen) uit een DEM.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Optionele z-conversiefactor (standaard 1.0). Alias: zfactor."
              },
              "log_transform": {
                "label": "Logtransformatie",
                "description": "Optionele log-transformatie van de uitvoerwaarden (standaard false). Alias: log."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen bewaard."
              }
            }
          },
          "vertical_excess_curvature": {
            "name": "Verticale exceskromming",
            "description": "Berekent de verticale overschotkromming uit een DEM.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Optionele z-conversiefactor (standaard 1.0). Alias: zfactor."
              },
              "log_transform": {
                "label": "Logtransformatie",
                "description": "Optionele log-transformatie van de uitvoerwaarden (standaard false). Alias: log."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen bewaard."
              }
            }
          },
          "average_normal_vector_angular_deviation": {
            "name": "Gemiddelde hoekafwijking van normaalvectoren",
            "description": "Berekent de lokale gemiddelde hoekafwijking tussen de oorspronkelijke en de afgevlakte oppervlaktenormalen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "filter_size": {
                "label": "Filtergrootte",
                "description": "Oneven omgevingsgrootte in cellen (standaard 11). Alias: filter."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Optionele verticale schaalfactor."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad."
              }
            }
          },
          "circular_variance_of_aspect": {
            "name": "Circulaire variantie van expositie",
            "description": "Berekent de lokale circulaire variantie van de expositie binnen een bewegende omgeving.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "filter": {
                "label": "Filter",
                "description": "Oneven omgevingsgrootte in cellen (standaard 11)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad."
              }
            }
          },
          "edge_density": {
            "name": "Randdichtheid",
            "description": "Berekent de lokale dichtheid van hellingsbreuken met behulp van hoekverschillen tussen normaalvectoren.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "filter_size": {
                "label": "Filtergrootte",
                "description": "Oneven omgevingsgrootte in cellen (standaard 11). Alias: filter."
              },
              "norm_diff": {
                "label": "Normaalverschil",
                "description": "Hoekdrempelwaarde van de normaalvector in graden (standaard 5)."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Optionele verticale schaalfactor."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad."
              }
            }
          },
          "ruggedness_index": {
            "name": "Ruwheidsindex",
            "description": "Terreinruwheid via de TRI van Riley (som van gekwadrateerde hoogteverschillen). Schaalonafhankelijke maat voor terreinclassificatie: laag=gladde vlakten, hoog=ruige bergen. Ecologische en geomorfologische kartering van landvormen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen bewaard."
              }
            }
          },
          "spherical_std_dev_of_normals": {
            "name": "Sferische standaardafwijking van normalen",
            "description": "Berekent de sferische standaardafwijking van lokale oppervlaktenormalen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "filter_size": {
                "label": "Filtergrootte",
                "description": "Oneven omgevingsgrootte in cellen (standaard 11). Alias: filter."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Optionele verticale schaalfactor."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad."
              }
            }
          },
          "standard_deviation_of_slope": {
            "name": "Standaardafwijking van helling",
            "description": "Berekent de lokale standaardafwijking van de helling als maat voor de terreinruwheid.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "filter_size": {
                "label": "Filtergrootte",
                "description": "Oneven filtergrootte in cellen (standaard 11)."
              },
              "filter_size_x": {
                "label": "Filtergrootte X",
                "description": "Oneven filterbreedte in cellen (standaard filter_size). Alias: filterx."
              },
              "filter_size_y": {
                "label": "Filtergrootte Y",
                "description": "Oneven filterhoogte in cellen (standaard filter_size). Alias: filtery."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Z-conversiefactor wanneer de verticale en horizontale eenheden verschillen (standaard 1.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, blijft het resultaat in het geheugen."
              }
            }
          },
          "elev_relative_to_min_max": {
            "name": "Hoogte relatief tot min/max",
            "description": "Drukt elke hoogte uit als percentage (0–100) van het hoogtebereik van het raster.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen bewaard."
              }
            }
          },
          "geomorphons": {
            "name": "Geomorphons",
            "description": "Classificeert landvormen met ternaire zichtlijnpatronen in 8 richtingen, afgeleid uit vergelijkingen van zenit- en nadirhoeken, of met 10 gangbare geomorfonvormen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "analyze_residuals": {
                "label": "Residuen analyseren",
                "description": "Indien true wordt de DEM vóór de classificatie gedetrend met een aangepast lineair vlak."
              },
              "flatness_distance": {
                "label": "Vlakheidsafstand",
                "description": "Afstand in cellen waarna de vlakheidsdrempelwaarde afneemt met de horizonafstand (standaard 0)."
              },
              "flatness_threshold": {
                "label": "Vlakheidsdrempel",
                "description": "Vlakheidsdrempelwaarde in graden (standaard 1.0), toegepast op het hoekverschil tussen zenit en nadir."
              },
              "output_forms": {
                "label": "Vormen uitvoeren",
                "description": "Indien true worden 10 gangbare landvormklassen uitgevoerd; anders wordt de onbewerkte ternaire geomorphon-code uitgevoerd, geordend tegen de klok in vanaf het oosten."
              },
              "search_distance": {
                "label": "Zoekafstand",
                "description": "Maximale opzoekafstand in cellen per richting (standaard 50); de eindcel wordt meegenomen."
              },
              "skip_distance": {
                "label": "Overslagafstand",
                "description": "Afstand in cellen die wordt overgeslagen voordat de zichtlijn wordt geëvalueerd (standaard 0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad."
              }
            }
          },
          "hypsometric_analysis": {
            "name": "Hypsometrische analyse",
            "description": "Maakt een HTML-rapport met een hypsometrische curve (oppervlakte-hoogte) voor een of meer DEM's.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Invoer-DEM-paden als tekenreeks gescheiden door ';' of ',', of als lijst."
              },
              "watershed": {
                "label": "Stroomgebied uit rasteruitstroompunten",
                "description": "Optionele stroomgebiedrasters die bij elke invoer-DEM horen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Pad van het uitvoer-HTML-rapport."
              }
            }
          },
          "multiscale_topographic_position_class": {
            "name": "Multischaal topografische positieklasse",
            "description": "Classificeert elke DEM-cel in een systeem van relatieve topografische positie met negen klassen (breed/lokaal) op basis van twee DEVmax-schaalmozaïeken.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "local_min_scale": {
                "label": "Lokale minimale schaal",
                "description": "Minimale halvevensterradius in cellen voor het lokale schaalbereik (standaard 5)."
              },
              "local_max_scale": {
                "label": "Lokale maximale schaal",
                "description": "Maximale halvevensterradius in cellen voor het lokale schaalbereik (standaard 80)."
              },
              "local_step_size": {
                "label": "Lokale stapgrootte",
                "description": "Schaalstap in cellen voor het lokale schaalbereik (standaard 1). Alias: local_step."
              },
              "broad_min_scale": {
                "label": "Brede minimale schaal",
                "description": "Minimale halvevensterradius in cellen voor het brede schaalbereik (standaard 500)."
              },
              "broad_max_scale": {
                "label": "Brede maximale schaal",
                "description": "Maximale halvevensterradius in cellen voor het brede schaalbereik (standaard 2000)."
              },
              "broad_step_size": {
                "label": "Brede stapgrootte",
                "description": "Schaalstap in cellen voor het brede schaalbereik (standaard 20). Alias: broad_step."
              },
              "local_threshold": {
                "label": "Lokale drempelwaarde",
                "description": "DEV-drempelwaarde die wordt gebruikt om het lokale schaalmozaïek in te delen in de toestanden holte, middenpositie en heuveltje (standaard 0.5)."
              },
              "broad_threshold": {
                "label": "Brede drempelwaarde",
                "description": "DEV-drempelwaarde die wordt gebruikt om het brede schaalmozaïek in te delen in de toestanden laagland, tussenliggend en hoogland (standaard 0.5)."
              },
              "min_patch_size": {
                "label": "Minimale patchgrootte",
                "description": "Optionele minimale patchgrootte in cellen voor patchfiltering na de classificatie (standaard 0, uitgeschakeld)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad voor het categorische raster met negen klassen."
              },
              "output_confidence": {
                "label": "Betrouwbaarheid uitvoeren",
                "description": "Optioneel uitvoerpad voor een betrouwbaarheidsraster in het bereik [0, 1]."
              }
            }
          },
          "pennock_landform_classification": {
            "name": "Pennock-landvormclassificatie",
            "description": "Classificeert landvormelementen in zeven terreinklassen volgens Pennock et al. (1987).",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "plan_curv_threshold": {
                "label": "Drempel plankromming",
                "description": "Drempelwaarde voor de plankromming in graden (standaard 0.0)."
              },
              "prof_curv_threshold": {
                "label": "Drempel profielkromming",
                "description": "Drempelwaarde voor de profielkromming in graden (standaard 0.1)."
              },
              "slope_threshold": {
                "label": "Hellingsdrempel",
                "description": "Hellingsdrempelwaarde in graden (standaard 3.0)."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Optionele verticale schaalfactor (indien < 0 en het CRS geografisch is, wordt deze geschat op basis van de middenbreedtegraad)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad."
              }
            }
          },
          "percent_elev_range": {
            "name": "Percentage hoogtebereik",
            "description": "Berekent de lokale topografische positie als percentage van het hoogtebereik van de omgeving.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "filter_size_x": {
                "label": "Filtergrootte X",
                "description": "Oneven filterbreedte in cellen (standaard 11). Alias: filterx."
              },
              "filter_size_y": {
                "label": "Filtergrootte Y",
                "description": "Oneven filterhoogte in cellen (standaard filter_size_x). Alias: filtery."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad."
              }
            }
          },
          "relative_topographic_position": {
            "name": "Relatieve topografische positie",
            "description": "Berekent de RTP met de minimale, gemiddelde en maximale hoogtewaarden van de omgeving.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "filter_size_x": {
                "label": "Filtergrootte X",
                "description": "Oneven filterbreedte in cellen (standaard 11). Alias: filterx."
              },
              "filter_size_y": {
                "label": "Filtergrootte Y",
                "description": "Oneven filterhoogte in cellen (standaard filter_size_x). Alias: filtery."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad."
              }
            }
          },
          "max_anisotropy_dev": {
            "name": "Maximale anisotropieafwijking",
            "description": "Berekent de maximale anisotropie in de hoogteafwijking over een bereik van omgevingsschalen. Geschreven door Dan Newman.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "min_scale": {
                "label": "Minimale schaal",
                "description": "Minimale halvevensterradius in cellen (standaard 3)."
              },
              "max_scale": {
                "label": "Maximale schaal",
                "description": "Maximale halvevensterradius in cellen (standaard 100)."
              },
              "step_size": {
                "label": "Stapgrootte",
                "description": "Schaalstap in cellen (standaard 2). Alias: step."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad voor het raster met de anisotropiemagnitude."
              },
              "output_scale": {
                "label": "Uitvoerschaal",
                "description": "Optioneel uitvoerpad voor het raster dat de schaal van de maximale respons bevat."
              }
            }
          },
          "max_anisotropy_dev_signature": {
            "name": "Signatuur van maximale anisotropieafwijking",
            "description": "Berekent multischalige anisotropiesignaturen voor invoerpuntlocaties en schrijft een HTML-rapport. Geschreven door Dan Newman.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoer-DEM-raster."
              },
              "points": {
                "label": "Punten",
                "description": "Bestandspad van het invoervectorbestand met punten of multipunten."
              },
              "min_scale": {
                "label": "Minimale schaal",
                "description": "Minimale halvevensterradius in cellen (standaard 1)."
              },
              "max_scale": {
                "label": "Maximale schaal",
                "description": "Maximale halvevensterradius in cellen (standaard 100)."
              },
              "step_size": {
                "label": "Stapgrootte",
                "description": "Schaalstap in cellen (standaard 1). Alias: step."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad voor het HTML-signatuurrapport."
              }
            }
          },
          "max_difference_from_mean": {
            "name": "Maximaal verschil met gemiddelde",
            "description": "Berekent het maximale absolute verschil ten opzichte van het gemiddelde over een bereik van omgevingsschalen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "min_scale": {
                "label": "Minimale schaal",
                "description": "Minimale halvevensterradius in cellen (standaard 1)."
              },
              "max_scale": {
                "label": "Maximale schaal",
                "description": "Maximale halvevensterradius in cellen (standaard 100)."
              },
              "step_size": {
                "label": "Stapgrootte",
                "description": "Schaalstap in cellen (standaard 1). Alias: step."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad voor het raster met de magnitude van het maximale verschil."
              },
              "output_scale": {
                "label": "Uitvoerschaal",
                "description": "Optioneel uitvoerpad voor het raster dat de schaal van de maximale respons bevat."
              }
            }
          },
          "max_elevation_deviation": {
            "name": "Maximale hoogteafwijking",
            "description": "Berekent de maximale gestandaardiseerde hoogteafwijking (DEVmax) over een bereik van omgevingsschalen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "min_scale": {
                "label": "Minimale schaal",
                "description": "Minimale halvevensterradius in cellen (standaard 1)."
              },
              "max_scale": {
                "label": "Maximale schaal",
                "description": "Maximale halvevensterradius in cellen (standaard 100)."
              },
              "step_size": {
                "label": "Stapgrootte",
                "description": "Schaalstap in cellen (standaard 1). Alias: step."
              },
              "min_vertical": {
                "label": "Minimaal verticaal verschil",
                "description": "Minimale drempelwaarde voor de lokale standaardafwijking; responsen met zwakker reliëf worden onderdrukt (standaard 0.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad voor het raster met de DEVmax-magnitude."
              },
              "output_scale": {
                "label": "Uitvoerschaal",
                "description": "Optioneel uitvoerpad voor het raster dat de schaal van de maximale respons bevat."
              }
            }
          },
          "max_elev_dev_signature": {
            "name": "Signatuur van maximale hoogteafwijking",
            "description": "Berekent multischalige signaturen van de hoogteafwijking voor invoerpuntlocaties en schrijft een HTML-rapport.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoer-DEM-raster."
              },
              "points": {
                "label": "Punten",
                "description": "Bestandspad van het invoervectorbestand met punten of multipunten."
              },
              "min_scale": {
                "label": "Minimale schaal",
                "description": "Minimale halvevensterradius in cellen (standaard 1)."
              },
              "max_scale": {
                "label": "Maximale schaal",
                "description": "Maximale halvevensterradius in cellen (standaard 100)."
              },
              "step_size": {
                "label": "Stapgrootte",
                "description": "Schaalstap in cellen (standaard 10). Alias: step."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad voor het HTML-signatuurrapport."
              }
            }
          },
          "multiscale_curvatures": {
            "name": "Multischaal krommingen",
            "description": "Berekent multischalige krommingen en op kromming gebaseerde indices uit een DEM.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoer-DEM-raster of getypeerd rasterobject. Alias: dem."
              },
              "curv_type": {
                "label": "Krommingstype",
                "description": "Type kromming."
              },
              "out_mag": {
                "label": "Uitvoer magnitude",
                "description": "Optioneel uitvoerpad voor de magnitude. Alias: output."
              },
              "out_scale": {
                "label": "Uitvoer schaal",
                "description": "Optioneel uitvoerpad voor de schaal wanneer num_steps > 1."
              },
              "min_scale": {
                "label": "Minimale schaal",
                "description": "Minimale radius van de zoekomgeving in rastercellen."
              },
              "step": {
                "label": "Stap",
                "description": "Stapgrootte."
              },
              "num_steps": {
                "label": "Aantal stappen",
                "description": "Aantal bemonsterde schaalstappen."
              },
              "step_nonlinearity": {
                "label": "Niet-lineariteit stappen",
                "description": "Niet-lineariteitsfactor van de stap."
              },
              "log_transform": {
                "label": "Logtransformatie",
                "description": "Log-transformatie met behoud van teken toepassen. Alias: log."
              },
              "standardize": {
                "label": "Standaardiseren",
                "description": "Elke schaal standaardiseren naar z-scores."
              }
            }
          },
          "multiscale_elevated_index": {
            "name": "Multischaal verhoogde-liggingsindex",
            "description": "Berekent de multischalige elevated-index (MsEI) en rasters met sleutelschalen met behulp van residuen in de Gaussische schaalruimte.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "min_scale": {
                "label": "Minimale schaal",
                "description": "Minimale zoekradius in rastercellen (standaard 2)."
              },
              "num_steps": {
                "label": "Aantal stappen",
                "description": "Aantal te evalueren schalen (standaard 100)."
              },
              "step_nonlinearity": {
                "label": "Niet-lineariteit stappen",
                "description": "Niet-lineariteit van de schaalstap in [1,4] (standaard 1.1)."
              },
              "step_size": {
                "label": "Stapgrootte",
                "description": "Basisstapgrootte in cellen (standaard 1). Alias: step."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad voor het indexraster."
              },
              "output_scale": {
                "label": "Uitvoerschaal",
                "description": "Optioneel uitvoerpad voor het raster met de sleutelschaal."
              }
            }
          },
          "multiscale_elevation_percentile": {
            "name": "Multischaal hoogtepercentiel",
            "description": "Berekent het meest extreme lokale hoogtepercentiel over een bereik van omgevingsschalen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "min_scale": {
                "label": "Minimale schaal",
                "description": "Minimale halvevensterradius in cellen (standaard 4)."
              },
              "num_steps": {
                "label": "Aantal stappen",
                "description": "Aantal te evalueren schalen (standaard 10)."
              },
              "step_size": {
                "label": "Stapgrootte",
                "description": "Schaalstap in cellen (standaard 1). Alias: step."
              },
              "step_nonlinearity": {
                "label": "Niet-lineariteit stappen",
                "description": "Niet-lineaire schaalexponent; >1.0 clustert de schalen richting fijnere resoluties (standaard 1.0)."
              },
              "sig_digits": {
                "label": "Significante cijfers",
                "description": "Aantal significante decimalen dat wordt gebruikt bij de percentielklasse-indeling (standaard 3)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad voor het raster met de percentielmagnitude."
              },
              "output_scale": {
                "label": "Uitvoerschaal",
                "description": "Optioneel uitvoerpad voor het raster dat de schaal van de meest extreme percentielrespons bevat."
              }
            }
          },
          "multiscale_low_lying_index": {
            "name": "Multischaal laaggelegen-index",
            "description": "Berekent de multischalige low-lying-index (MsLLI) en rasters met sleutelschalen met behulp van residuen in de Gaussische schaalruimte.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "min_scale": {
                "label": "Minimale schaal",
                "description": "Minimale zoekradius in rastercellen (standaard 2)."
              },
              "num_steps": {
                "label": "Aantal stappen",
                "description": "Aantal te evalueren schalen (standaard 100)."
              },
              "step_nonlinearity": {
                "label": "Niet-lineariteit stappen",
                "description": "Niet-lineariteit van de schaalstap in [1,4] (standaard 1.1)."
              },
              "step_size": {
                "label": "Stapgrootte",
                "description": "Basisstapgrootte in cellen (standaard 1). Alias: step."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad voor het indexraster."
              },
              "output_scale": {
                "label": "Uitvoerschaal",
                "description": "Optioneel uitvoerpad voor het raster met de sleutelschaal."
              }
            }
          },
          "multiscale_roughness": {
            "name": "Multischaal ruwheid",
            "description": "Berekent de oppervlakteruwheid over een bereik van omgevingsschalen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "min_scale": {
                "label": "Minimale schaal",
                "description": "Minimale halvevensterradius in cellen (standaard 1)."
              },
              "max_scale": {
                "label": "Maximale schaal",
                "description": "Maximale halvevensterradius in cellen (standaard 100)."
              },
              "step_size": {
                "label": "Stapgrootte",
                "description": "Schaalstap in cellen (standaard 1). Alias: step."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Z-conversiefactor wanneer de verticale en horizontale eenheden verschillen (standaard 1.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad voor het raster met de ruwheidsmagnitude."
              },
              "output_scale": {
                "label": "Uitvoerschaal",
                "description": "Optioneel uitvoerpad voor het raster dat de schaal van de maximale respons bevat."
              }
            }
          },
          "multiscale_roughness_signature": {
            "name": "Signatuur van multischaal ruwheid",
            "description": "Berekent multischalige ruwheidssignaturen voor invoerpuntlocaties en schrijft een HTML-rapport.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoer-DEM-raster."
              },
              "points": {
                "label": "Punten",
                "description": "Bestandspad van het invoervectorbestand met punten of multipunten."
              },
              "min_scale": {
                "label": "Minimale schaal",
                "description": "Minimale halvevensterradius in cellen (standaard 1)."
              },
              "max_scale": {
                "label": "Maximale schaal",
                "description": "Maximale halvevensterradius in cellen (standaard 100)."
              },
              "step_size": {
                "label": "Stapgrootte",
                "description": "Schaalstap in cellen (standaard 1). Alias: step."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Z-conversiefactor wanneer de verticale en horizontale eenheden verschillen (standaard 1.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad voor het HTML-signatuurrapport."
              }
            }
          },
          "multiscale_std_dev_normals": {
            "name": "Multischaal standaardafwijking van normalen",
            "description": "Berekent de maximale sferische standaardafwijking van oppervlaktenormalen over een niet-lineair bemonsterd bereik van schalen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "min_scale": {
                "label": "Minimale schaal",
                "description": "Minimale halvevensterradius in cellen (standaard 4)."
              },
              "step": {
                "label": "Stap",
                "description": "Basisstapgrootte in cellen die wordt gebruikt door het niet-lineaire schaalschema (standaard 1)."
              },
              "num_steps": {
                "label": "Aantal stappen",
                "description": "Aantal bemonsterde schalen (standaard 10)."
              },
              "step_nonlinearity": {
                "label": "Niet-lineariteit stappen",
                "description": "Niet-lineariteitsexponent voor het schaalschema (standaard 1.0)."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Z-conversiefactor wanneer de verticale en horizontale eenheden verschillen (standaard 1.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad voor het raster met de magnitude van de sferische standaardafwijking."
              },
              "output_scale": {
                "label": "Uitvoerschaal",
                "description": "Optioneel uitvoerpad voor het raster dat de schaal van de maximale respons bevat."
              }
            }
          },
          "multiscale_std_dev_normals_signature": {
            "name": "Signatuur van multischaal standaardafwijking van normalen",
            "description": "Berekent schaalsignaturen van de sferische standaardafwijking voor invoerpuntlocaties en schrijft een HTML-rapport.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoer-DEM-raster."
              },
              "points": {
                "label": "Punten",
                "description": "Bestandspad van het invoervectorbestand met punten of multipunten."
              },
              "min_scale": {
                "label": "Minimale schaal",
                "description": "Minimale halvevensterradius in cellen (standaard 4)."
              },
              "step": {
                "label": "Stap",
                "description": "Basisstapgrootte in cellen die wordt gebruikt door het niet-lineaire schaalschema (standaard 1)."
              },
              "num_steps": {
                "label": "Aantal stappen",
                "description": "Aantal bemonsterde schalen (standaard 10)."
              },
              "step_nonlinearity": {
                "label": "Niet-lineariteit stappen",
                "description": "Niet-lineariteitsexponent voor het schaalschema (standaard 1.0)."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Z-conversiefactor wanneer de verticale en horizontale eenheden verschillen (standaard 1.0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad voor het HTML-signatuurrapport."
              }
            }
          },
          "multiscale_topographic_position_image": {
            "name": "Multischaal topografisch positiebeeld",
            "description": "Maakt een verpakt RGB-beeld van de multischalige topografische positie uit lokale, meso- en brede DEVmax-rasters.",
            "params": {
              "local": {
                "label": "Lokaal",
                "description": "Pad van het invoer-DEVmax-raster op lokale schaal."
              },
              "meso": {
                "label": "Meso",
                "description": "Pad van het invoer-DEVmax-raster op mesoschaal."
              },
              "broad": {
                "label": "Breed",
                "description": "Pad van het invoer-DEVmax-raster op brede schaal."
              },
              "hillshade": {
                "label": "Schaduwreliëf",
                "description": "Optioneel pad van het schaduwreliëfraster dat wordt gebruikt voor de modulatie van de verlichting."
              },
              "lightness": {
                "label": "Lichtheid",
                "description": "Schaalfactor voor de lichtheid van het beeld (standaard 1.2)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad voor het gepakte RGB-raster."
              }
            }
          },
          "topographic_position_animation": {
            "name": "Topografische positieanimatie",
            "description": "Maakt een interactieve HTML-viewer en een geanimeerde GIF van DEV of DEVmax over niet-lineair bemonsterde schalen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoer-DEM-raster of een getypeerd rasterobject."
              },
              "delay": {
                "label": "Vertraging",
                "description": "GIF-vertraging per frame in milliseconden."
              },
              "image_height": {
                "label": "Beeldhoogte",
                "description": "Weergegeven beeldhoogte in pixels."
              },
              "label": {
                "label": "Label",
                "description": "Optioneel label dat in de viewer wordt weergegeven."
              },
              "min_scale": {
                "label": "Minimale schaal",
                "description": "Minimale halvevensterradius in cellen (standaard 1)."
              },
              "num_steps": {
                "label": "Aantal stappen",
                "description": "Aantal animatiestappen (standaard 10)."
              },
              "palette": {
                "label": "Palet",
                "description": "Naam van het palet dat wordt gebruikt om DEV-waarden in te kleuren."
              },
              "step_nonlinearity": {
                "label": "Niet-lineariteit stappen",
                "description": "Niet-lineaire schaalexponent in [1, 4] die de afstand van grof naar fijn regelt."
              },
              "use_dev_max": {
                "label": "Maximale afwijking gebruiken",
                "description": "Indien true verzamelen de frames de sterkste absolute DEV-respons die tot dan toe is aangetroffen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het HTML-bestand."
              }
            }
          },
          "topo_render": {
            "name": "Topografische rendering",
            "description": "Maakt een pseudo-3D-topografische weergave met paletkleuring, schaduwreliëf, schaduwen en demping.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Pad van het invoer-DEM-raster."
              },
              "palette": {
                "label": "Palet",
                "description": "Naam van het palet (soft, atlas, high_relief, turbo, viridis, dem, grey, white)."
              },
              "reverse_palette": {
                "label": "Palet omkeren",
                "description": "Volgorde van het palet omkeren."
              },
              "azimuth": {
                "label": "Azimut",
                "description": "Azimut van de lichtbron in graden [0, 360]."
              },
              "altitude": {
                "label": "Zonhoogte",
                "description": "Hoogte van de lichtbron in graden [0, 90]."
              },
              "clipping_polygon": {
                "label": "Uitsnijpolygoon",
                "description": "Optioneel polygoonvectorpad; alleen DEM-cellen binnen de polygonen worden gerenderd."
              },
              "background_hgt_offset": {
                "label": "Hoogteoffset achtergrond",
                "description": "Verticale verschuiving van de minimale DEM-hoogte naar het achtergrondvlak."
              },
              "background_clr": {
                "label": "Achtergrondkleur",
                "description": "Achtergrondkleur in RGBA als array [r,g,b,a]."
              },
              "attenuation_parameter": {
                "label": "Verzwakkingsparameter",
                "description": "Exponent van de afstandsdemping (>= 0)."
              },
              "ambient_light": {
                "label": "Omgevingslicht",
                "description": "Hoeveelheid omgevingslicht in [0, 1]."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Vermenigvuldigingsfactor voor de verticale overdrijving."
              },
              "max_dist": {
                "label": "Maximale afstand",
                "description": "Maximale zoekafstand voor schaduw in kaarteenheden."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad."
              }
            }
          },
          "add_surface_information": {
            "name": "Oppervlakte-informatie toevoegen",
            "description": "Voegt per-object oppervlaktestatistieken uit een hoogteraster — Z, 3D-oppervlaktelengte, 3D-oppervlakte, min/max/gemiddelde Z en min/max/gemiddelde helling — toe als attribuutvelden zonder de invoergeometrie te wijzigen, zoals ArcGIS Add Surface Information.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag (punten, lijnen of polygonen) met hetzelfde CRS als het oppervlak."
              },
              "surface": {
                "label": "Oppervlak",
                "description": "Te bemonsteren hoogte-/oppervlakraster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorpad (stuurprogramma op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "properties": {
                "label": "Eigenschappen",
                "description": "Kommagescheiden lijst met groepen oppervlakeigenschappen die worden toegevoegd: Z, SURFACE_LENGTH, SURFACE_AREA, MIN_MAX_MEAN_Z, MIN_MAX_AVG_SLOPE. Standaard: alle die van toepassing zijn op de geometrie van de laag."
              },
              "sample_distance": {
                "label": "Bemonsteringsafstand",
                "description": "Verdichtingsinterval in CRS-eenheden voor de bemonstering van lijnen/omtrekken; lange segmenten worden opgesplitst zodat ze het oppervlak volgen. Standaard: de celgrootte van het raster."
              },
              "method": {
                "label": "Methode",
                "description": "Oppervlakbemonstering in hoekpunten: 'bilinear' (standaard) of 'nearest'."
              },
              "band": {
                "label": "Band",
                "description": "Te bemonsteren band van het oppervlakraster, 1-gebaseerd (standaard 1)."
              }
            }
          },
          "add_z_information": {
            "name": "Z-informatie toevoegen",
            "description": "Voegt van Z afgeleide geometriestatistieken toe aan 3D-objecten — punt-/min-/max-/gemiddelde Z, 3D-lengte, mesh-oppervlakte en -volume, hellingstatistieken en aantallen hoekpunten (ArcGIS Add Z Information). vector_summary_statistics en attribute_histogram vatten attributen samen in plaats van geometrie, en polygon_volume / surface_volume meten een raster ten opzichte van een referentievlak, dus niets annoteert momenteel een 3D-vectorobject op basis van zijn eigen Z.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "3D-punt-, lijn-, polygoon- of multipatch-objecten. Let op: een Z van nul is niet te onderscheiden van een ontbrekende Z, dus 'features_with_z' is een aanwijzing en geen garantie."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Invoerobjecten met de gevraagde velden toegevoegd. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "properties": {
                "label": "Eigenschappen",
                "description": "Kommagescheiden selectie uit spot_z, min_z, max_z, mean_z, length_3d, surface_area, volume, min_slope, max_slope, mean_slope, point_count, vertex_count. Standaard: alle (velden die niet op een geometrie van toepassing zijn, blijven null)."
              },
              "noise_filtering": {
                "label": "Ruisfiltering",
                "description": "Percentage (0-50) dat aan beide uiteinden van de Z-verdeling wordt afgekapt vóór min_z / max_z, zodat één enkel uitschietend hoekpunt de gerapporteerde extremen niet bepaalt. Standaard 0."
              }
            }
          },
          "adjust_3d_z": {
            "name": "3D-Z aanpassen",
            "description": "Past een Z-eenheidsconversie, verticale verschuiving en/of vermenigvuldigingsfactor toe op de Z-ordinaten van 3D-objecten.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag (de objecten moeten Z-coördinaten bevatten)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoervectorpad. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              },
              "factor": {
                "label": "Factor",
                "description": "Vermenigvuldigingsfactor die op Z wordt toegepast (standaard 1.0). Handig voor verticale overdrijving of een datumschaal."
              },
              "offset": {
                "label": "Verschuiving",
                "description": "Additieve verticale verschuiving die na de factor wordt toegepast, in doeleenheden (standaard 0.0)."
              },
              "from_unit": {
                "label": "Van eenheid",
                "description": "Vooraf ingestelde Z-eenheid van de bron (meters, feet, us_feet, centimeters, millimeters, kilometers, miles, yards, inches). Vereist to_unit."
              },
              "to_unit": {
                "label": "Naar eenheid",
                "description": "Vooraf ingestelde Z-eenheid van het doel. Vereist from_unit. Z wordt geschaald met (meters-per-from_unit / meters-per-to_unit)."
              }
            }
          },
          "adjust_stream_to_raster": {
            "name": "Waterloop aanpassen aan raster",
            "description": "Verplaatst de hoekpunten van waterlooppolylijnen naar het stroompad dat door een DEM wordt geïmpliceerd, zodat vectorhydrografie en het hoogteoppervlak overeenstemmen, door knopen te snappen naar cellen met hoge accumulatie en de D8-stroomrichtingsketen ertussen te traceren. Het omgekeerde van het inbranden van waterlopen. Zoals ArcGIS Adjust Stream To Raster.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Aan te passen polylijnobjecten van waterlopen."
              },
              "dem": {
                "label": "DEM",
                "description": "Oppervlakraster dat het werkelijke stroompad definieert."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de aangepaste waterlopen. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "snap_distance": {
                "label": "Snapafstand",
                "description": "Zoekradius in kaarteenheden om knooppunten naar een cel met hoge accumulatie te snappen (standaard: 5 cellen)."
              },
              "channel_threshold": {
                "label": "Kanaaldrempel",
                "description": "Stroomaccumulatiewaarde (in cellen) vanaf welke een cel bij het snappen als watervoerend wordt beschouwd (standaard: 1% van de maximale accumulatie van de DEM)."
              },
              "remove_disconnected": {
                "label": "Niet-verbonden verwijderen",
                "description": "Lijnen die helemaal niet gerouteerd kunnen worden weglaten (standaard true). Indien false worden ze ongewijzigd doorgegeven en gemarkeerd."
              },
              "output_stream_raster": {
                "label": "Uitvoer waterlopenraster",
                "description": "Optioneel raster dat de aangepaste waterloopcellen markeert."
              },
              "output_flow_direction": {
                "label": "Uitvoer stroomrichting",
                "description": "Optioneel D8-pointerraster afgeleid uit de DEM."
              },
              "output_split_points": {
                "label": "Uitvoer splitsingspunten",
                "description": "Optionele punten waar het volgen van de pointer is mislukt en een goedkoopste-pad-terugval is gebruikt."
              }
            }
          },
          "aggregate_multidimensional_raster": {
            "name": "Multidimensionaal raster aggregeren",
            "description": "Groepeert de plakken van een rasterkubus langs zijn dimensie in bins en reduceert elke bin tot één uitvoerband — dagelijkse scènes naar maandelijkse composieten, een decennium naar jaargemiddelden (ArcGIS Aggregate Multidimensional Raster). cell_statistics uit ronde 17 reduceert een stapel alleen tot één laag en kent geen dimensie, terwijl multidimensional_anomaly uit ronde 16 de omgekeerde bewerking uitvoert en het aantal plakken behoudt.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Eén multiband-raster (elke band is een slice) of een kommagescheiden lijst met co-geregistreerde rasters."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Multiband-uitvoerraster, één band per klasse. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "dimension": {
                "label": "Dimensie",
                "description": "Naam van de dimensie, alleen gebruikt in het rapport (standaard 'slice')."
              },
              "dimension_values": {
                "label": "Dimensiewaarden",
                "description": "Kommagescheiden coördinaat van elke slice, strikt oplopend. Standaard de 1-gebaseerde slice-index."
              },
              "aggregation_definition": {
                "label": "Aggregatiedefinitie",
                "description": "'all' (standaard), 'interval_value', 'interval_count' of 'interval_ranges'."
              },
              "interval_value": {
                "label": "Intervalwaarde",
                "description": "Klassebreedte in dimensie-eenheden, voor 'interval_value'."
              },
              "interval_count": {
                "label": "Aantal intervallen",
                "description": "Aantal klassen met gelijke breedte, voor 'interval_count'."
              },
              "interval_ranges": {
                "label": "Intervalbereiken",
                "description": "Expliciete klassen als 'start:end,start:end', voor 'interval_ranges'."
              },
              "aggregation_method": {
                "label": "Aggregatiemethode",
                "description": "'mean' (standaard), 'majority', 'maximum', 'median', 'minimum', 'minority', 'percentile', 'range', 'std', 'sum' of 'variety'."
              },
              "percentile_value": {
                "label": "Percentielwaarde",
                "description": "Percentiel in [0, 100] voor de methode 'percentile' (standaard 50)."
              },
              "ignore_nodata": {
                "label": "NoData negeren",
                "description": "No-data-slices per cel overslaan (standaard true). Indien false maakt één no-data-slice de hele klasse no-data in die cel."
              }
            }
          },
          "aggregate_points": {
            "name": "Punten aggregeren",
            "description": "Groepeert punten die binnen een aggregatieafstand van elkaar liggen tot clusterpolygonen (convexe omhullende of gebufferde vereniging), elk met een puntentelling en optionele veldsommen per cluster, zoals ArcGIS Aggregate Points.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met punten (Point of MultiPoint)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorpad voor polygonen (stuurprogramma op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "aggregation_distance": {
                "label": "Aggregatieafstand",
                "description": "Maximale afstand tussen punten waarbij ze tot hetzelfde cluster behoren (kaarteenheden)."
              },
              "min_points": {
                "label": "Minimaal aantal punten",
                "description": "Minimaal aantal punten dat een cluster nodig heeft om te worden uitgevoerd (standaard 2; stel 1 in om losse punten te behouden)."
              },
              "method": {
                "label": "Methode",
                "description": "'convex_hull' (standaard) of 'buffer' (gebufferde vereniging die weer wordt geërodeerd)."
              },
              "sum_fields": {
                "label": "Somvelden",
                "description": "Kommagescheiden numerieke velden die per cluster worden opgeteld (uitvoerkolommen 'sum_<field>')."
              }
            }
          },
          "aggregate_polygons": {
            "name": "Polygonen aggregeren",
            "description": "Combineert polygonen binnen een aggregatieafstand tot grotere polygonen (morfologische sluiting), met filters voor minimale oppervlakte en minimale gatgrootte en een optionele barrièrelaag die de aggregatie niet mag kruisen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met polygonen, formaat wordt automatisch gedetecteerd (of een verwijzing in het geheugen)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de vector (driver op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "aggregation_distance": {
                "label": "Aggregatieafstand",
                "description": "Polygonen die binnen deze afstand (CRS-eenheden) van elkaar liggen worden samengevoegd. Stelt de radius van de morfologische sluiting in op de helft van deze waarde."
              },
              "min_area": {
                "label": "Minimale oppervlakte",
                "description": "Samengevoegde polygonen met een oppervlakte (CRS-eenheden in het kwadraat) onder deze waarde weglaten. Standaard: alle behouden."
              },
              "min_hole_size": {
                "label": "Minimale gatgrootte",
                "description": "Inwendige gaten met een oppervlakte (CRS-eenheden in het kwadraat) onder deze waarde opvullen. Standaard: alle gaten behouden."
              },
              "barrier": {
                "label": "Barrière",
                "description": "Optionele vectorlaag met barrières (lijnen of polygonen) die de samenvoeging niet mag kruisen; bruggen die een barrière overspannen worden doorgeknipt. Bestaande invoerpolygonen worden nooit opgesplitst."
              }
            }
          },
          "align_features": {
            "name": "Objecten uitlijnen",
            "description": "Past bron-lijn-/polygoonranden aan op een nabijgelegen betrouwbare doellaag binnen een zoekafstand, waarbij hele randreeksen (niet alleen eindpunten) worden verplaatst met een vloeiende overgang en samenvallende gedeelde grenzen, zoals ArcGIS Align Features.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Uit te lijnen bronvectorlaag (lijnen of polygonen)."
              },
              "target": {
                "label": "Doel",
                "description": "Vertrouwde doellaag (lijnen of polygoongrenzen) waarnaar de hoekpunten van de bron worden toegetrokken."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de vector (driver uit de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "search_distance": {
                "label": "Zoekafstand",
                "description": "Maximale afstand (CRS-eenheden) waarover een bronhoekpunt naar het doel mag worden getrokken. Vereist."
              },
              "match_field": {
                "label": "Matchveld",
                "description": "Optioneel bronattribuutveld; alleen doelranden waarvan de waarde van target_match_field overeenkomt komen in aanmerking voor de hoekpunten van dat object."
              },
              "target_match_field": {
                "label": "Matchveld doel",
                "description": "Doelattribuutveld dat met match_field wordt vergeleken. Standaard de naam van match_field indien weggelaten; vereist match_field."
              }
            }
          },
          "analyze_changes_ccdc": {
            "name": "Veranderingen analyseren met CCDC",
            "description": "Continue CCDC-veranderingsdetectie op een dichte beeldtijdreeks (zoals ArcGIS Analyze Changes Using CCDC): harmonische (seizoensgebonden) OLS-regressie per pixel, gevolgd door een schuivende residutoets (k×RMSE, minimaal aantal opeenvolgende anomalieën) die breuken aangeeft en segmenten opnieuw fit. Geeft rasters met het aantal breuken, de datum van de eerste breuk en RMSE/helling/amplitude van het eerste segment — de seizoensgebonden veranderingsgeschiedenis met meerdere breuken die de jaarlijkse landtrendr en de tweedatums-change_vector_analysis niet kunnen leveren.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Eén multiband-raster (elke band is een tijddoorsnede) OF een door komma's gescheiden lijst met paden van gecoregistreerde enkelbandige rasters, in chronologische volgorde."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerraster met het aantal breuken (gedetecteerde breuken per pixel). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "dates": {
                "label": "Datums",
                "description": "Door komma's gescheiden numerieke datums (decimale jaren of dagnummers) die bij de doorsneden horen. Standaard 0,1,2,..."
              },
              "period": {
                "label": "Periode",
                "description": "Lengte van één seizoenscyclus in de eenheden van 'dates' (standaard 1.0 voor decimale jaren; gebruik 365 voor dagnummers)."
              },
              "harmonic_order": {
                "label": "Harmonische orde",
                "description": "Aantal harmonische sinus-/cosinusparen op de jaarlijkse frequentie (standaard 1 = alleen jaarlijks; 2 voegt de halfjaarlijkse term toe)."
              },
              "change_threshold": {
                "label": "Veranderingsdrempel",
                "description": "Anomaliedrempel als veelvoud k van de RMSE van het segment (standaard 3.0). Een residu > k×RMSE markeert een waarneming."
              },
              "min_consecutive": {
                "label": "Minimaal aantal opeenvolgende",
                "description": "Aantal opeenvolgende gemarkeerde waarnemingen dat vereist is om een breuk vast te stellen (standaard 3)."
              },
              "min_observations": {
                "label": "Minimaal aantal waarnemingen",
                "description": "Minimaal aantal geldige waarnemingen dat wordt gebruikt om het harmonische model van een segment te initialiseren (standaard 12). Pixels met minder geldige waarnemingen worden no-data."
              },
              "band": {
                "label": "Band",
                "description": "Bij een invoer als door komma's gescheiden lijst: de 1-gebaseerde band die uit elk raster wordt gelezen (standaard 1). Wordt genegeerd bij één multiband-invoer."
              },
              "break_date_output": {
                "label": "Uitvoer breukdatum",
                "description": "Optioneel raster met de datum van de eerste gedetecteerde breuk per pixel (no-data waar geen breuk is)."
              },
              "rmse_output": {
                "label": "Uitvoer RMSE",
                "description": "Optioneel raster met de RMSE van het harmonische model van het eerste segment."
              },
              "slope_output": {
                "label": "Uitvoer helling",
                "description": "Optioneel raster met de coëfficiënt van de lineaire trend (helling) van het eerste segment."
              },
              "amplitude_output": {
                "label": "Uitvoer amplitude",
                "description": "Optioneel raster met de amplitude van de eerste harmonische van het eerste segment, sqrt(a²+b²)."
              }
            }
          },
          "apply_radiometric_calibration": {
            "name": "Radiometrische kalibratie toepassen",
            "description": "Converteert ruwe SAR-digitale getallen naar gekalibreerde terugverstrooiing — beta nought, sigma nought of gamma nought — zodat opnamen fysisch vergelijkbaar worden en gepubliceerde drempelwaarden toepasbaar zijn (ArcGIS Apply Radiometric Calibration). Niets in beide registers doet dit: rescale_value_range is een lineaire stretch zonder radiometrische betekenis, en multilook, sar_coherence, de Lee-specklefilters en compute_sar_indices gebruiken gewoon de waarden die ze aangeleverd krijgen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "SAR-raster in digitale getallen, amplitude, intensiteit of dB (zie 'input_units')."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerraster met de gekalibreerde terugstrooiing. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "calibration_type": {
                "label": "Kalibratietype",
                "description": "'sigma0' (standaard), 'beta0' of 'gamma0'. sigma0 en gamma0 vereisen 'incidence_angle'."
              },
              "calibration_constant": {
                "label": "Kalibratieconstante",
                "description": "Kalibratieconstante A van de sensor (standaard 1.0). Wordt genegeerd wanneer 'calibration_lut' is opgegeven."
              },
              "calibration_lut": {
                "label": "Kalibratie-LUT",
                "description": "Optioneel gecoregistreerd raster met kalibratieconstanten A per cel, dat voorrang heeft op 'calibration_constant'."
              },
              "incidence_angle": {
                "label": "Invalshoek",
                "description": "Lokale invalshoek in graden: een constante of het pad van een gecoregistreerd raster. Vereist voor 'sigma0' en 'gamma0'."
              },
              "input_units": {
                "label": "Invoereenheden",
                "description": "'dn' (standaard), 'amplitude', 'intensity' of 'db'. dn en amplitude worden gekwadrateerd naar vermogen; db wordt eerst gedelineariseerd."
              },
              "output_units": {
                "label": "Uitvoereenheden",
                "description": "'linear' (standaard) of 'db'."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die wordt gekalibreerd (standaard 1)."
              }
            }
          },
          "apportion_polygon": {
            "name": "Polygoon verdelen",
            "description": "Draagt numerieke attributen van een bronpolygoonlaag over naar een doelpolygoonlaag, verdeeld naar overlappende oppervlakte (dasymetrische heraggregatie tussen zonesystemen), zoals ArcGIS Apportion Polygon.",
            "params": {
              "target": {
                "label": "Doel",
                "description": "Doelpolygoonlaag (ontvangt de verdeelde waarden; de objecten en attributen ervan blijven behouden)."
              },
              "source": {
                "label": "Bron",
                "description": "Bronpolygoonlaag met de te verdelen waarden."
              },
              "fields": {
                "label": "Velden",
                "description": "Door komma's gescheiden na(a)m(en) van de numerieke velden op de bron die worden verdeeld."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector (een kopie van het doel met de verdeelde kolommen). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "method": {
                "label": "Methode",
                "description": "'area' (standaard; verdeling naar overlapoppervlakte) of 'weight' (verdeling naar overlapoppervlakte maal het 'weight_field' van het doel)."
              },
              "weight_field": {
                "label": "Gewichtsveld",
                "description": "Numeriek veld op het doel dat als extra gewicht wordt gebruikt wanneer method=weight."
              },
              "suffix": {
                "label": "Achtervoegsel",
                "description": "Achtervoegsel voor de verdeelde uitvoerkolommen. Standaard '_app'."
              }
            }
          },
          "areal_interpolation": {
            "name": "Oppervlakte-interpolatie",
            "description": "Voorspelt geaggregeerde waarden voor doelpolygonen uit bronpolygonen met een andere geografie, door een glad onderliggend oppervlak te fitten en opnieuw te integreren in plaats van te wegen naar oppervlakte (ArcGIS Areal Interpolation Layer To Polygons). apportion_polygon gaat ervan uit dat de grootheid uniform is binnen elke bronpolygoon — de klassieke fout van het modifiable areal unit problem — en geeft geen standaardfouten; de meegeleverde kriging-suite werkt volledig op puntondersteuning en kan geen polygoonwaarnemingen accepteren.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Bronpolygonen met het gemeten veld."
              },
              "target": {
                "label": "Doel",
                "description": "Doelpolygonen waarvoor waarden worden voorspeld."
              },
              "field": {
                "label": "Veld",
                "description": "Numeriek waardeveld op de bronpolygonen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Doelpolygonen met de toegevoegde velden PREDICTED, PRED_STD_ERR en de diagnostiek. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "field_type": {
                "label": "Veldtype",
                "description": "'count' (standaard): een extensief totaal, herschaald om de bronsom te behouden. 'average': een intensief gemiddelde, rechtstreeks voorspeld zonder herschaling."
              },
              "discretization": {
                "label": "Discretisatie",
                "description": "Bij benadering het aantal interne punten dat wordt gebruikt om de oppervlaktedrager van elke polygoon weer te geven (standaard 25). Hoger is nauwkeuriger en veel trager."
              },
              "model": {
                "label": "Model",
                "description": "Variogrammodel: 'exponential' (standaard), 'spherical' of 'gaussian'."
              },
              "preserve_total": {
                "label": "Totaal behouden",
                "description": "Herschaalt de voorspelde aantallen zodat het doeltotaal overeenkomt met het brontotaal (standaard true voor 'count', altijd uit voor 'average'). Wordt alleen toegepast wanneer de doelen de bronnen bedekken — de toegepaste factor wordt als 'mass_scale' gerapporteerd, zodat een run met gedeeltelijke dekking zichtbaar is."
              }
            }
          },
          "attribute_uncertainty": {
            "name": "Attribuutonzekerheid",
            "description": "Geseede Monte-Carlo-foutpropagatie over een onzeker attribuut (zoals ArcGIS Attribute Uncertainty): trekt NORMAL/UNIFORM-realisaties uit een foutveld per object of een paar grenzen en voegt statistieken gemiddelde/std/p5/p50/p95/CV toe.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag (of tabel) met het onzekere attribuut."
              },
              "value_field": {
                "label": "Waardeveld",
                "description": "Numeriek veld dat de schatting bevat (gemiddelde/middelpunt van de verdeling) voor elk object."
              },
              "error_field": {
                "label": "Foutveld",
                "description": "Numeriek veld dat de symmetrische onzekerheid bevat: een standaardfout voor NORMAL, of een halve breedte voor UNIFORM. Geef dit OF zowel lower_field als upper_field op."
              },
              "lower_field": {
                "label": "Veld ondergrens",
                "description": "Numeriek veld met de ondergrens van de waarde. Gebruik dit samen met upper_field in plaats van error_field."
              },
              "upper_field": {
                "label": "Veld bovengrens",
                "description": "Numeriek veld met de bovengrens van de waarde. Gebruik dit samen met lower_field in plaats van error_field."
              },
              "distribution": {
                "label": "Verdeling",
                "description": "Foutverdeling: NORMAL (standaard) of UNIFORM."
              },
              "iterations": {
                "label": "Iteraties",
                "description": "Aantal Monte Carlo-realisaties per object (standaard 1000)."
              },
              "seed": {
                "label": "Seed",
                "description": "Zaad voor de deterministische RNG (standaard 1)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorlaag met de toegevoegde statistieken. Indien weggelaten, wordt het in het geheugen opgeslagen."
              }
            }
          },
          "band_collection_statistics": {
            "name": "Bandcollectiestatistieken",
            "description": "Min/max/gemiddelde/std per band plus de covariantie- en correlatiematrices tussen banden voor een rasterstapel (zoals ArcGIS Band Collection Statistics) — de multivariate samenvatting (voorloper van PCA / classificatie) die de meegeleverde suite mist; verschilt van cell_statistics per pixel.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Eén multiband-raster (elke band is een laag) of een door komma's gescheiden lijst van gecoregistreerde rasters."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel CSV-pad voor het statistiekrapport. De matrices worden altijd in het resultaat geretourneerd."
              },
              "detail": {
                "label": "Detail",
                "description": "'detailed' (standaard) omvat de covariantie-/correlatiematrices; 'brief' retourneert alleen de statistieken per band."
              }
            }
          },
          "bivariate_spatial_association": {
            "name": "Bivariate ruimtelijke associatie",
            "description": "Lee's L globale en lokale statistiek die meet waar twee continue variabelen ruimtelijk samen variëren, met een geseede permutatietoets-p-waarde en een klasse Hoog-Hoog/Hoog-Laag/Laag-Hoog/Laag-Laag per object — zoals ArcGIS Bivariate Spatial Association. De tegenhanger van colocation_analysis voor continue velden.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met twee numerieke velden."
              },
              "x_field": {
                "label": "X-veld",
                "description": "Veld van de eerste numerieke variabele."
              },
              "y_field": {
                "label": "Y-veld",
                "description": "Veld van de tweede numerieke variabele."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerlaag met velden voor de lokale L, de p-waarde en de klasse. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "neighbors": {
                "label": "Buren",
                "description": "Aantal dichtstbijzijnde buren voor de ruimtelijke gewichten (standaard 8)."
              },
              "permutations": {
                "label": "Permutaties",
                "description": "Aantal permutaties voor de significantietoets (standaard 199; 0 schakelt deze uit)."
              },
              "seed": {
                "label": "Seed",
                "description": "Zaad voor de permutatie-RNG (standaard 1), voor reproduceerbare resultaten."
              }
            }
          },
          "block_statistics": {
            "name": "Blokstatistieken",
            "description": "Verdeelt een raster in niet-overlappende blokken, reduceert elk blok met een statistiek en schrijft die waarde terug naar elke cel in het blok op de invoerresolutie (ArcGIS Block Statistics). Vult de meegeleverde focal_statistics (overlappend venster), zonal_statistics (per zonelaag) en cell_statistics (over een stapel) aan; anders dan de meegeleverde aggregate_raster behoudt het de celgrootte, zodat invoer - blokgemiddelde een lokaal residu-oppervlak oplevert, en het voegt de categorische statistieken majority/minority/median/variety toe.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerraster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              },
              "statistic": {
                "label": "Statistiek",
                "description": "Een van mean (standaard), majority, maximum, median, minimum, minority, range, std, sum, variety."
              },
              "neighborhood": {
                "label": "Omgeving",
                "description": "Blokvorm: rectangle (standaard), circle, annulus of wedge."
              },
              "size": {
                "label": "Grootte",
                "description": "Blokafmetingen in cellen: 'width,height' voor rectangle (standaard '3,3'), 'radius' voor circle/wedge, of 'inner,outer' voor annulus."
              },
              "start_angle": {
                "label": "Beginhoek",
                "description": "Beginhoek van de wig in graden tegen de klok in vanaf oost (standaard 0)."
              },
              "end_angle": {
                "label": "Eindhoek",
                "description": "Eindhoek van de wig in graden tegen de klok in vanaf oost (standaard 90)."
              },
              "ignore_nodata": {
                "label": "NoData negeren",
                "description": "Indien true (standaard) worden blokken alleen uit geldige cellen berekend; indien false maakt elke no-data-cel het hele blok no-data."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die wordt gelezen (standaard 1)."
              }
            }
          },
          "boundary_clean": {
            "name": "Grenzen opschonen",
            "description": "Strijkt zonegrenzen van categorische rasters glad en verwijdert speckle via meerderheidsfiltering of grensopschoning door uitbreiden/krimpen, de standaardopschoning vóór polygonisatie — zoals ArcGIS Boundary Clean / Majority Filter.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Categorisch invoerraster (met gehele waarden)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "method": {
                "label": "Methode",
                "description": "'majority' (spikkelverwijdering op basis van de meerderheid van de buren; standaard) of 'expand_shrink' (afvlakking volgens Boundary Clean)."
              },
              "neighbors": {
                "label": "Buren",
                "description": "Connectiviteit van de omgeving: 4 (rook) of 8 (queen; standaard)."
              },
              "threshold": {
                "label": "Drempelwaarde",
                "description": "Alleen in de modus majority: 'majority' (strikte meerderheid van de buren; standaard) of 'half' (ten minste de helft)."
              },
              "iterations": {
                "label": "Iteraties",
                "description": "Aantal uit te voeren doorlopen (standaard 1)."
              },
              "sort": {
                "label": "Sorteren",
                "description": "Alleen in de modus expand_shrink: zoneprioriteit op basis van het aantal cellen — 'descending' (grotere zones winnen; standaard), 'ascending' (kleinere zones winnen) of 'none'."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die wordt gelezen (standaard 1)."
              }
            }
          },
          "buffer_3d": {
            "name": "3D-buffer",
            "description": "Buffert 3D-punten en -lijnen tot volumetrische geometrie (bollen en capsules), uitgevoerd als een getrianguleerd oppervlak, zoals ArcGIS Buffer 3D.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlaag met 3D-punten of -polylijnen (een ontbrekende Z wordt als 0 behandeld)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              },
              "distance": {
                "label": "Afstand",
                "description": "Bufferstraal in kaarteenheden."
              },
              "distance_field": {
                "label": "Afstandsveld",
                "description": "Optioneel veld met een straal per object, dat voorrang heeft op 'distance'."
              },
              "shape": {
                "label": "Vorm",
                "description": "round (standaard; halfronde kappen) of flat (cilinder met vlakke kappen)."
              },
              "quality": {
                "label": "Kwaliteit",
                "description": "Tessellatieresolutie: aantal segmenten rond de omtrek (standaard 12, minimaal 4, maximaal 64)."
              }
            }
          },
          "buffer_vector": {
            "name": "Vector bufferen",
            "description": "Breidt geometrieën uit met een opgegeven afstand en maakt polygoonbuffers met aanpasbare eind-/verbindingsstijlen. Optioneel samenvoegen (dissolve) combineert overlappende buffers tot verenigde polygonen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "distance": {
                "label": "Afstand",
                "description": "Bufferafstand in kaarteenheden."
              },
              "quadrant_segments": {
                "label": "Kwadrantsegmenten",
                "description": "Boogresolutie in segmenten per kwadrant; standaard 8."
              },
              "cap_style": {
                "label": "Eindstijl",
                "description": "Stijl van de eindkap van lijnen: round, flat of square."
              },
              "join_style": {
                "label": "Verbindingsstijl",
                "description": "Stijl van de hoekverbinding: round, bevel of mitre."
              },
              "mitre_limit": {
                "label": "Verstekgrens",
                "description": "Versteklimiet die wordt gebruikt wanneer join_style=mitre; standaard 5.0."
              },
              "dissolve": {
                "label": "Samenvoegen (dissolve)",
                "description": "Voegt overlappende buffers samen tot één verenigde polygoon; standaard false."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector."
              }
            }
          },
          "build_balanced_zones": {
            "name": "Gebalanceerde zones opbouwen",
            "description": "Groepeert aaneengesloten polygonen in een doelaantal verbonden zones die het aantal objecten, een attribuutsom of attribuuthomogeniteit in evenwicht brengen, met SKATER-partitionering op basis van een opspannende boom.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerpolygoonlaag, formaat automatisch gedetecteerd (of een handle in het geheugen)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de vector (driver op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "zones": {
                "label": "Zones",
                "description": "Beoogd aantal te maken zones."
              },
              "criterion": {
                "label": "Criterium",
                "description": "Balansdoelstelling: 'homogeneity' (standaard), 'equal_count' of 'equal_sum' (van het eerste veld)."
              },
              "fields": {
                "label": "Velden",
                "description": "Door komma's gescheiden numeriek(e) analyseveld(en). Vereist voor 'homogeneity' en 'equal_sum'; bepaalt de randgewichten van de opspannende boom."
              },
              "contiguity": {
                "label": "Contiguïteit",
                "description": "Aangrenzingsregel: 'rook' (gedeelde rand, standaard) of 'queen' (gedeelde rand of hoekpunt)."
              },
              "tolerance": {
                "label": "Tolerantie",
                "description": "Maximale afstand waarbij twee begrenzingssegmenten als gedeeld gelden (rook). Standaard 1e-6."
              }
            }
          },
          "build_seamlines": {
            "name": "Naadlijnen opbouwen",
            "description": "Berekent voor een set overlappende rasters (en optionele omtrekken) waar elk beeld moet worden gesneden zodat het mozaïek langs een minimaal zichtbare naad aansluit, en geeft per beeld één niet-overlappende naadlijnpolygoon via een Voronoi-, prioriteitsvolgorde-, radiometrische of randbewuste toewijzing. Zoals ArcGIS Build Seamlines.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Door komma's/puntkomma's gescheiden rasterpaden die worden gemozaïekt."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de naadlijnpolygonen (één object per invoerraster). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "footprints": {
                "label": "Contouren",
                "description": "Optionele polygoonlaag die de geldige omvang van elk raster geeft, in de volgorde van de invoer. Wordt indien weggelaten afgeleid uit de geldige gegevens."
              },
              "method": {
                "label": "Methode",
                "description": "'voronoi' (standaard), 'order', 'radiometry' of 'edge_detection'."
              },
              "sort_ascending": {
                "label": "Oplopend sorteren",
                "description": "Voor de methode 'order': true (standaard) geeft eerdere rasters voorrang, false geeft latere rasters voorrang."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Celgrootte voor de analyse (standaard: de fijnste celgrootte van de invoer)."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die voor de radiometrische methoden wordt gebruikt (standaard 1)."
              },
              "min_region_size": {
                "label": "Minimale regiogrootte",
                "description": "Wijst toegewezen regio's die kleiner zijn dan dit aantal cellen opnieuw toe aan een aangrenzend beeld (standaard 0, d.w.z. alles behouden)."
              },
              "blend_width": {
                "label": "Overgangsbreedte",
                "description": "Verloopbreedte in kaarteenheden, weggeschreven als attribuut voor het mozaïeken verderop in de keten (standaard 0)."
              },
              "blend_type": {
                "label": "Overgangstype",
                "description": "'both' (standaard), 'inside' of 'outside'; wordt als attribuut weggeschreven."
              }
            }
          },
          "calculate_adjacent_fields": {
            "name": "Aangrenzende velden berekenen",
            "description": "Vult acht velden voor richtingsgewijze buurbladen (N, NO, O, ZO, Z, ZW, W, NW) op elke tegel van een kaartserie-indexraster met de naam van het aangrenzende blad, voor marge-labels van het type 'vervolg op blad …' — zoals ArcGIS Calculate Adjacent Fields.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerpolygoonlaag met het indexraster van de kaartserie (bijv. de uitvoer van grid_index_features)."
              },
              "page_name_field": {
                "label": "Veld paginanaam",
                "description": "Veld waarvan de waarde elke pagina benoemt (wordt in de richtingsvelden van de buren weggeschreven)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpolygoonvector (driver uit de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "include_diagonal": {
                "label": "Diagonaal opnemen",
                "description": "Vult ook de vier diagonale velden (NE, SE, SW, NW) op basis van tegels die hoekpunten raken. Standaard true."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Kwantiseert hoekpunten op een rooster van deze grootte (CRS-eenheden) voordat grenzen worden vergeleken. Standaard 0 (exacte coördinaten)."
              }
            }
          },
          "calculate_central_meridian_and_parallels": {
            "name": "Centrale meridiaan en parallellen berekenen",
            "description": "Berekent per object een centrale meridiaan en twee standaardparallellen uit het bereik van elk object, voor kaartseries en atlaspagina's, zoals ArcGIS Calculate Central Meridian And Parallels.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerobjecten in geografische coördinaten (lengte-/breedtegraad), doorgaans een paginaraster uit grid_index_features."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              },
              "field": {
                "label": "Veld",
                "description": "Naam van het weg te schrijven veld met de centrale meridiaan (standaard 'central_meridian')."
              },
              "standard_offset": {
                "label": "Standaardoffset",
                "description": "Fractie van het breedtegraadbereik waarmee elke standaardparallel vanaf de rand van het object naar binnen wordt gezet (standaard 0.1667, de 1/6-regel van Esri). Moet in [0, 0.5) liggen."
              }
            }
          },
          "calculate_composite_index": {
            "name": "Samengestelde index berekenen",
            "description": "Combineert meerdere numerieke attributen tot een samengestelde index (zoals ArcGIS Calculate Composite Index): schaling per variabele (min-max/z-score/percentiel) met optionele omkering, gewogen combinatie (gemiddelde/som/meetkundig gemiddelde) en herschaling van de uitvoer — de vector-tegenhanger van fuzzy_overlay.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag (of tabel) met numerieke variabelevelden."
              },
              "fields": {
                "label": "Velden",
                "description": "Door komma's gescheiden variabelevelden; voeg ':reverse' toe aan een veld waarvan hoge waarden de index moeten verlagen (bijv. 'income:reverse,unemployment')."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorlaag met de toegevoegde indexvelden. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "scaling": {
                "label": "Schaling",
                "description": "Schaling per variabele: 'minmax' (standaard), 'zscore', 'percentile' of 'none'."
              },
              "weights": {
                "label": "Gewichten",
                "description": "Door komma's gescheiden gewichten die bij 'fields' horen (standaard: gelijke gewichten)."
              },
              "combine": {
                "label": "Combineren",
                "description": "Hoe de geschaalde variabelen worden gecombineerd: 'mean' (standaard), 'sum' of 'geometric_mean'."
              },
              "output_range": {
                "label": "Uitvoerbereik",
                "description": "Herschaling van de gecombineerde index: 'minmax' (0–1, standaard), 'zero_to_100', 'zscore' of 'none'."
              }
            }
          },
          "calculate_distance_band": {
            "name": "Afstandsband berekenen",
            "description": "Rapporteert de minimale, gemiddelde en maximale afstand waarbij elk object ten minste N buren heeft (zoals ArcGIS Calculate Distance Band from Neighbor Count) — de drempeldiagnostiek die garandeert dat geen enkel object zonder buren blijft vóór afstandsgebaseerde ruimtelijke statistiek. De meegeleverde generate_spatial_weights_matrix bouwt de matrix, maar rapporteert deze band nooit.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met punten/objecten (geprojecteerd CRS; afstanden in de eenheden daarvan)."
              },
              "neighbors": {
                "label": "Buren",
                "description": "Aantal buren k (>= 1). Standaard 1."
              },
              "distance_method": {
                "label": "Afstandsmethode",
                "description": "'euclidean' (standaard) of 'manhattan'."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel CSV-pad voor een tabel feature_id,kth_neighbor_distance."
              }
            }
          },
          "calculate_end_time": {
            "name": "Eindtijd berekenen",
            "description": "Vult een eindtijdveld met de starttijd van het volgende record binnen elke entiteitsgroep, waardoor momentopnamen worden omgezet in records met een tijdsbereik (ArcGIS Calculate End Time). transform_fields voert transformaties per waarde uit en summary_statistics aggregeert groepen, maar niets voerde een op rijvolgorde gebaseerde temporele vulling uit.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag of -tabel."
              },
              "start_field": {
                "label": "Beginveld",
                "description": "Tijdstempelveld: een numerieke epochwaarde, of een ISO-8601-datum-/datumtijdtekenreeks."
              },
              "end_field": {
                "label": "Eindveld",
                "description": "Veld dat de eindtijd ontvangt (standaard 'END_TIME'). Wordt aangemaakt als het ontbreekt en overschreven als het aanwezig is."
              },
              "id_fields": {
                "label": "ID-velden",
                "description": "Door komma's of puntkomma's gescheiden groeperingsvelden. Eindtijden worden alleen binnen een groep afgeleid, nooit over groepsgrenzen heen."
              },
              "last_record": {
                "label": "Laatste record",
                "description": "Wat voor de laatste rij van elke groep wordt weggeschreven: 'null' (standaard), 'same_as_start' of 'duration' (begin + default_duration)."
              },
              "default_duration": {
                "label": "Standaardduur",
                "description": "Aantal seconden dat bij het begin wordt opgeteld voor last_record 'duration'."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerlaag. Indien weggelaten, wordt het in het geheugen opgeslagen."
              }
            }
          },
          "calculate_grid_convergence_angle": {
            "name": "Rasterconvergentiehoek berekenen",
            "description": "Berekent per object de rasterconvergentiehoek tussen rasternoorden en het ware noorden uit de lengte-/breedtegraad van het zwaartepunt en een centrale meridiaan (standaard de eigen UTM-centrale meridiaan van het object) en schrijft deze naar een veld voor correcte symbool-/labelrotatie op geprojecteerde kaarten — zoals ArcGIS Calculate Grid Convergence Angle. Geografische (met de klok mee vanaf het noorden) of rekenkundige (tegen de klok in vanaf het oosten) conventie. Pure wiskunde, geen PROJ; staat los van de meegeleverde terreinmaat convergence_index. Geometrie wordt gelezen als lengte-/breedtegraden.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag (elk geometrietype) in geografische coördinaten (lon/lat in graden, EPSG:4326)."
              },
              "angle_field": {
                "label": "Hoekveld",
                "description": "Naam van het floatveld dat de convergentiehoek in graden bevat. Standaard 'GRID_CONV'."
              },
              "angle_type": {
                "label": "Hoektype",
                "description": "Hoekconventie: 'geographic' (graden met de klok mee vanaf het noorden, positief naar het oosten) of 'arithmetic' (graden tegen de klok in vanaf het oosten, 90 − geographic). Standaard 'geographic'."
              },
              "central_meridian": {
                "label": "Centrale meridiaan",
                "description": "Lengtegraad van de centrale meridiaan in graden. Indien weggelaten, gebruikt elk object de centrale meridiaan van zijn eigen UTM-zone, afgeleid uit zijn lengtegraad."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorpad (stuurprogramma op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              }
            }
          },
          "calculate_missing_z_values": {
            "name": "Ontbrekende Z-waarden berekenen",
            "description": "Vult placeholder- of ontbrekende Z-waarden langs 3D-objecten op door te interpoleren uit de geldige Z-waarden aan weerszijden, zoals ArcGIS Calculate Missing Z Values.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerobjectlaag met 3D-hoekpunten."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              },
              "placeholder": {
                "label": "Plaatshouder",
                "description": "Sentinelwaarde die een ontbrekende Z markeert (bijv. -9999). Hoekpunten zonder enige Z worden altijd als ontbrekend behandeld."
              },
              "method": {
                "label": "Methode",
                "description": "Vulmethode: 'linear' (standaard; interpoleert op basis van de afstand langs het object) of 'nearest'."
              },
              "extrapolate": {
                "label": "Extrapoleren",
                "description": "Vult gaten aan het begin/einde door het dichtstbijzijnde geldige hoekpunt door te trekken (standaard false; niet-gevulde hoekpunten worden in plaats daarvan geteld)."
              }
            }
          },
          "calculate_motion_statistics": {
            "name": "Bewegingsstatistieken berekenen",
            "description": "Annoteert trackpunten met tijdstempel met bewegingsstatistieken — snelheid, versnelling, peiling, segment- en cumulatieve afstand, verstreken tijd en stilstandvlag — gegroepeerd per track en gesorteerd op tijd, zoals ArcGIS Calculate Motion Statistics.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met punten van waarnemingen met tijdstempels."
              },
              "track_field": {
                "label": "Trackveld",
                "description": "Veld dat elk spoor / elke bewegende entiteit identificeert."
              },
              "time_field": {
                "label": "Tijdveld",
                "description": "Veld dat de tijd van elk punt bevat: numerieke seconden of een ISO-8601-tijdstempel."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpuntvector (oorspronkelijke attributen + bewegingsvelden). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "window": {
                "label": "Venster",
                "description": "Aantal voorafgaande punten voor de afgevlakte 'avg_speed' (standaard 1 = momentaan)."
              },
              "idle_distance": {
                "label": "Stilstandsafstand",
                "description": "Stilstandsstraal: een punt is stilstaand wanneer de bewegende entiteit in de afgelopen idle_duration seconden niet meer dan deze afstand heeft afgelegd. Standaard 0 (stilstandsdetectie uit)."
              },
              "idle_duration": {
                "label": "Stilstandsduur",
                "description": "Terugkijkvenster (seconden) voor de stilstandsdetectie. Standaard 60."
              }
            }
          },
          "calculate_polygon_main_angle": {
            "name": "Hoofdhoek van polygoon berekenen",
            "description": "Schrijft de dominante oriëntatie van elke polygoon (de richting van de lange zijde van de omsluitende rechthoek met minimale oppervlakte, via rotating calipers) naar een hoekveld — zoals ArcGIS Calculate Polygon Main Angle. De vectororiëntatie per polygoon die de meegeleverde, uitsluitend rastergebaseerde patch_orientation mist; voedt symbool-/labelrotatie.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlaag met polygonen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpolygoonlaag met het toegevoegde hoekveld. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "angle_field": {
                "label": "Hoekveld",
                "description": "Naam van het weg te schrijven hoekveld (standaard 'MainAngle')."
              },
              "convention": {
                "label": "Conventie",
                "description": "'arithmetic' (tegen de klok in vanaf oost; standaard), 'geographic' (met de klok mee vanaf noord) of 'graphic' (met de klok mee vanaf oost)."
              }
            }
          },
          "calculate_rates": {
            "name": "Percentages berekenen",
            "description": "Berekent gladgestreken percentages uit telling- en populatievelden (zoals ArcGIS Calculate Rates): ruw percentage, globale empirische Bayes van Marshall of ruimtelijke empirische Bayes over k naaste buren — de standaard stabilisatiestap vóór hotspotanalyse van ziekte-/misdaadcijfers.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlaag met polygonen of punten met velden voor het aantal en de bevolking."
              },
              "count_field": {
                "label": "Aantalveld",
                "description": "Veld dat het aantal gebeurtenissen bevat (de teller)."
              },
              "population_field": {
                "label": "Bevolkingsveld",
                "description": "Veld dat de bevolking met risico bevat (de noemer)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerlaag met de toegevoegde ratiovelden. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "method": {
                "label": "Methode",
                "description": "'crude', 'eb_global' (standaard) of 'eb_spatial'."
              },
              "per": {
                "label": "Per",
                "description": "Vermenigvuldiger voor de ratio, bijv. 100000 voor per 100.000 (standaard 100000)."
              },
              "neighbors": {
                "label": "Buren",
                "description": "Alleen voor eb_spatial: het aantal dichtstbijzijnde buren voor de lokale referentieratio (standaard 8)."
              }
            }
          },
          "calculate_transformation_errors": {
            "name": "Transformatiefouten berekenen",
            "description": "Fit een gelijkvormigheids-/affiene/projectieve transformatie uit verplaatsingslinks en rapporteert de residufout van elke link plus de totale RMSE, zodat slechte paspunten vóór het transformeren kunnen worden gevonden en verwijderd. Zoals ArcGIS Calculate Transformation Errors.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Lijnen met verplaatsingskoppelingen: het eerste hoekpunt is het bronpunt (van), het laatste hoekpunt het doelpunt (naar)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad voor de koppelingstabel met de toegevoegde residuvelden. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "method": {
                "label": "Methode",
                "description": "'affine' (standaard, 6 parameters), 'similarity' (4) of 'projective' (8)."
              },
              "keep_geometry": {
                "label": "Geometrie behouden",
                "description": "Behoudt de geometrie van elke koppeling in de uitvoer (standaard true). Zet op false voor een zuivere tabel."
              }
            }
          },
          "calculate_transit_service_frequency": {
            "name": "Frequentie van OV-diensten berekenen",
            "description": "GTFS-OV-dienstfrequentie binnen een tijdvenster: telt voor een dienstdatum (via calendar/calendar_dates) en tijdvenster de ritten die elke halte of routelijn bedienen en rapporteert ritten per uur, zoals ArcGIS Calculate Transit Service Frequency.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar een uitgepakte map met een GTFS-feed."
              },
              "target": {
                "label": "Doel",
                "description": "'stops' (één punt per halte, standaard) of 'lines' (één polylijn per route)."
              },
              "date": {
                "label": "Datum",
                "description": "Dienstdatum JJJJMMDD, bepaald via calendar.txt/calendar_dates.txt. Indien weggelaten, tellen alle diensten mee."
              },
              "start_time": {
                "label": "Begintijd",
                "description": "Begin van het venster in HH:MM of HH:MM:SS (GTFS-tijden kunnen 24:00 overschrijden). Indien weggelaten, telt de hele dag mee."
              },
              "duration_minutes": {
                "label": "Duur (minuten)",
                "description": "Vensterlengte in minuten (wordt samen met start_time gebruikt; bepaalt ook de noemer per uur)."
              },
              "count": {
                "label": "Aantal",
                "description": "'departures' (standaard) of 'arrivals' — welk veld uit de haltetijden wordt geteld."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorpad (stuurprogramma op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              }
            }
          },
          "calculate_utm_zone": {
            "name": "UTM-zone berekenen",
            "description": "Berekent de optimale UTM-zone en WGS84-EPSG-code voor elk object uit de lengte-/breedtegraad van het zwaartepunt en voegt een zoneveld (1–60) en een EPSG-veld (326##/327##) toe — voor kaartseries met adaptieve projectie, zoals ArcGIS Calculate UTM Zone. Pure wiskunde met de uitzonderingen voor Noorwegen/Spitsbergen; geen PROJ. Geometrie wordt gelezen als lengte-/breedtegraden.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag (elk geometrietype) in geografische coördinaten (lon/lat in graden, EPSG:4326)."
              },
              "zone_field": {
                "label": "Zoneveld",
                "description": "Naam van het gehele veld dat het UTM-zonenummer (1–60) bevat. Standaard 'utm_zone'."
              },
              "epsg_field": {
                "label": "EPSG-veld",
                "description": "Naam van het gehele veld dat de WGS84-UTM-EPSG-code bevat (326## noord, 327## zuid). Standaard 'utm_epsg'."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorpad (stuurprogramma op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              }
            }
          },
          "cartogram": {
            "name": "Cartogram",
            "description": "Vervormt polygonen zodat de oppervlakte evenredig is met een attribuutwaarde: niet-aaneengesloten (elke polygoon schalen rond het zwaartepunt) of Dorling (proportionele cirkels met verwijdering van overlap).",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met polygonen, formaat wordt automatisch gedetecteerd (of een verwijzing in het geheugen)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de vector (driver op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "value_field": {
                "label": "Waardeveld",
                "description": "Numeriek veld waarvan de waarde evenredig moet zijn met de oppervlakte van elk object."
              },
              "method": {
                "label": "Methode",
                "description": "'non_contiguous' (standaard; polygonen ter plaatse schalen) of 'dorling' (evenredige cirkels)."
              },
              "iterations": {
                "label": "Iteraties",
                "description": "Aantal Dorling-iteraties om overlap te verwijderen (standaard 100). Wordt door non_contiguous genegeerd."
              }
            }
          },
          "causal_inference_analysis": {
            "name": "Causale-inferentieanalyse",
            "description": "Schat het causale effect van een binaire behandeling op een uitkomst via propensity-score-matching, inverse-probability-weging of regressiecorrectie, met een geseed bootstrap-betrouwbaarheidsinterval en een covariaatbalanstabel per confounder vóór/na correctie (zoals ArcGIS Causal Inference Analysis).",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerobjectlaag."
              },
              "outcome_field": {
                "label": "Uitkomstveld",
                "description": "Numeriek veld met de uitkomst (afhankelijke variabele)."
              },
              "treatment_field": {
                "label": "Behandelingsveld",
                "description": "Binair (0/1 of booleaans) behandelingsveld. Continue behandelingen worden in deze versie niet ondersteund."
              },
              "confounding_fields": {
                "label": "Verstorende velden",
                "description": "Door komma's gescheiden numeriek(e) verstorend(e) veld(en) waarvoor wordt gecorrigeerd."
              },
              "method": {
                "label": "Methode",
                "description": "'ps_matching' (standaard, matching op de propensityscore met de dichtstbijzijnde buur binnen een caliper), 'ipw' (gestabiliseerde inverse-kanswegging) of 'regression_adjustment' (uitkomst ~ behandeling + verstorende variabelen)."
              },
              "add_spatial_confounders": {
                "label": "Ruimtelijke confounders toevoegen",
                "description": "Indien true wordt de set verstorende variabelen uitgebreid met de x-/y-coördinaten van elk object plus het gemiddelde van elke verstorende variabele over de k dichtstbijzijnde buren (standaard false)."
              },
              "balance_threshold": {
                "label": "Balansdrempel",
                "description": "Drempelwaarde voor het gestandaardiseerde gemiddelde verschil bij de balanscontrole na correctie (standaard 0.1)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de vector (kopie van de invoer plus kolommen voor de propensityscore / het gewicht / de match-ID). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "seed": {
                "label": "Seed",
                "description": "Geheel zaad voor het deterministische bootstrap-betrouwbaarheidsinterval (standaard 42)."
              }
            }
          },
          "cell_position_statistics": {
            "name": "Celpositiestatistieken",
            "description": "Positie- en rangstatistieken per cel over een stapel uitgelijnde rasters (ArcGIS Highest Position, Lowest Position, Popularity en Rank): welke laag de extreme waarde bevat, de waarde die een gegeven aantal keer voorkomt, of de n-de kleinste waarde. cell_statistics reduceert een stapel tot een waarde en kan nooit rapporteren uit welke laag die waarde kwam, en de meegeleverde find_argument_statistics werkt langs de argumentas van één multibandraster zonder de popularity/rank-selectiesemantiek.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Eén multiband-raster (elke band is een laag) of een door komma's gescheiden lijst van gecoregistreerde rasters."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerraster. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "statistic": {
                "label": "Statistiek",
                "description": "'highest_position' (standaard), 'lowest_position', 'popularity' of 'rank'."
              },
              "selector": {
                "label": "Selector",
                "description": "Vereist voor 'popularity' en 'rank': het pad van een gecoregistreerd raster of een constant getal dat per cel het aantal voorkomens (popularity) of de te selecteren 1-gebaseerde rang geeft."
              },
              "ignore_nodata": {
                "label": "NoData negeren",
                "description": "Slaat no-data-waarnemingen per cel over (standaard true). Indien false maakt elke no-data-waarneming de cel no-data."
              },
              "process_as_multiband": {
                "label": "Als multiband verwerken",
                "description": "'single_band' (standaard): elke band van elke invoer vormt één laag van één stapel. 'multi_band': band i van elke invoer vormt een eigen stapel, wat een multiband-resultaat oplevert."
              }
            }
          },
          "cell_records_to_sectors": {
            "name": "Celrecords naar sectoren",
            "description": "Bouwt antennedekkingsgeometrie uit zendmastpunten: wigpolygonen of bissectrice-sectorlijnen uit azimut, bundelbreedte en straal per mast — zoals ArcGIS Cell Site Records To Feature Class / Generate Sector Lines.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met punten van antennes/masten."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorpad (stuurprogramma op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "output_type": {
                "label": "Uitvoertype",
                "description": "Uit te voeren geometrie: 'wedge' (dekkingspolygonen, standaard) of 'line' (bissectricelijnen van de sectoren)."
              },
              "azimuth_field": {
                "label": "Azimutveld",
                "description": "Veld dat de azimut van elke antenne bevat (kompasgraden, 0 = noord, met de klok mee). Valt terug op 'azimuth' wanneer het ontbreekt."
              },
              "beamwidth_field": {
                "label": "Bundelbreedteveld",
                "description": "Veld dat de bundelbreedte van elke antenne in graden bevat. Valt terug op 'beamwidth' wanneer het ontbreekt."
              },
              "radius_field": {
                "label": "Straalveld",
                "description": "Veld dat de dekkingsstraal van elke antenne in CRS-eenheden bevat. Valt terug op 'radius' wanneer het ontbreekt."
              },
              "azimuth": {
                "label": "Azimut",
                "description": "Standaardazimut in kompasgraden wanneer geen veld is opgegeven / een waarde ontbreekt. Standaard 0."
              },
              "beamwidth": {
                "label": "Bundelbreedte",
                "description": "Standaardbundelbreedte in graden (0 < bw ≤ 360; ≥ 360 = rondstralend). Standaard 65."
              },
              "radius": {
                "label": "Straal",
                "description": "Standaarddekkingsstraal in CRS-eenheden (moet positief zijn). Standaard 1000."
              },
              "segments": {
                "label": "Segmenten",
                "description": "Aantal rechte segmenten waarmee elke sectorboog wordt benaderd (≥ 1). Standaard 16."
              }
            }
          },
          "cell_statistics": {
            "name": "Celstatistieken",
            "description": "Statistiek per pixel over een stapel uitgelijnde rasters (zoals ArcGIS Cell Statistics): gemiddelde, meerderheid, maximum, mediaan, minimum, minderheid, percentiel, bereik, std, som of variëteit — de lokale multi-rasterreductor die de meegeleverde sum_overlay/weighted_sum (alleen som) en de omgevings-/zonale tools niet bieden.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Eén multiband-raster (elke band is een laag) of een door komma's gescheiden lijst van gecoregistreerde rasters."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Enkelbandig uitvoerraster met de gereduceerde waarde. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "statistic": {
                "label": "Statistiek",
                "description": "'mean' (standaard), 'majority', 'maximum', 'median', 'minimum', 'minority', 'percentile', 'range', 'std', 'sum' of 'variety'."
              },
              "ignore_nodata": {
                "label": "NoData negeren",
                "description": "Slaat no-data-waarnemingen per cel over (standaard true). Indien false maakt elke no-data-waarneming de cel no-data."
              },
              "percentile_value": {
                "label": "Percentielwaarde",
                "description": "Percentiel in [0, 100] voor de statistiek 'percentile' (standaard 50 = mediaan)."
              }
            }
          },
          "central_feature": {
            "name": "Centraal object / lineair richtingsgemiddelde",
            "description": "Het centrale object (het invoerobject met de kleinste totale afstand tot alle andere) of het lineaire richtingsgemiddelde (gemiddelde peiling, circulaire variantie en gemiddelde lengte van lijnobjecten) — de twee leden van Measuring Geographic Distributions die directional_distribution mist (ArcGIS Central Feature / Linear Directional Mean).",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag (punten voor central_feature; lijnen voor linear_directional_mean)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorpad (stuurprogramma op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "statistic": {
                "label": "Statistiek",
                "description": "'central_feature' (standaard) of 'linear_directional_mean'."
              },
              "weight_field": {
                "label": "Gewichtsveld",
                "description": "Optioneel numeriek veld dat elk object weegt (alleen voor central_feature)."
              },
              "case_field": {
                "label": "Casusveld",
                "description": "Optioneel veld om objecten op te groeperen; één resultaat per afzonderlijke waarde."
              },
              "distance": {
                "label": "Afstand",
                "description": "Afstandsmaat voor central_feature: 'euclidean' (standaard) of 'manhattan'."
              },
              "orientation_only": {
                "label": "Alleen oriëntatie",
                "description": "Behandelt lijnen als ongericht (oriëntatie modulo 180°) voor linear_directional_mean. Standaard false."
              }
            }
          },
          "change_point_detection": {
            "name": "Veranderpuntdetectie",
            "description": "Detecteert abrupte verschuivingen in de tijdreeks op elke locatie van een H3-ruimte-tijdkubus (zoals ArcGIS Change Point Detection): binaire segmentatie op een gemiddelde- of hellingsverschuivingskost met een gevoeligheidsgeschaalde straf (of een vast aantal veranderpunten), met per cel het aantal veranderingen, het jaar van de grootste verandering en de segmentgemiddelden. De temporele segmentatie die de tweedatums-change_vector_analysis en monotone Mann-Kendall-toetsen niet kunnen doen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerpuntlaag met gebeurtenissen met tijdstempels (lon/lat)."
              },
              "time_field": {
                "label": "Tijdveld",
                "description": "Veld dat de tijd van elk punt bevat: een getal of een ISO-8601-tijdstempel."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoer-H3-polygoonlaag met attributen van de breekpunten. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "value_field": {
                "label": "Waardeveld",
                "description": "Numeriek veld dat per bin wordt geaggregeerd (standaard: het aantal punten)."
              },
              "change_type": {
                "label": "Veranderingstype",
                "description": "'mean' (niveauverschuivingen; standaard) of 'slope' (trendverschuivingen)."
              },
              "method": {
                "label": "Methode",
                "description": "'auto' (op basis van een straffunctie, standaard) of 'defined' (precies num_change_points)."
              },
              "num_change_points": {
                "label": "Aantal veranderpunten",
                "description": "Methode defined: het aantal per locatie te vinden breekpunten (standaard 1)."
              },
              "sensitivity": {
                "label": "Gevoeligheid",
                "description": "Methode auto: de schaal van de straffunctie; hoger = minder breekpunten (standaard 1.0)."
              },
              "time_step": {
                "label": "Tijdstap",
                "description": "Breedte van een tijdstap in de eenheden van time_field (standaard 1)."
              },
              "resolution": {
                "label": "Resolutie",
                "description": "H3-resolutie 0..15 (standaard 7)."
              }
            }
          },
          "classification_accuracy_assessment": {
            "name": "Beoordeling van classificatienauwkeurigheid",
            "description": "Beoordeelt een geclassificeerd raster (of punten die al een voorspelde klasse dragen) ten opzichte van referentiepunten met grondwaarheidslabels en produceert een verwarringsmatrix, totale nauwkeurigheid, producer's/user's accuracy per klasse en Cohen's kappa — zoals ArcGIS Compute Confusion Matrix.",
            "params": {
              "points": {
                "label": "Punten",
                "description": "Puntlaag met referentiepunten (nauwkeurigheidsbeoordeling) met het veld voor de referentieklasse."
              },
              "class_field": {
                "label": "Klasseveld",
                "description": "Attribuut op de punten dat het label van de referentieklasse bevat."
              },
              "input": {
                "label": "Invoer",
                "description": "Geclassificeerd raster dat op elk referentiepunt wordt bemonsterd (dichtstbijzijnde cel). Geef dit OF 'classified_field' op."
              },
              "classified_field": {
                "label": "Geclassificeerd veld",
                "description": "Attribuut op de punten dat de voorspelde (kaart)klasse al bevat, dat in plaats van het bemonsteren van een raster wordt gebruikt. Geef dit OF 'input' op."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band van het geclassificeerde raster die wordt bemonsterd (standaard 1)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector voor de referentiepunten voorzien van REF_CLASS, MAP_CLASS en CORRECT. Indien weggelaten, wordt het in het geheugen opgeslagen."
              }
            }
          },
          "collapse_dual_lines_to_centerline": {
            "name": "Dubbele lijnen samenvoegen tot middellijn",
            "description": "Detecteert paren van ruwweg parallelle lijnen binnen een breedtetolerantie (gescheiden rijbanen, wegomlijningen) en vervangt elk paar door één middellijn, waarbij kruispunten opnieuw worden verbonden — zoals ArcGIS Collapse Dual Lines To Centerline.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met lijnen (geprojecteerd CRS; breedtes in de eenheden daarvan)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de lijnvector (driver uit de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "min_width": {
                "label": "Minimale breedte",
                "description": "Minimale afstand tussen gekoppelde lijnen, in CRS-eenheden (standaard 0)."
              },
              "max_width": {
                "label": "Maximale breedte",
                "description": "Maximale afstand tussen gekoppelde lijnen, in CRS-eenheden. Vereist (de samenvouwbreedte)."
              },
              "attribute": {
                "label": "Attribuut",
                "description": "Optioneel veld dat moet overeenkomen om twee lijnen te koppelen (bijv. wegnaam of -klasse)."
              },
              "sample_distance": {
                "label": "Bemonsteringsafstand",
                "description": "Verdichtingsinterval voor het toetsen van de evenwijdigheid, in CRS-eenheden. Standaard: max_width / 2."
              },
              "min_overlap": {
                "label": "Minimale overlap",
                "description": "Minimale fractie van een lijn die evenwijdig aan haar partner moet lopen om te worden gekoppeld (0-1, standaard 0.5)."
              }
            }
          },
          "collapse_hydro_polygon": {
            "name": "Hydropolygoon samenvoegen",
            "description": "Reduceert smalle waterpolygonen tot middellijnen terwijl brede trajecten als polygonen behouden blijven (zoals ArcGIS Collapse Hydro Polygon): traceert de middellijn van elke polygoon langs zijn hoofdas via de middelpunten van loodrechte dwarsdoorsneden, meet de lokale breedte en reduceert waar de mediane breedte op of onder een drempelwaarde ligt. De breedtegedrempelde polygoon-naar-lijn-generalisatie die de lijnomlijnings-collapse_dual_lines_to_centerline en de rastergebaseerde river_centerlines niet doen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlaag met waterpolygonen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerlaag met hartlijnen voor samengevouwen (smalle) polygonen. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "collapse_width": {
                "label": "Samenvouwbreedte",
                "description": "Polygonen waarvan de mediane breedte gelijk is aan of kleiner is dan deze waarde worden tot een hartlijn samengevouwen."
              },
              "sample_distance": {
                "label": "Bemonsteringsafstand",
                "description": "Afstand tussen dwarsprofielstations langs de as (standaard: collapse_width / 2)."
              },
              "min_length": {
                "label": "Minimale lengte",
                "description": "Laat samengevouwen hartlijnen die korter zijn dan deze waarde vallen (standaard 0)."
              },
              "retained": {
                "label": "Behouden",
                "description": "Optionele uitvoerpolygoonlaag voor brede (niet-samengevouwen) trajecten."
              }
            }
          },
          "collapse_road_detail": {
            "name": "Wegdetail samenvoegen",
            "description": "Reduceert kleine weglussen en verspringingen (rotondes, dogbones, verschoven aansluitingen) onder een diameterdrempel tot enkelvoudige doorgaande verbindingen voor kleinschalige weergave, met behoud van de netwerkconnectiviteit — zoals ArcGIS Collapse Road Detail.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met wegen (lijnen), formaat automatisch gedetecteerd (of een handle in het geheugen)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de vector (driver op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "collapse_distance": {
                "label": "Samenvouwafstand",
                "description": "Maximale diameter van een detail dat wordt samengevouwen. Lussen/knikken waarvan de omhullende diameter hieronder ligt (meters voor een geografisch CRS, anders CRS-eenheden) worden samengevouwen; grotere blijven behouden."
              },
              "road_class_field": {
                "label": "Veld wegklasse",
                "description": "Optioneel veld met de wegklasse. Indien ingesteld, worden alleen lussen samengevouwen waarvan alle begrenzende wegen dezelfde klassewaarde delen (kruisingen tussen verschillende klassen blijven behouden)."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Afstand waarbinnen wegeindpunten als dezelfde kruising worden behandeld. Standaard 1e-6."
              }
            }
          },
          "collect_events": {
            "name": "Gebeurtenissen verzamelen",
            "description": "Voegt samenvallende incidentpunten samen tot unieke locaties, elk met een ICOUNT-telling van de gebeurtenissen aldaar, zoals ArcGIS Collect Events.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met punten (Point of MultiPoint)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de puntvector (driver uit de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "tolerance": {
                "label": "Tolerantie",
                "description": "Snaptolerantie in kaarteenheden; punten waarvan de coördinaten naar dezelfde cel afronden worden als samenvallend behandeld (standaard 1e-8, d.w.z. praktisch exact)."
              }
            }
          },
          "colocation_analysis": {
            "name": "Colocatieanalyse",
            "description": "Lokaal colocatiequotiënt (Leslie en Kronenfeld) dat meet of punten van categorie A onevenredig vaak tussen buren van categorie B voorkomen, met een geseede permutatietoets-p-waarde — zoals ArcGIS Colocation Analysis.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met punten met een categorieveld."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector (een kopie van de invoer met colocatievelden). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "category_field": {
                "label": "Categorieveld",
                "description": "Veld dat de categorie van elk punt bevat."
              },
              "category_a": {
                "label": "Categorie A",
                "description": "Focuscategorie (A): de punten waarvan de colocatie met B wordt gemeten."
              },
              "category_b": {
                "label": "Categorie B",
                "description": "Buurcategorie (B): de punten waartegen A wordt getoetst."
              },
              "neighbors": {
                "label": "Buren",
                "description": "Aantal dichtstbijzijnde buren k (standaard 8)."
              },
              "weight": {
                "label": "Gewicht",
                "description": "Buurweging: 'gaussian' (afstandsafname, standaard) of 'uniform'."
              },
              "permutations": {
                "label": "Permutaties",
                "description": "Aantal labelpermutaties voor de significantietoets (standaard 99; 0 schakelt deze uit)."
              },
              "seed": {
                "label": "Seed",
                "description": "Zaad voor de permutatie-RNG (standaard 1), voor reproduceerbare resultaten."
              }
            }
          },
          "color_polygons": {
            "name": "Polygonen kleuren",
            "description": "Kent elke polygoon een kleine gehele kleurindex toe zodat geen twee aangrenzende polygonen dezelfde waarde delen (zoals ArcGIS Calculate Color Theorem Field) — aangrenzingsveilige choropleetstyling via DSATUR-graafkleuring over gedeelde-rand- (of gedeelde-hoek-)contiguïteit.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlaag met polygonen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpolygoonlaag met het toegevoegde kleurveld. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "field": {
                "label": "Veld",
                "description": "Naam van het weg te schrijven veld met de kleurindex (standaard 'color_id')."
              },
              "adjacency": {
                "label": "Nabuurschap",
                "description": "'edge' (rook, gedeelde grens; standaard) of 'edge_or_corner' (queen, gedeelde grens of hoekpunt)."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Roostergrootte waarop hoekpunten worden gesnapt voordat grenzen worden vergeleken (standaard 0 = exact)."
              }
            }
          },
          "combine": {
            "name": "Combineren",
            "description": "Kent een unieke zone-ID toe aan elke unieke combinatie van waarden over twee of meer gecoregistreerde categorische rasters, plus een waarde-attribuuttabel (id, telling, één kolom per invoer).",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Door komma's gescheiden lijst van >=2 gecoregistreerde categorische/gehele rasters die worden gecombineerd."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad voor het raster met unieke conditie-ID's. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "csv_output": {
                "label": "CSV-uitvoer",
                "description": "Optioneel CSV-pad voor de waarde-attribuuttabel (waarde, aantal, één kolom per invoerraster)."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die uit elk invoerraster wordt gelezen. Standaard 1."
              }
            }
          },
          "compare_spatial_weights": {
            "name": "Ruimtelijke gewichten vergelijken",
            "description": "Rangschikt kandidaat-conceptualisaties van ruimtelijke gewichten (KNN, vaste afstandsband, contiguïteit via randen / randen+hoeken, Delaunay) naar hoe sterk elk de ruimtelijke clustering van een of meer analysevelden vastlegt, met rijgestandaardiseerde globale Moran's I inclusief z-score en tweezijdige p-waarde — zoals ArcGIS Compare Neighborhood Conceptualizations. Geeft een gerangschikte vergelijkingstabel en de beste methode.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag (punten/lijnen/polygonen; aangrenzing vereist polygonen)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vergelijkingstabel — een CSV (extensie .csv) of een vectortabel zonder geometrie. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "input_fields": {
                "label": "Invoervelden",
                "description": "Door komma's gescheiden lijst met namen van numerieke velden die op ruimtelijke clustering worden geanalyseerd."
              },
              "id_field": {
                "label": "ID-veld",
                "description": "Veld dat de unieke ID van elk object bevat (wordt voor compatibiliteit geaccepteerd; niet vereist om Moran's I te berekenen)."
              },
              "methods": {
                "label": "Methoden",
                "description": "Door komma's gescheiden kandidaat-conceptualiseringen uit: knn, fixed_distance_band, contiguity_edges, contiguity_edges_corners, delaunay. Standaard 'knn,contiguity_edges,contiguity_edges_corners'. Methoden die niet op de geometrie van toepassing zijn (of een fout geven) worden overgeslagen."
              },
              "number_of_neighbors": {
                "label": "Aantal buren",
                "description": "Aantal dichtstbijzijnde buren k voor de methode knn. Standaard 8."
              },
              "threshold_distance": {
                "label": "Drempelafstand",
                "description": "Afkapwaarde van de afstandsband in kaarteenheden. Alleen vereist wanneer fixed_distance_band tot de methoden behoort."
              }
            }
          },
          "composite_bands": {
            "name": "Banden samenstellen",
            "description": "Stapelt meerdere enkelbandrasters tot één multibandraster, in de opgegeven volgorde (ArcGIS Composite Bands). De meegeleverde create_colour_composite is vast ingesteld op drie RGB-banden, dus er was geen manier om de N-bandinvoer samen te stellen die band_collection_statistics, principal_component_analysis, spectral_index en de OBIA-suite allemaal vereisen.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Door komma's of puntkomma's gescheiden rasterpaden, in de volgorde van de uitvoerbanden. Ten minste één."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die uit elke invoer wordt genomen wanneer een invoer zelf multiband is (standaard 1)."
              },
              "nodata_policy": {
                "label": "NoData-beleid",
                "description": "'any' (standaard): een cel is no-data wanneer een willekeurige band no-data is. 'all': alleen wanneer elke band dat is."
              },
              "nodata": {
                "label": "NoData",
                "description": "No-data-waarde voor de uitvoer (standaard: de no-data van de eerste invoer)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Multiband-uitvoerraster. Indien weggelaten, wordt het in het geheugen opgeslagen."
              }
            }
          },
          "compute_accuracy_for_object_detection": {
            "name": "Nauwkeurigheid voor objectdetectie berekenen",
            "description": "Beoordeelt gedetecteerde objecten ten opzichte van grondwaarheid met IoU-matching en rapporteert precisie, recall en gemiddelde precisie per klasse plus de totale mAP, zoals ArcGIS Compute Accuracy For Object Detection.",
            "params": {
              "detected": {
                "label": "Gedetecteerd",
                "description": "Gedetecteerde objecten (polygonen of omhullende rechthoeken)."
              },
              "ground_truth": {
                "label": "Grondwaarheid",
                "description": "Referentieobjecten waartegen wordt gescoord."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de nauwkeurigheidstabel. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "detected_class_field": {
                "label": "Klasseveld gedetecteerd",
                "description": "Klasselabelveld op de detecties. Laat dit weg om alles als één klasse te scoren."
              },
              "ground_truth_class_field": {
                "label": "Klasseveld grondwaarheid",
                "description": "Klasselabelveld op de referentiegegevens. Laat dit weg om alles als één klasse te scoren."
              },
              "confidence_field": {
                "label": "Betrouwbaarheidsveld",
                "description": "Veld met de betrouwbaarheidsscore op de detecties, gebruikt om te rangschikken voor de gemiddelde precisie. Zonder dit veld worden detecties in de volgorde van de invoer gescoord."
              },
              "min_iou": {
                "label": "Minimale IoU",
                "description": "Minimale intersection-over-union waarbij een detectie als overeenkomst telt (standaard 0.5)."
              }
            }
          },
          "compute_sar_indices": {
            "name": "SAR-indices berekenen",
            "description": "Leidt polarimetrische SAR-indices af — RVI (Radar Vegetation Index), RFDI (Radar Forest Degradation Index), CSI (Canopy Structure Index) en DPSVI (Dual-Pol SAR Vegetation Index) — uit multipolarisatie-terugverstrooiing (ArcGIS Compute SAR Indices). spectral_index dekt alleen optische bandberekeningen: de formules en bandconventies ervan zijn reflectantiegebaseerd en het kent geen polarisatiekanalen, zodat de SAR-keten van de catalogus (multilook, sar_coherence, specklefilters) momenteel geen analyse-eindpunt heeft.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Gekalibreerd SAR-raster met meerdere polarisaties (één band per polarisatie)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerraster met de index. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "index": {
                "label": "Index",
                "description": "'rvi' (standaard), 'rfdi', 'csi' of 'dpsvi'."
              },
              "polarization_bands": {
                "label": "Polarisatiebanden",
                "description": "1-gebaseerde bandtoewijzing, bijv. 'vv=1,vh=2' of 'hh=1,hv=2,vv=3'. Standaard op basis van het aantal banden: 2 banden = 'vv=1,vh=2', 3 of meer banden = 'hh=1,hv=2,vv=3'."
              },
              "input_units": {
                "label": "Invoereenheden",
                "description": "'linear' (standaard) of 'db'. dB-invoer wordt vóór het rekenen met verhoudingen naar lineair vermogen omgezet, omdat verhoudingen van decibellen betekenisloos zijn."
              }
            }
          },
          "construct_sight_lines": {
            "name": "Zichtlijnen construeren",
            "description": "Bouwt zichtlijnobjecten tussen waarnemerspunten en doelobjecten, met hoogteverschuivingen voor waarnemer/doel, bemonstering langs lijn- en vlakdoelen, optionele velden voor azimut en verticale hoek, en 2D- of 3D-afstand. Zoals ArcGIS Construct Sight Lines.",
            "params": {
              "observers": {
                "label": "Waarnemers",
                "description": "Puntobjecten met waarnemers."
              },
              "targets": {
                "label": "Doelen",
                "description": "Doelobjecten in de vorm van punten, lijnen of polygonen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de zichtlijnen. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "observer_height_field": {
                "label": "Veld waarnemerhoogte",
                "description": "Optioneel veld dat de hoogteverschuiving van elke waarnemer geeft (wordt bij de Z opgeteld)."
              },
              "target_height_field": {
                "label": "Veld doelhoogte",
                "description": "Optioneel veld dat de hoogteverschuiving van elk doel geeft (wordt bij de Z opgeteld)."
              },
              "join_field": {
                "label": "Koppelveld",
                "description": "Optioneel veld dat op beide invoeren aanwezig is; alleen waarnemers en doelen met dezelfde waarde worden gekoppeld. Zonder dit veld wordt elke waarnemer aan elk doel gekoppeld."
              },
              "sample_distance": {
                "label": "Bemonsteringsafstand",
                "description": "Afstand in kaarteenheden voor doelpunten die langs lijn-/polygoonbegrenzingen worden gegenereerd (standaard: één punt per hoekpunt)."
              },
              "output_direction": {
                "label": "Richting uitvoeren",
                "description": "Voegt de velden AZIMUTH en VERT_ANGLE toe (standaard false)."
              },
              "distance_method": {
                "label": "Afstandsmethode",
                "description": "'2d' (standaard) of '3d' voor het veld DISTANCE."
              }
            }
          },
          "contiguous_cartogram": {
            "name": "Aaneengesloten cartogram",
            "description": "Dichtheidsegaliserend cartogram (Gastner-Newman-diffusie): vervormt polygoonoppervlakten evenredig met een attribuut terwijl de kaart een samenhangend vel met gedeelde grenzen blijft (ArcGIS Generate Contiguous Cartogram). De meegeleverde cartogram-tool implementeert alleen de niet-aaneengesloten en Dorling-methoden, die beide de aangrenzing vernietigen, en de eigen moduledocumentatie ervan verwijst de aaneengesloten vorm door.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Aaneengesloten polygoonlaag."
              },
              "value_field": {
                "label": "Waardeveld",
                "description": "Positief numeriek attribuut waarvan het totaal evenredig moet worden met de oppervlakten."
              },
              "grid_size": {
                "label": "Rastergrootte",
                "description": "Resolutie van het dichtheidsraster; moet een macht van twee zijn (standaard 256). De belangrijkste knop voor nauwkeurigheid versus rekentijd."
              },
              "iterations": {
                "label": "Iteraties",
                "description": "Aantal diffusiestappen (standaard 20). Meer stappen maken de dichtheid gelijkmatiger, ten koste van meer vervorming."
              },
              "blur": {
                "label": "Vervaging",
                "description": "Gaussische voorafvlakking van het dichtheidsveld, in rastercellen (standaard 0.5). Voorkomt de extreme vervorming die een harde dichtheidssprong veroorzaakt."
              },
              "sea_density": {
                "label": "Zeedichtheid",
                "description": "Dichtheid buiten het studiegebied: 'mean' (standaard) of 'min'. Dit verandert het resultaat aan de kaartrand wezenlijk."
              },
              "densify_spacing": {
                "label": "Verdichtingsafstand",
                "description": "Maximale lengte van een randsegment in rastercellen voordat hoekpunten worden ingevoegd (standaard 1.0). Lange rechte grenzen raken anders los van hun buren."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpolygoonlaag met verplaatste hoekpunten en de oorspronkelijke attributen. Indien weggelaten, wordt het in het geheugen opgeslagen."
              }
            }
          },
          "contour_list": {
            "name": "Contourlijst",
            "description": "Genereert contouren op een expliciete lijst van waarden in plaats van een vast interval, als aaneengeschakelde polylijnen of gevulde polygonen, elk gelabeld met zijn niveau (ArcGIS Contour List). De meegeleverde contours_from_raster accepteert alleen 'interval' en 'base', dus de onregelmatige reeksen die echte kaarten gebruiken — IHO-dieptestappen, overstromingsherhalingsniveaus, gepubliceerde klassegrenzen — vereisen één run per waarde en een samenvoeging, en kunnen nog steeds niet als één laag gelabeld per niveau worden uitgevoerd.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoeroppervlakteraster."
              },
              "contour_values": {
                "label": "Contourwaarden",
                "description": "Door komma's gescheiden lijst met niveaus waarop contouren worden getrokken, in de eigen z-eenheden van het raster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerlaag met contouren. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "geometry_type": {
                "label": "Geometrietype",
                "description": "'polyline' (standaard) voor contourlijnen, of 'polygon' voor het gevulde gebied op of boven elk niveau."
              },
              "min_length": {
                "label": "Minimale lengte",
                "description": "Verwerpt contourlijnen die korter zijn dan deze waarde, in kaarteenheden, waarmee de spikkels van een ruizig oppervlak worden verwijderd."
              },
              "close_rings": {
                "label": "Ringen sluiten",
                "description": "Herhaalt het eerste hoekpunt op contouren die zichzelf sluiten (standaard true)."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band waarop contouren worden getrokken (standaard 1)."
              }
            }
          },
          "contour_with_barriers": {
            "name": "Contouren met barrières",
            "description": "Traceert iso-waardecontourlijnen van een oppervlak die eindigen bij barrièreobjecten in plaats van ze te kruisen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Continu invoeroppervlakteraster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de lijnvector (driver uit de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "barriers": {
                "label": "Barrières",
                "description": "Optionele vectorlaag met barrières (lijnen of polygonen). Contouren zullen deze objecten niet kruisen."
              },
              "interval": {
                "label": "Interval",
                "description": "Contourinterval in de eenheden van het oppervlak. De niveaus zijn base + k*interval binnen het gegevensbereik. Wordt genegeerd als 'levels' is opgegeven."
              },
              "base": {
                "label": "Basis",
                "description": "Basiswaarde waarvanaf het interval wordt gemeten (standaard 0)."
              },
              "levels": {
                "label": "Niveaus",
                "description": "Expliciete, door komma's gescheiden contourwaarden (bijv. \"10,20,30\"). Heeft voorrang op interval/base."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die wordt gelezen (standaard 1)."
              }
            }
          },
          "convert_coordinate_notation": {
            "name": "Coördinatennotatie converteren",
            "description": "Converteert de coördinaat van elk object tussen notaties — decimale graden (DD), graden-minuten-seconden (DMS), graden-decimale minuten (DDM), UTM en MGRS/USNG — en schrijft een nieuw veld in de doelnotatie, zoals ArcGIS Convert Coordinate Notation. Pure rasterwiskunde (Krüger-transversale Mercator + MGRS-lettering op WGS84); geen PROJ.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met punten (of een tabel)."
              },
              "input_notation": {
                "label": "Invoernotatie",
                "description": "Notatie van de invoercoördinaat: DD, DMS, DDM, UTM of MGRS."
              },
              "output_notation": {
                "label": "Uitvoernotatie",
                "description": "Doelnotatie die wordt weggeschreven: DD, DMS, DDM, UTM of MGRS."
              },
              "coord_field": {
                "label": "Coördinaatveld",
                "description": "Veld dat de tekenreeks met de invoercoördinaat bevat. Indien weggelaten, wordt de puntgeometrie gebruikt (alleen geldig wanneer input_notation=DD; geometrie x=lon, y=lat)."
              },
              "output_field": {
                "label": "Uitvoerveld",
                "description": "Naam van het weg te schrijven veld. Standaard: de uitvoernotatie in kleine letters (bijv. 'utm')."
              },
              "precision": {
                "label": "Precisie",
                "description": "Aantal MGRS-cijfers per as (1=10 km … 5=1 m, tot 9). Standaard 5. Wordt door andere notaties genegeerd."
              },
              "update_geometry": {
                "label": "Geometrie bijwerken",
                "description": "Indien true wordt de geometrie van elk object opnieuw opgebouwd als een lon/lat-punt in EPSG:4326 op basis van de geparseerde coördinaat. Standaard false (invoergeometrie/-CRS behouden)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorpad (stuurprogramma op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              }
            }
          },
          "convert_sar_units": {
            "name": "SAR-eenheden converteren",
            "description": "Converteert een SAR-raster tussen de representaties amplitude, intensiteit, lineair vermogen, decibel, complex-naar-intensiteit en ontvouwde-fase-naar-verplaatsing (ArcGIS Convert SAR Units). raster_calculator kan de rekenkunde uitvoeren, maar draagt geen van de semantiek of beveiligingen — het geeft -inf terug voor cellen met waarde nul bij een logconversie, en niets in de catalogus registreert in welke eenheid een SAR-raster staat, zodat specklefilters en ratio-indices routinematig op de verkeerde representatie worden toegepast.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "SAR-invoerraster. Voor 'complex_to_intensity' is dit een tweebands I/Q-raster (de conventie van multilook / sar_coherence)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "conversion": {
                "label": "Conversie",
                "description": "'linear_to_db', 'db_to_linear', 'amplitude_to_intensity', 'intensity_to_amplitude', 'complex_to_intensity' of 'phase_to_displacement'."
              },
              "wavelength": {
                "label": "Golflengte",
                "description": "Radargolflengte in meters voor 'phase_to_displacement' (standaard 0.05546576, Sentinel-1 C-band)."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die wordt gelezen (standaard 1). Wordt genegeerd voor 'complex_to_intensity', dat altijd de banden 1 en 2 als I en Q leest."
              }
            }
          },
          "coregister_rasters": {
            "name": "Rasters coregistreren",
            "description": "Lijnt automatisch een secundair raster uit op een referentie via genormaliseerde kruiscorrelatie van een tegelraster, subpixel-piekverfijning, een kleinste-kwadraten-transformatiefit met uitschieterverwijdering en herbemonstering (ArcGIS Apply Coregistration). Dit is de ontbrekende voorwaarde voor de hele InSAR-keten van de catalogus: sar_coherence, flatten_interferogram en goldstein_phase_filter vereisen allemaal gecoregistreerde invoer en niets produceerde die. georeference_raster_from_control_points heeft handmatig gekozen paspunten nodig, image_correlation scoort alleen gelijkenis, en warp_raster heeft een aangeleverde transformatie nodig.",
            "params": {
              "reference": {
                "label": "Referentie",
                "description": "Referentieraster. De uitvoer wordt op het raster hiervan weggeschreven."
              },
              "secondary": {
                "label": "Secundair",
                "description": "Raster dat op de referentie wordt uitgelijnd. Alle banden ervan worden herbemonsterd."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Herbemonsterd secundair uitvoerraster op het referentieraster. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "tie_points": {
                "label": "Paspunten",
                "description": "Uitvoerpuntlaag met de geaccepteerde paspunten met hun gemeten verschuiving en correlatie. Wordt altijd gemaakt; wordt in het geheugen opgeslagen wanneer geen pad is opgegeven."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die voor het matchen wordt gebruikt (standaard 1). Een invoer met twee banden wordt op de complexe magnitude gematcht, tenzij deze parameter is opgegeven."
              },
              "transform": {
                "label": "Transformatie",
                "description": "'translation', 'affine' (standaard) of 'polynomial2'."
              },
              "tile_size": {
                "label": "Tegelgrootte",
                "description": "Zijde van elke matchingtegel in cellen (standaard 32)."
              },
              "grid_size": {
                "label": "Rastergrootte",
                "description": "Aantal tegels per as (standaard 8, dus 64 tegels)."
              },
              "max_shift": {
                "label": "Maximale verschuiving",
                "description": "Halve breedte van het gehele zoekvenster in cellen (standaard 8)."
              },
              "min_correlation": {
                "label": "Minimale correlatie",
                "description": "Verwerpt paspunten waarvan de genormaliseerde piekcorrelatie onder deze waarde ligt (standaard 0.3)."
              },
              "outlier_sigma": {
                "label": "Uitschieter-sigma",
                "description": "Verwijdert paspunten waarvan het fitresidu meer dan dit aantal standaardafwijkingen bedraagt (standaard 3.0). Zet op 0 om het verwijderen uit te schakelen."
              },
              "resample": {
                "label": "Herbemonsteren",
                "description": "'bilinear' (standaard) of 'nearest'."
              }
            }
          },
          "corridor": {
            "name": "Corridor",
            "description": "Minimale-kostencorridor tussen twee geaccumuleerde kostenoppervlakken (ArcGIS Corridor): telt twee kostenafstandsrasters op tot een corridoroppervlak waarvan het minimum het minimale-kostenpad is, en drempelt optioneel naar de bijna-optimale band. Directe modus (twee kostenrasters) of gemaksmodus (één frictieraster + twee bronrasters).",
            "params": {
              "cost1": {
                "label": "Kosten1",
                "description": "Eerste raster met geaccumuleerde kosten (vanaf bron A). Directe modus."
              },
              "cost2": {
                "label": "Kosten2",
                "description": "Tweede raster met geaccumuleerde kosten (vanaf bron B). Directe modus."
              },
              "cost": {
                "label": "Kosten",
                "description": "Raster met de wrijving/doorgangskosten. Gemaksmodus (samen met source1/source2)."
              },
              "source1": {
                "label": "Bron1",
                "description": "Eerste bronraster (positieve cellen zijn bronnen). Gemaksmodus."
              },
              "source2": {
                "label": "Bron2",
                "description": "Tweede bronraster (positieve cellen zijn bronnen). Gemaksmodus."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het corridorraster. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "threshold": {
                "label": "Drempelwaarde",
                "description": "Behoudt alleen cellen waarvan de corridorkosten gelijk zijn aan of lager dan deze absolute waarde (de rest wordt naar no-data gemaskeerd)."
              },
              "percent": {
                "label": "Percentage",
                "description": "Behoudt alleen cellen binnen dit percentage boven de minimale corridorkosten (bijv. 5 = binnen 5%). Wordt genegeerd als 'threshold' is ingesteld."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die uit het invoerraster of de invoerrasters wordt gelezen. Standaard 1."
              }
            }
          },
          "cost_back_link": {
            "name": "Kosten-terugkoppeling",
            "description": "Geeft het 0-8-buurrichtingsraster dat voor elke cel de volgende stap codeert langs de minimale-kostenroute terug naar de dichtstbijzijnde bron, plus het geaccumuleerde kostenoppervlak (ArcGIS Cost Back Link en Path Back Link). cost_distance, cost_pathway en cost_allocation berekenen dit allemaal intern en gooien het weg, zodat het terugtraceren van N bestemmingen momenteel N volledige kostenoplossingen kost in plaats van één accumulatiepas plus N goedkope wandelingen.",
            "params": {
              "source": {
                "label": "Bron",
                "description": "Broncellen: een raster (elke cel die niet nul en geen no-data is, is een bron) of een vectorlaag met punten/multipunten."
              },
              "cost": {
                "label": "Kosten",
                "description": "Raster met de kosten per afstandseenheid. Optioneel wanneer 'surface' is opgegeven (de kosten zijn dan overal standaard 1, wat een zuivere oppervlakteafstand geeft)."
              },
              "surface": {
                "label": "Oppervlak",
                "description": "Optioneel hoogteraster dat de variant Path Back Link mogelijk maakt: de horizontale afstand wordt vervangen door de werkelijke oppervlakteafstand sqrt(dxy^2 + dz^2)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerraster met terugverwijzingen (0 = bron, 1-8 = richting naar de bron, 1 = oost, tegen de klok in). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "out_distance": {
                "label": "Uitvoer afstand",
                "description": "Raster met de geaccumuleerde kosten. Wordt altijd gemaakt; valt terug op een handle in het geheugen wanneer geen pad is opgegeven."
              },
              "max_distance": {
                "label": "Maximale afstand",
                "description": "Optionele afkapwaarde voor de accumulatie: cellen die meer kosten dan deze waarde blijven onbereikbaar."
              }
            }
          },
          "cost_connectivity": {
            "name": "Kostenconnectiviteit",
            "description": "Minimale-kostennetwerk dat meerdere locaties over een kostenoppervlak verbindt (zoals ArcGIS Cost Connectivity / Optimal Region Connections): multi-bron-Dijkstra-allocatie, paarsgewijze minimale-kostenpaden tussen aangrenzende regio's en hun minimale opspannende boom — het minimale-kostennetwerk dat de meegeleverde enkelbron-cost_distance en path_distance niet kunnen bouwen.",
            "params": {
              "sources": {
                "label": "Bronnen",
                "description": "Puntlaag met te verbinden locaties/regio's."
              },
              "cost": {
                "label": "Kosten",
                "description": "Kosten-/wrijvingsraster (doorgangskosten per cel; no-data-cellen zijn barrières)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerlaag met polylijnen van goedkoopste paden. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "connections": {
                "label": "Verbindingen",
                "description": "'mst' (minimale opspannende boom die alle locaties verbindt; standaard) of 'all_neighbors' (elk pad tussen aangrenzende regio's)."
              },
              "id_field": {
                "label": "ID-veld",
                "description": "Optioneel veld om bronnen te labelen (standaard: de 1-gebaseerde index)."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band van het kostenraster (standaard 1)."
              }
            }
          },
          "count_overlapping_features": {
            "name": "Overlappende objecten tellen",
            "description": "Vlakt overlappende polygonen af tot disjuncte regio's, elk met als attribuut het aantal (en optioneel de id's) van de invoerobjecten die het bedekken, zoals ArcGIS Count Overlapping Features.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met polygonen (objecten mogen overlappen)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de polygoonvector (driver uit de extensie) met een veld 'count'. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "min_count": {
                "label": "Minimaal aantal",
                "description": "Behoudt alleen regio's die door ten minste dit aantal objecten worden bedekt (standaard 1; gebruik 2 voor alleen overlappingen)."
              },
              "id_field": {
                "label": "ID-veld",
                "description": "Optioneel veld dat elk invoerobject identificeert (gebruikt in de kolom met ID's / het rapport). Standaard: de objectindex."
              },
              "report_ids": {
                "label": "ID's rapporteren",
                "description": "Optioneel CSV-pad voor een koppelingstabel region_id,feature_id (één rij per bedekkend object)."
              }
            }
          },
          "create_accuracy_assessment_points": {
            "name": "Nauwkeurigheidsbeoordelingspunten maken",
            "description": "Genereert willekeurig verdeelde referentiepunten, gestratificeerd naar de klassen van een geclassificeerd raster of polygoonlaag, vooraf ingevuld met de kaartklasse en klaar voor grondwaarheidslabeling (ArcGIS Create Accuracy Assessment Points). classification_accuracy_assessment gebruikt zulke punten, maar niets produceerde ze, en create_spatial_sampling_locations stratificeert per polygoonobject of veld in plaats van per rasterklasse en heeft geen gelijkmatige toewijzing.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Geclassificeerd raster, of een geclassificeerde polygoonlaag met 'class_field'."
              },
              "class_field": {
                "label": "Klasseveld",
                "description": "Klasseattribuut, vereist wanneer 'input' een vectorlaag is. Wordt genegeerd bij rasterinvoer, die de celwaarde gebruikt."
              },
              "num_points": {
                "label": "Aantal punten",
                "description": "Totaal aantal referentiepunten (standaard 500)."
              },
              "sampling_strategy": {
                "label": "Steekproefstrategie",
                "description": "Een van 'stratified_random' (standaard, toewijzing evenredig met de klasseoppervlakte), 'equalized_stratified' (gelijk aantal per klasse) of 'random' (klasse wordt genegeerd)."
              },
              "min_points_per_class": {
                "label": "Minimaal aantal punten per klasse",
                "description": "Ondergrens die bij 'stratified_random' wordt toegepast zodat zeldzame klassen niet wegvallen (standaard 1)."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band van een rasterinvoer (standaard 1)."
              },
              "seed": {
                "label": "Seed",
                "description": "Zaad voor de deterministische RNG (standaard 1)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpuntlaag met CLASSVALUE (kaartklasse), GrndTruth (-1 tot deze is verzameld) en Stratum. Indien weggelaten, wordt het in het geheugen opgeslagen."
              }
            }
          },
          "create_cartographic_partitions": {
            "name": "Cartografische partities maken",
            "description": "Produceert adaptieve, niet-overlappende partitiepolygonen die elk ruwweg een doelaantal objecten bevatten (dichter waar gegevens clusteren), zodat grote generalisatie-/maskeertaken dekkingsveilig kunnen worden getegeld — een pure-Rust-tegenhanger van ArcGIS Create Cartographic Partitions.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag (elke geometrie). Elk object wordt tot een representatief punt gereduceerd en aan één partitie toegewezen."
              },
              "feature_count": {
                "label": "Aantal objecten",
                "description": "Beoogd maximaal aantal objecten per partitie. Een cel wordt gesplitst zolang deze meer dan dit aantal objecten bevat. Standaard 1000."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpolygoonvector met de partities (driver uit de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              }
            }
          },
          "create_overpass": {
            "name": "Viaduct maken",
            "description": "Bouwt uitsparingsmaskerpolygonen (en optionele decoratieve vleugelstreeplijnen) waar een 'bovenliggende' lijn een 'onderliggende' lijn kruist, zodat de onderste lijn bij de kruising wordt gemaskeerd.",
            "params": {
              "above": {
                "label": "Boven",
                "description": "Lijnvector met objecten die OVER de kruising lopen (het masker wordt hierlangs georiënteerd). Formaat automatisch gedetecteerd, of een handle in het geheugen."
              },
              "below": {
                "label": "Onder",
                "description": "Lijnvector met objecten die ONDER de kruising worden gemaskeerd (de lijnen die worden weggesneden). Formaat automatisch gedetecteerd, of een handle in het geheugen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad voor de maskerpolygonen (driver uit de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "output_decoration": {
                "label": "Decoratie uitvoeren",
                "description": "Optioneel uitvoerpad voor de decoratielijnen met vleugelstreepjes. Indien weggelaten, wordt het in het geheugen opgeslagen (en toch geretourneerd als 'output_decoration')."
              },
              "margin_along": {
                "label": "Marge in lengterichting",
                "description": "Halve lengte van elk masker langs de bovenliggende lijn, in CRS-eenheden (de maskerlengte is 2x deze waarde). Standaard 1.0."
              },
              "margin_across": {
                "label": "Marge in dwarsrichting",
                "description": "Halve breedte van elk masker dwars op de bovenliggende lijn, in CRS-eenheden (de maskerbreedte is 2x deze waarde). Standaard 1.0."
              },
              "wing_type": {
                "label": "Vleugeltype",
                "description": "Decoratiestijl: 'none', 'perpendicular' (standaard; een streepje dwars op elk maskeruiteinde) of 'parallel' (omkaderingslijnen langs elke zijde)."
              }
            }
          },
          "create_routes": {
            "name": "Routes maken",
            "description": "Voegt lijnobjecten samen op een route-identificatieveld, ordent hun segmenten tot één polylijn per route en kent lineaire maten (m-waarden) toe op basis van geometrische lengte of van/tot-maatvelden.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerlijnvectorbestand, formaat automatisch gedetecteerd (of een handle in het geheugen)."
              },
              "route_id_field": {
                "label": "Route-ID-veld",
                "description": "Attribuut dat elke route identificeert; invoerlijnen worden hierop gegroepeerd, één uitvoerroute per afzonderlijke waarde."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de routevector (driver uit de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "measure_source": {
                "label": "Maatbron",
                "description": "Hoe de maten worden toegekend: LENGTH (0..geometrische lengte), ONE_FIELD (begin uit een veld, einde = begin + lengte) of TWO_FIELDS (begin/einde uit velden, geïnterpoleerd). Standaard LENGTH."
              },
              "from_measure_field": {
                "label": "Veld beginmaat",
                "description": "Numeriek veld dat de beginmaat van elke route geeft (gebruikt door ONE_FIELD en TWO_FIELDS). Wordt van het eerste segment van de route gelezen."
              },
              "to_measure_field": {
                "label": "Veld eindmaat",
                "description": "Numeriek veld dat de eindmaat van elke route geeft (gebruikt door TWO_FIELDS). Wordt van het eerste segment van de route gelezen."
              },
              "measure_factor": {
                "label": "Maatfactor",
                "description": "Vermenigvuldigingsfactor die op de natuurlijke (op lengte gebaseerde) maat wordt toegepast, bijv. 0.001 om meters in kilometers om te zetten. Standaard 1.0."
              },
              "measure_offset": {
                "label": "Maatoffset",
                "description": "Waarde die bij elke maat langs de route wordt opgeteld (verschuift de m-waarden van de hele route). Standaard 0.0."
              },
              "ignore_gaps": {
                "label": "Hiaten negeren",
                "description": "Sluit bij LENGTH/ONE_FIELD de rechte sprongen tussen losse segmenten uit van de geaccumuleerde maat, zodat gaten de afstanden niet opblazen. Standaard false."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Eindpunten binnen deze afstand (CRS-eenheden) worden bij het aaneenrijgen van segmenten als samenvallend behandeld. Standaard 1e-6."
              }
            }
          },
          "create_spatial_sampling_locations": {
            "name": "Ruimtelijke bemonsteringslocaties maken",
            "description": "Genereert steekproefpunten over een polygoonstudiegebied via een enkelvoudig-willekeurig, gestratificeerd, systematisch (vierkant/zeshoek/driehoek) of clusterontwerp, met geseede reproduceerbare willekeur.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het polygoonvectorbestand met het studiegebied (of een handle in het geheugen)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de puntvector (driver uit de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "method": {
                "label": "Methode",
                "description": "'simple_random' (standaard), 'stratified', 'systematic' of 'cluster'."
              },
              "num_samples": {
                "label": "Aantal monsters",
                "description": "Totaal aantal monsterpunten voor simple_random, stratified en cluster. Standaard 100."
              },
              "strata_field": {
                "label": "Strataveld",
                "description": "Voor stratified: groepeert invoerobjecten in strata op basis van dit attribuut. Indien weggelaten, vormt elk invoerobject een eigen stratum."
              },
              "allocation": {
                "label": "Allocatie",
                "description": "Voor stratified: 'proportional' aan de stratumoppervlakte (standaard), 'equal' per stratum, of 'population_field' evenredig met een veldtotaal."
              },
              "population_field": {
                "label": "Bevolkingsveld",
                "description": "Voor allocation=population_field: het numerieke veld waarvan het totaal per stratum de toewijzing bepaalt."
              },
              "bin_shape": {
                "label": "Binvorm",
                "description": "Voor systematic: een rooster van het type 'square' (standaard), 'hexagon' of 'triangle'."
              },
              "bin_size": {
                "label": "Bingrootte",
                "description": "Afstand (CRS-eenheden) voor systematische roosters en clusterbins. Vereist voor die methoden."
              },
              "num_clusters": {
                "label": "Aantal clusters",
                "description": "Voor cluster: hoeveel bins willekeurig worden geselecteerd. Standaard 10."
              },
              "min_distance": {
                "label": "Minimale afstand",
                "description": "Minimale onderlinge afstand tussen punten bij simple_random / stratified / cluster (CRS-eenheden). Standaard 0 (geen beperking)."
              },
              "seed": {
                "label": "Seed",
                "description": "Zaad voor de deterministische RNG (standaard 1)."
              }
            }
          },
          "create_spatially_balanced_points": {
            "name": "Ruimtelijk gebalanceerde punten maken",
            "description": "Genereert ruimtelijk goed gespreide (quasi-willekeurige Halton-)steekproefpunten binnen een beperkingspolygoon, optioneel gewogen door een inclusiekansraster, elk voorzien van een gebalanceerde steekproefvolgorde, zoals ArcGIS Create Spatially Balanced Points.",
            "params": {
              "constraint": {
                "label": "Beperking",
                "description": "Polygoonlaag met beperkingen; punten worden binnen deze polygonen gegenereerd."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de puntvector (driver uit de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "num_points": {
                "label": "Aantal punten",
                "description": "Aantal te genereren monsterpunten."
              },
              "probability": {
                "label": "Waarschijnlijkheid",
                "description": "Optioneel raster met insluitkansen; cellen met hogere waarden worden eerder bemonsterd (genormaliseerd op het maximum ervan)."
              },
              "seed": {
                "label": "Seed",
                "description": "Willekeurig zaad voor reproduceerbare bemonstering (standaard 1)."
              }
            }
          },
          "create_underpass": {
            "name": "Onderdoorgang maken",
            "description": "Bouwt bij lijnkruisingen maskerpolygonen georiënteerd langs het bovenliggende object en snijdt een passende opening uit het onderliggende object, zodat het leest als eronderdoor lopend (ArcGIS Create Underpass). Tegenhanger van de meegeleverde create_overpass, die de onderste lijn maskeert zodat de bovenste continu leest; een onderdoorgang heeft juist de decoratieve onderbreking nodig, wat een tunnelportaal onderscheidt van een brug. Geeft zowel de maskers als de getrimde onderliggende lijnen.",
            "params": {
              "above": {
                "label": "Boven",
                "description": "Lijnvector met objecten die OVER de kruising lopen (maskers worden hierlangs georiënteerd). Formaat automatisch gedetecteerd, of een handle in het geheugen."
              },
              "below": {
                "label": "Onder",
                "description": "Lijnvector met objecten die ONDER de kruising lopen (de lijnen die de onderbreking krijgen). Formaat automatisch gedetecteerd, of een handle in het geheugen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad voor de maskerpolygonen van de onderdoorgang. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "output_lines": {
                "label": "Lijnen uitvoeren",
                "description": "Optioneel uitvoerpad voor de onderliggende laag met de uitgesneden onderdoorgangen. Indien weggelaten, wordt het in het geheugen opgeslagen (en toch geretourneerd als 'output_lines')."
              },
              "margin_along": {
                "label": "Marge in lengterichting",
                "description": "Halve lengte van elk masker gemeten LANGS de bovenliggende lijn, in CRS-eenheden; het masker beslaat 2x deze waarde in die richting. Standaard 1.0."
              },
              "margin_across": {
                "label": "Marge in dwarsrichting",
                "description": "Halve breedte van elk masker DWARS op de bovenliggende lijn, in CRS-eenheden. Bij een loodrechte kruising begrenst dit de onderbreking die in de onderliggende lijn wordt gesneden, zodat de verwijderde lengte 2x deze waarde bedraagt. Standaard 1.0."
              },
              "min_angle": {
                "label": "Minimale hoek",
                "description": "Slaat kruisingen over waar de twee lijnen elkaar onder een kleinere hoek dan dit aantal graden ontmoeten, omdat een bijna parallel masker instabiel is. Standaard 15."
              }
            }
          },
          "cul_de_sac_masks": {
            "name": "Maskers voor doodlopende wegen",
            "description": "Genereert schaalbewuste uitsparingsmaskerpolygonen bij keerlussen van doodlopende wegen in een wegennetwerk, zoals ArcGIS Cul-De-Sac Masks.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Laag met wegassen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de maskerpolygonen. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "reference_scale": {
                "label": "Referentieschaal",
                "description": "Noemer van de kaartschaal waarvoor het masker wordt gedimensioneerd (bijv. 24000 voor 1:24.000)."
              },
              "symbol_width": {
                "label": "Symboolbreedte",
                "description": "Breedte van de wegomkadering in papiereenheden (zie 'page_unit') op de referentieschaal."
              },
              "margin": {
                "label": "Marge",
                "description": "Extra marge rond het symbool, in papiereenheden (standaard 0)."
              },
              "page_unit": {
                "label": "Pagina-eenheid",
                "description": "Eenheid van 'symbol_width' en 'margin': points (standaard, 1/72 inch), mm of inches."
              },
              "map_units_per_meter": {
                "label": "Kaarteenheden per meter",
                "description": "CRS-eenheden per meter (standaard 1, correct voor op meters gebaseerde geprojecteerde CRS'en). Gebruik voor een laag in graden ongeveer 0.000008983."
              },
              "tolerance": {
                "label": "Tolerantie",
                "description": "Snaptolerantie voor coördinaten bij het samenvoegen van lijneindpunten tot netwerkknooppunten (standaard 0.001 kaarteenheden)."
              },
              "attributes": {
                "label": "Attributen",
                "description": "ids_only (standaard) | all — of de attributen van het bronobject naar het masker worden meegenomen."
              }
            }
          },
          "cut_fill": {
            "name": "Graven en ophogen",
            "description": "Volumetrische verandering tussen twee DEM-oppervlakken (vóór/na) of een oppervlak en een referentievlak: raster met hoogteverandering met teken plus graaf-, ophoog- en nettovolumes, met optionele volumelabeling per regio.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Het pad van het 'voor'-rasterbestand (of het enige oppervlak in de vlakmodus)."
              },
              "after": {
                "label": "Na",
                "description": "Het 'na'-raster (modus met twee oppervlakken). Moet hetzelfde raster als 'input' delen. Geef dit of 'plane' op."
              },
              "plane": {
                "label": "Vlak",
                "description": "Hoogte van het referentievlak (modus oppervlaktevolume): de verandering wordt gemeten als de invoer min deze waarde. Geef dit of 'after' op."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad voor de hoogteverandering met teken (Δz). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die uit het invoerraster of de invoerrasters wordt gelezen. Standaard 1."
              },
              "tolerance": {
                "label": "Tolerantie",
                "description": "Cellen waarvan |Δz| gelijk is aan of kleiner is dan deze waarde (z-eenheden van het CRS) gelden als ongewijzigd. Standaard 0."
              },
              "region_output": {
                "label": "Regio-uitvoer",
                "description": "Optioneel rasterpad voor de labels van aaneengesloten graaf-/ophoogregio's (regio-ID's >= 1; ongewijzigde cellen zijn nodata)."
              },
              "csv_output": {
                "label": "CSV-uitvoer",
                "description": "Optioneel CSV-pad voor de tabel met volumes per regio (region_id, type, cell_count, volume)."
              }
            }
          },
          "darcy_flow": {
            "name": "Darcy-stroming",
            "description": "Stationair grondwater-Darcy-snelheidsveld uit stijghoogte-, transmissiviteits- en porositeitsrasters — een raster met stroomgrootte (Darcy-snelheid) en een raster met stroomrichting langs de gradiënt (v = -(T/n)·∇head), met optionele advectieve deeltjestracering (RK2) vanaf zaadpunten naar stroomlijnpolylijnen — zoals ArcGIS Darcy Flow / Particle Track.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Raster met de grondwaterstand (hoogte van de grondwaterspiegel). De celgrootte wordt aan dit raster ontleend."
              },
              "transmissivity": {
                "label": "Transmissiviteit",
                "description": "Transmissiviteitsraster (gecoregistreerd met het grondwaterstandsraster)."
              },
              "porosity": {
                "label": "Porositeit",
                "description": "Raster met de effectieve porositeit (gecoregistreerd met het grondwaterstandsraster; de waarden moeten > 0 zijn)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het raster met de grootte van de darcysnelheid. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "direction": {
                "label": "Richting",
                "description": "Optioneel uitvoerpad van het stroomrichtingsraster (azimut in graden, vanaf het noorden met de klok mee, gradiënt afwaarts). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die uit elk invoerraster wordt gelezen (standaard 1)."
              },
              "seeds": {
                "label": "Zaden",
                "description": "Optionele puntvector met deeltjeszaden. Indien opgegeven, worden stroomlijnen vanaf elk zaad getraceerd."
              },
              "streamlines": {
                "label": "Stroomlijnen",
                "description": "Optioneel uitvoerpad van de lijnvector voor de getraceerde stroomlijnen van deeltjes (vereist 'seeds')."
              },
              "step": {
                "label": "Stap",
                "description": "Staplengte voor het volgen van deeltjes in CRS-eenheden (standaard: de celgrootte van het grondwaterstandsraster)."
              },
              "max_steps": {
                "label": "Maximaal aantal stappen",
                "description": "Maximaal aantal integratiestappen per deeltje (standaard 1000)."
              }
            }
          },
          "delineate_built_up_areas": {
            "name": "Bebouwde gebieden afbakenen",
            "description": "Generaliseert dichte gebouwomtrekken tot gladde nederzettings-/stedelijke-extentpolygonen door nabijgelegen gebouwen te groeperen (morfologische sluiting), met filters voor minimaal aantal gebouwen en oppervlakte.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerpolygoonlaag met gebouwgrondvlakken, formaat automatisch gedetecteerd (of een handle in het geheugen)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de vector (driver op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "grouping_distance": {
                "label": "Groeperingsafstand",
                "description": "Gebouwen waarvan de grondvlakken binnen deze afstand (CRS-eenheden) liggen worden tot één bebouwd gebied gegroepeerd. Stelt de straal van de morfologische sluiting in op de helft van deze waarde."
              },
              "min_building_count": {
                "label": "Minimaal aantal gebouwen",
                "description": "Laat bebouwde gebieden met minder dan dit aantal gebouwen vallen (standaard 1 — elke groep wordt behouden)."
              },
              "min_area": {
                "label": "Minimale oppervlakte",
                "description": "Laat bebouwde gebieden vallen waarvan de oppervlakte (vierkante CRS-eenheden) onder deze waarde ligt, en vult interne gaten die kleiner zijn. Standaard: alles behouden."
              },
              "simplify_tolerance": {
                "label": "Vereenvoudigingstolerantie",
                "description": "Douglas–Peucker-tolerantie (CRS-eenheden) die op de begrenzing van het bebouwde gebied wordt toegepast om de hoekpuntdichte, afgeronde buffer uit te dunnen. Standaard 0 (geen vereenvoudiging)."
              }
            }
          },
          "delineate_depressions": {
            "name": "Depressies afbakenen",
            "description": "Bakent geneste depressies af uit een sinkraster met de level-set-methode (lidar slicing.py).",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerraster met putten (bijv. de uitvoer van extract_sinks)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad van het raster met depressie-ID's. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "level_output": {
                "label": "Niveau-uitvoer",
                "description": "Optioneel uitvoerpad voor het raster met depressieniveaus."
              },
              "csv_output": {
                "label": "CSV-uitvoer",
                "description": "Optioneel uitvoerpad voor de CSV met depressieattributen."
              },
              "vector_output": {
                "label": "Vectoruitvoer",
                "description": "Optioneel uitvoerpad voor de depressiepolygonen als GeoJSON (met gekoppelde attributen)."
              },
              "min_size": {
                "label": "Minimale grootte",
                "description": "Minimaal aantal pixels voor een depressie (standaard 10)."
              },
              "min_depth": {
                "label": "Minimale diepte",
                "description": "Minimale depressiediepte (wordt voor compatibiliteit geaccepteerd; ongebruikt, overeenkomstig lidar)."
              },
              "interval": {
                "label": "Interval",
                "description": "Snij-interval voor de level-set-methode (standaard 0.3)."
              }
            }
          },
          "delineate_mounts": {
            "name": "Verhevenheden afbakenen",
            "description": "Bakent de geneste hiërarchie van verhoogde objecten (verhevenheden) in een DEM af (lidar mounts.py).",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoer-DEM-rasterbestand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad van het raster met verhoging-ID's. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "level_output": {
                "label": "Niveau-uitvoer",
                "description": "Optioneel uitvoerpad voor het raster met verhogingsniveaus."
              },
              "csv_output": {
                "label": "CSV-uitvoer",
                "description": "Optioneel uitvoerpad voor de CSV met verhogingsattributen."
              },
              "vector_output": {
                "label": "Vectoruitvoer",
                "description": "Optioneel uitvoerpad voor de verhogingspolygonen als GeoJSON (met gekoppelde attributen)."
              },
              "min_size": {
                "label": "Minimale grootte",
                "description": "Minimaal aantal pixels voor een verhoging (standaard 10)."
              },
              "min_height": {
                "label": "Minimale hoogte",
                "description": "Minimale hoogte van een verhoging (wordt voor compatibiliteit geaccepteerd; ongebruikt, overeenkomstig lidar)."
              },
              "interval": {
                "label": "Interval",
                "description": "Snij-interval voor de level-set-methode (standaard 0.3)."
              },
              "delta": {
                "label": "Delta",
                "description": "Basiswaarde die wordt opgeteld bij het omklappen van het DEM (standaard 100)."
              }
            }
          },
          "dem_filter": {
            "name": "DEM-filter",
            "description": "Strijkt een DEM glad met een gemiddelde-, mediaan- of gaussiaans filter (lidar filtering.py).",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoer-DEM-rasterbestand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              },
              "filter": {
                "label": "Filter",
                "description": "Filtertype: 'mean', 'median' of 'gaussian' (standaard 'mean')."
              },
              "kernel_size": {
                "label": "Kernelgrootte",
                "description": "Venstergrootte in pixels voor de mean-/median-filters (standaard 3)."
              },
              "sigma": {
                "label": "Sigma",
                "description": "Standaardafwijking voor het Gauss-filter (standaard 1.0)."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die wordt gefilterd (standaard 1)."
              }
            }
          },
          "dendrogram": {
            "name": "Dendrogram",
            "description": "Bouwt een hiërarchische samenvoegboom over klassesignaturen om te tonen hoe scheidbaar de klassen zijn, zoals ArcGIS Dendrogram.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Geclusterde objectlaag met een klasseveld en de numerieke velden die de kenmerkruimte bepalen."
              },
              "class_field": {
                "label": "Klasseveld",
                "description": "Veld dat de klasse-/clusteridentificatie bevat."
              },
              "fields": {
                "label": "Velden",
                "description": "Door komma's gescheiden numerieke velden die de kenmerkruimte bepalen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de samenvoegtabel. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "distance": {
                "label": "Afstand",
                "description": "Afstand tussen signaturen: 'variance' (standaard; genormaliseerd op de spreiding binnen de klasse) of 'mean_only'."
              },
              "standardize": {
                "label": "Standaardiseren",
                "description": "Standaardiseert elk veld met z-scores vóór het berekenen van de afstanden, zodat velden met een groot bereik niet domineren (standaard true)."
              },
              "output_text": {
                "label": "Tekst uitvoeren",
                "description": "Optioneel pad voor een ingesprongen weergave van de boom in platte tekst."
              }
            }
          },
          "densify_sampling_network": {
            "name": "Bemonsteringsnetwerk verdichten",
            "description": "Stelt nieuwe steekproeflocaties voor op de cellen met het hoogste kriging-voorspellingsfoutoppervlak (standaardfout), met inachtneming van een minimale-afstandsinhibitie, zoals ArcGIS Densify Sampling Network.",
            "params": {
              "prediction_error": {
                "label": "Voorspellingsfout",
                "description": "Invoerraster met de standaardfout van de voorspelling (bijv. een oppervlak met de krigingvariantie/-fout). Nieuwe monsters richten zich op de cellen met de hoogste fout."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de puntvector (driver uit de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "count": {
                "label": "Aantal",
                "description": "Aantal voor te stellen nieuwe monsterlocaties."
              },
              "inhibition_distance": {
                "label": "Inhibitieafstand",
                "description": "Minimale onderlinge afstand tussen voorgestelde monsters in kaarteenheden (standaard 0 = geen remming; simpelweg de cellen met de hoogste fout)."
              },
              "mask": {
                "label": "Masker",
                "description": "Optionele polygoonlaag; alleen cellen waarvan het middelpunt erbinnen valt komen als kandidaat in aanmerking."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band van het raster met de voorspellingsfout die wordt gelezen (standaard 1)."
              }
            }
          },
          "detect_bright_ocean_objects": {
            "name": "Heldere oceaanobjecten detecteren",
            "description": "Vindt schepen en andere heldere puntdoelen op water in SAR-beelden met een tweeparameter-CFAR-detector en geeft ze weer als georiënteerde omsluitende rechthoeken met lengte, breedte, koers en piekterugverstrooiing (ArcGIS Detect Bright Ocean Objects). Geen van beide registers heeft een lokale-clutterdetector: een globale drempelwaarde kan niet werken omdat zeeclutter helderder wordt met wind en invalshoek, matched_filter_target_detection is een spectrale optische detector, en detect_image_anomalies gebruikt een globaal model in plaats van een schuivend-venstermodel.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "SAR-terugstrooiingsraster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpolygoonlaag met de gedetecteerde objecten. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "geometry_type": {
                "label": "Geometrietype",
                "description": "'bounding_box' (standaard) voor de georiënteerde minimale rechthoek, of 'perimeter' voor de getraceerde omtrek van de detectie."
              },
              "threshold": {
                "label": "Drempelwaarde",
                "description": "CFAR-detectiedrempel in standaardafwijkingen van de achtergrond (standaard 5.0)."
              },
              "guard_size": {
                "label": "Guard-grootte",
                "description": "Halve breedte in cellen van de bewakingsband die van de achtergrondschatting wordt uitgesloten (standaard 3). Moet kleiner zijn dan background_size."
              },
              "background_size": {
                "label": "Achtergrondgrootte",
                "description": "Halve breedte in cellen van de achtergrondring (standaard 12)."
              },
              "mask_features": {
                "label": "Maskerobjecten",
                "description": "Polygoonlaag die land of water maskeert. Cellen die door het masker worden uitgesloten worden noch getoetst noch als achtergrond gebruikt."
              },
              "mask_type": {
                "label": "Maskertype",
                "description": "'land_polygon' (standaard; analyseert buiten de polygonen) of 'water_polygon' (analyseert erbinnen)."
              },
              "min_object_length": {
                "label": "Minimale objectlengte",
                "description": "Verwerpt objecten die korter zijn dan deze waarde, in kaarteenheden."
              },
              "max_object_length": {
                "label": "Maximale objectlengte",
                "description": "Verwerpt objecten die langer zijn dan deze waarde, in kaarteenheden."
              },
              "min_object_width": {
                "label": "Minimale objectbreedte",
                "description": "Verwerpt objecten die smaller zijn dan deze waarde, in kaarteenheden."
              },
              "max_object_width": {
                "label": "Maximale objectbreedte",
                "description": "Verwerpt objecten die breder zijn dan deze waarde, in kaarteenheden."
              },
              "min_cells": {
                "label": "Minimaal aantal cellen",
                "description": "Verwerpt detecties die kleiner zijn dan dit aantal cellen (standaard 2), wat geïsoleerde spikkelpieken onderdrukt."
              },
              "input_units": {
                "label": "Invoereenheden",
                "description": "'intensity' (standaard), 'dn', 'amplitude' of 'db'. De detectie werkt op lineair vermogen, waar de clutterstatistiek betekenisvol is."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die wordt doorzocht (standaard 1)."
              }
            }
          },
          "detect_dark_ocean_areas": {
            "name": "Donkere oceaangebieden detecteren",
            "description": "Vindt abnormaal donkere vlekken op water in SAR-beelden — olievlekken, natuurlijke lekkages, algenfilms, windstille zones — als regio's die een ingesteld aantal standaardafwijkingen onder de lokale zee-achtergrond liggen, gerapporteerd met hun dB-contrast (ArcGIS Detect Dark Ocean Areas). Het complement van detect_bright_ocean_objects, en verschillend van extract_water_sar: een scène met alleen water is unimodaal, dus een Otsu-splitsing zou simpelweg de zeeclutter halveren en de halve oceaan als olievlek rapporteren.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "SAR-terugstrooiingsraster boven water."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpolygoonlaag met donkere gebieden. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "output_raster": {
                "label": "Uitvoerraster",
                "description": "Binair uitvoermasker (1 donker, 0 achtergrond). Wordt altijd gemaakt; wordt in het geheugen opgeslagen wanneer geen pad is opgegeven."
              },
              "method": {
                "label": "Methode",
                "description": "'statistical' (standaard; een vast aantal standaardafwijkingen onder het achtergrondgemiddelde), 'otsu' of 'fixed'."
              },
              "threshold": {
                "label": "Drempelwaarde",
                "description": "Voor 'statistical': hoeveel standaardafwijkingen onder het gemiddelde als donker gelden (standaard 2.0). Voor 'fixed': het dB-niveau op of onder welke een cel donker is."
              },
              "min_area": {
                "label": "Minimale oppervlakte",
                "description": "Verwerpt donkere gebieden die kleiner zijn dan deze oppervlakte in vierkante kaarteenheden. Olievlekken zijn groot en aaneengesloten; spikkelruis niet."
              },
              "min_contrast_db": {
                "label": "Minimaal contrast (dB)",
                "description": "Verwerpt regio's die minder dan dit aantal dB onder de achtergrond liggen. Een minerale-olievlek ligt doorgaans meer dan 5 dB lager."
              },
              "mask_features": {
                "label": "Maskerobjecten",
                "description": "Polygoonlaag die de analyse tot water beperkt. Land is helder en zou de achtergrondschatting opdrijven."
              },
              "mask_type": {
                "label": "Maskertype",
                "description": "'land_polygon' (standaard; analyseert buiten de polygonen) of 'water_polygon' (analyseert erbinnen)."
              },
              "histogram_bins": {
                "label": "Histogramklassen",
                "description": "Aantal bins voor het Otsu-histogram (standaard 256)."
              },
              "input_units": {
                "label": "Invoereenheden",
                "description": "'intensity' (standaard), 'dn', 'amplitude' of 'db'."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die wordt doorzocht (standaard 1)."
              }
            }
          },
          "detect_feature_changes": {
            "name": "Objectveranderingen detecteren",
            "description": "Matcht twee lijndatasets op Hausdorff-afstand en classificeert elk als unchanged / spatial / attribute / spatial_attribute / new, plus verwijderde basisobjecten — het startpunt voor vectorveranderingsdetectie en conflatie, zoals ArcGIS Detect Feature Changes.",
            "params": {
              "update": {
                "label": "Bijwerken",
                "description": "Bijgewerkte lijnvectorlaag (de nieuwe toestand)."
              },
              "base": {
                "label": "Basis",
                "description": "Basislijnvectorlaag (de vorige toestand) waarmee wordt vergeleken."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerlijnvector (de geclassificeerde bijgewerkte objecten, plus de verwijderde basisobjecten). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "search_distance": {
                "label": "Zoekafstand",
                "description": "Maximale afstand (CRS-eenheden) om een bijgewerkte lijn aan een basislijn te koppelen. Vereist."
              },
              "spatial_tolerance": {
                "label": "Ruimtelijke tolerantie",
                "description": "Hausdorff-afstand waaronder een gekoppelde geometrie als ongewijzigd geldt (CRS-eenheden). Standaard: search_distance / 5."
              },
              "compare_fields": {
                "label": "Te vergelijken velden",
                "description": "Door komma's gescheiden veld(en) die op beide lagen aanwezig zijn en op attribuutwijzigingen worden vergeleken."
              }
            }
          },
          "detect_graphic_conflict": {
            "name": "Grafische conflicten detecteren",
            "description": "Vindt waar de gesymboliseerde (getekende-breedte-)extents van twee objectlagen — of één laag ten opzichte van zichzelf — overlappen of binnen een minimale scheiding te dicht bij elkaar liggen, en geeft per conflicterend paar een conflictpolygoon met beide bronobject-id's en de overlappende oppervlakte, zoals ArcGIS Detect Graphic Conflict.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag (punten, lijnen of polygonen)."
              },
              "conflict": {
                "label": "Conflict",
                "description": "Tweede vectorlaag waartegen 'input' wordt gecontroleerd. Laat dit weg om 'input' tegen zichzelf te controleren."
              },
              "symbol_width": {
                "label": "Symboolbreedte",
                "description": "Gesymboliseerde breedte/diameter van de objecten in 'input', in kaarteenheden."
              },
              "conflict_symbol_width": {
                "label": "Symboolbreedte bij conflict",
                "description": "Gesymboliseerde breedte/diameter van de objecten in 'conflict', in kaarteenheden. Standaard: hetzelfde als 'symbol_width'. Wordt genegeerd wanneer 'conflict' wordt weggelaten."
              },
              "conflict_distance": {
                "label": "Conflictafstand",
                "description": "Extra vereiste tussenruimte bovenop het raken, in kaarteenheden. Standaard 0."
              },
              "line_connection_allowance": {
                "label": "Toegestane lijnverbinding",
                "description": "Straal rond een gedeeld eindpunt van twee lijnobjecten in dezelfde laag waarbinnen hun overlap als normale kop-staartverbinding wordt behandeld en niet als conflict. Standaard 0 (geen speling)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de polygoonvector met de velden 'input_fid', 'conflict_fid' en 'overlap_area'. Indien weggelaten, wordt het in het geheugen opgeslagen."
              }
            }
          },
          "detect_image_anomalies": {
            "name": "Beeldanomalieën detecteren",
            "description": "Scoort elke pixel van een multibandbeeld op zijn Mahalanobis-afstand tot de bandstatistieken van de scène (of van een bewegend venster) — de Reed-Xiaoli-anomaliedetector (RX) — met een optioneel percentieldrempelmasker, zoals ArcGIS Detect Image Anomalies.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Multiband-invoerraster (2 of meer banden)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerraster met de anomaliescore (F32). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "mode": {
                "label": "Modus",
                "description": "'global' (statistiek over de hele scène, standaard) of 'local' (statistiek in een schuivend venster)."
              },
              "window": {
                "label": "Venster",
                "description": "Oneven venstergrootte (pixels) voor de modus local (standaard 15)."
              },
              "threshold": {
                "label": "Drempelwaarde",
                "description": "Optioneel percentiel (0-100) van de scoreverdeling waarboven een binair anomaliemasker wordt weggeschreven."
              },
              "mask_output": {
                "label": "Maskeruitvoer",
                "description": "Uitvoerpad voor het binaire anomaliemasker (vereist 'threshold'). Indien weggelaten terwijl een drempelwaarde is opgegeven, wordt het in het geheugen opgeslagen."
              }
            }
          },
          "detect_incidents": {
            "name": "Incidenten detecteren",
            "description": "Markeert waar een conditie begint en eindigt langs elke track: groepeert punten met tijdstempel per track, sorteert op tijd, evalueert een start- (en optionele eind-)vergelijking over een numeriek attribuut en geeft incidentepisodes als gemarkeerde punten of lijnsegmenten per episode met id's en duur — zoals ArcGIS Detect Incidents.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met punten van waarnemingen met tijdstempels."
              },
              "track_field": {
                "label": "Trackveld",
                "description": "Veld dat elk spoor / elke bewegende entiteit identificeert (bijv. voertuig- of dier-ID)."
              },
              "time_field": {
                "label": "Tijdveld",
                "description": "Veld dat de tijd van elk punt bevat: numerieke seconden of een ISO-8601-tijdstempel."
              },
              "start_condition": {
                "label": "Beginvoorwaarde",
                "description": "Voorwaarde die een incident opent, bijv. 'speed > 30'. Grammatica: '<field> <op> <number>' waarbij op een van > >= < <= == != is, eventueel met twee clausules verbonden door AND."
              },
              "end_condition": {
                "label": "Eindvoorwaarde",
                "description": "Optionele voorwaarde die een incident sluit (dezelfde grammatica). Indien weggelaten, eindigt een incident wanneer de startvoorwaarde niet langer geldt."
              },
              "mode": {
                "label": "Modus",
                "description": "Uitvoermodus: 'points' (standaard, elk punt wordt doorgegeven met incidentvelden) of 'segments' (één polylijn per incident)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorpad (stuurprogramma op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              }
            }
          },
          "dice": {
            "name": "In blokjes snijden (dice)",
            "description": "Splitst polygonen of polylijnen met meer hoekpunten dan een limiet in een raster van kleinere stukken (zoals ArcGIS Dice), zodat verdere overlay en tegeling snel blijven — een adaptieve quadtree doorsnijdt de geometrie met elk kwadrant totdat elk stuk onder de limiet ligt.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlaag met polygonen of polylijnen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerlaag met de opgedeelde stukken. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "vertex_limit": {
                "label": "Hoekpuntlimiet",
                "description": "Maximaal aantal hoekpunten per uitvoerobject (standaard 10000). Objecten op of onder deze grens worden ongewijzigd doorgegeven."
              }
            }
          },
          "difference_3d": {
            "name": "3D-verschil",
            "description": "Trekt een set 3D-volumes af van een andere set en rapporteert het verwijderde en resterende volume van elk minuend-object (ArcGIS Difference 3D). union_3d was de enige 3D-overlay in beide registers en erase is uitsluitend 2D voor polygonen, dus er was geen manier om het resterende uitgegraven volume na een snijlichaam of het pluimvolume buiten een uitsluitingsenvelop te berekenen. Minuend-volumes zijn exact; het verwijderde volume wordt geschat via voxelbezetting op een gerapporteerde resolutie.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Aftrektal: gesloten 3D-lichamen (MultiPolygons als driehoeksmesh met Z)."
              },
              "subtract": {
                "label": "Aftrekken",
                "description": "Aftrekker: gesloten 3D-lichamen die van elk aftrektal worden verwijderd."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoertabel, één rij per aftrektal. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "resolution": {
                "label": "Resolutie",
                "description": "Aantal voxelcellen langs de langste as van de bbox van elk aftrektal (standaard 64). Hoger is nauwkeuriger en trager."
              },
              "keep_geometry": {
                "label": "Geometrie behouden",
                "description": "Neemt de oorspronkelijke geometrie van elk aftrektal mee naar de bijbehorende uitvoerrij (standaard false: een tabel met alleen attributen). De geometrie is het ONGESNEDEN aftrektal — er wordt geen exacte samengevoegde mesh gemaakt."
              }
            }
          },
          "diffusion_interpolation_with_barriers": {
            "name": "Diffusie-interpolatie met barrières",
            "description": "Interpoleert verspreide puntmetingen naar een raster door warmtediffusie te simuleren die OM absolute (no-flux) barrières heen stroomt in plaats van erdoorheen (zoals ArcGIS Diffusion Interpolation With Barriers). Monsters worden vastgezet als vaste cellen; elke andere cel relaxeert naar het gemiddelde van zijn niet-barrièreburen gedurende `number_iterations` Jacobi-sweeps van de Laplace-/warmtevergelijking, zodat de invloed afneemt met de diffusieafstand. Verschilt van de kortste-niet-barrièrepad-kernel van interpolate_with_barriers en van de rastergladstrijker anisotropic_diffusion_filter.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met punten van monstermetingen (Point / MultiPoint)."
              },
              "z_field": {
                "label": "Z-veld",
                "description": "Numeriek veld op de punten dat de te interpoleren waarde bevat."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Geïnterpoleerd uitvoerraster (GeoTIFF). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Uitvoercelgrootte / resolutie in kaarteenheden (meters voor een geografisch CRS, anders CRS-eenheden). Vereist."
              },
              "barriers": {
                "label": "Barrières",
                "description": "Optionele vectorlaag met barrières (polylijnen of polygonen) die de diffusie blokkeert. Polylijnen blokkeren de cellen die hun segmenten kruisen; polygonen blokkeren de cellen waarvan het middelpunt erbinnen valt. Laat dit weg voor een barrièrevrije controle."
              },
              "bandwidth": {
                "label": "Bandbreedte",
                "description": "Relaxatiegewicht lambda per iteratie in (0, 0.25] (standaard 0.2): elke vrije cel beweegt per doorloop deze fractie richting het gemiddelde van zijn buren."
              },
              "number_iterations": {
                "label": "Aantal iteraties",
                "description": "Aantal Jacobi-relaxatiedoorlopen van de warmtevergelijking (standaard 100). Meer iteraties verspreiden de invloed verder."
              },
              "weight_field": {
                "label": "Gewichtsveld",
                "description": "Optioneel numeriek veld dat een gewicht per punt geeft (standaard 1), dat alleen wordt gebruikt om samenvallende monsters in dezelfde uitvoercel te middelen."
              },
              "epsg": {
                "label": "EPSG",
                "description": "Overschrijft de EPSG-code van het invoer-CRS (bijv. wanneer de laag niet is gemarkeerd). 4326 activeert de lokale projectie in meters."
              }
            }
          },
          "dimension_reduction": {
            "name": "Dimensiereductie",
            "description": "Hoofdcomponentenanalyse over numerieke objectattributen (zoals ArcGIS Dimension Reduction): standaardiseert geselecteerde velden, voert eigendecompositie van de correlatie-/covariantiematrix uit met een zelfgeschreven Jacobi-rotatie en schrijft de componentscores PC1..PCk terug naar de objecten plus een rapport met eigenwaarden/variantie/ladingen — de vectorattribuut-tegenhanger van de meegeleverde, uitsluitend bandgebaseerde principal_component_analysis.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag (of tabel) met numerieke attribuutvelden."
              },
              "fields": {
                "label": "Velden",
                "description": "Door komma's gescheiden lijst van ten minste twee numerieke velden die worden gereduceerd."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorlaag met toegevoegde velden voor de PC-scores. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "table": {
                "label": "Tabel",
                "description": "Optioneel CSV-pad voor het componentenrapport (eigenwaarde, verklaarde variantie, cumulatief, ladingen per variabele). Wordt altijd in het resultaat geretourneerd."
              },
              "num_components": {
                "label": "Aantal componenten",
                "description": "Aantal voorste componenten dat wordt behouden. Standaard: genoeg om 'min_variance' te bereiken, anders alle velden."
              },
              "min_variance": {
                "label": "Minimale variantie",
                "description": "Behoudt het kleinste aantal componenten waarvan de cumulatieve verklaarde variantie deze fractie bereikt (0-1). Wordt genegeerd als 'num_components' is ingesteld."
              },
              "standardize": {
                "label": "Standaardiseren",
                "description": "Standaardiseert elk veld (z-score) vóór de PCA, zodat de schalen vergelijkbaar zijn — analyseert dus de correlatiematrix. Standaard true; false analyseert de covariantiematrix."
              }
            }
          },
          "dimensional_moving_statistics": {
            "name": "Dimensionale bewegende statistieken",
            "description": "Laat een bewegend venster langs de dimensie van een rasterkubus lopen en schrijft één gladgestreken plak per invoerplak — het rollende gemiddelde of de rollende mediaan ter plaatse dat een ruisige satelliettijdreeks bruikbaar maakt (ArcGIS Dimensional Moving Statistics). time_series_smoothing uit ronde 17 is uitsluitend voor vectoren, de meegeleverde focale filters bewegen een venster ruimtelijk binnen één plak, en aggregate_multidimensional_raster verkort de kubus tot bins. Bevat een circulair gemiddelde, zonder welk het middelen van expositie of fase over het omslagpunt betekenisloos is.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Eén multiband-raster (elke band is een slice) of een kommagescheiden lijst met co-geregistreerde rasters."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Multiband-uitvoerraster met één band per invoerdoorsnede. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "dimension": {
                "label": "Dimensie",
                "description": "Naam van de dimensie, alleen gebruikt in het rapport (standaard 'slice')."
              },
              "backward_window": {
                "label": "Achterwaarts venster",
                "description": "Aantal doorsneden vóór de huidige dat wordt meegenomen (standaard 1)."
              },
              "forward_window": {
                "label": "Voorwaarts venster",
                "description": "Aantal doorsneden na de huidige dat wordt meegenomen (standaard 1)."
              },
              "statistic": {
                "label": "Statistiek",
                "description": "'mean' (standaard), 'circular_mean', 'majority', 'maximum', 'median', 'minimum', 'minority', 'percentile', 'std' of 'sum'."
              },
              "percentile_value": {
                "label": "Percentielwaarde",
                "description": "Percentiel in [0, 100] voor de statistiek 'percentile' (standaard 50)."
              },
              "period": {
                "label": "Periode",
                "description": "Wikkelperiode voor 'circular_mean' (standaard 360, d.w.z. graden; gebruik 6.283185307179586 voor radialen)."
              },
              "min_valid": {
                "label": "Minimaal aantal geldige",
                "description": "Minimaal aantal waarnemingen zonder no-data in het venster voordat een waarde wordt weggeschreven (standaard 1)."
              },
              "nodata_handling": {
                "label": "NoData-afhandeling",
                "description": "'data' (standaard; slaat no-data over en rekent met de rest), 'nodata' (elke no-data in het venster maakt de uitvoer no-data) of 'fill_nodata' (schrijft ook een waarde weg waar de middendoorsnede zelf no-data is)."
              }
            }
          },
          "directional_distribution": {
            "name": "Richtingsverdeling",
            "description": "Beschrijvende statistieken van geografische verdeling: gemiddeld centrum, mediaan centrum, centraal object, standaardafstand (cirkel) en de standaarddeviatie-ellips — met optionele weging en groepering.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag (punten hebben de voorkeur; andere geometrieën gebruiken hun representatieve punt als gemiddelde van de hoekpunten)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de vector (driver op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "statistic": {
                "label": "Statistiek",
                "description": "Welke maat wordt berekend: 'mean_center', 'median_center', 'central_feature', 'standard_distance' of 'standard_deviational_ellipse'."
              },
              "weight_field": {
                "label": "Gewichtsveld",
                "description": "Optioneel numeriek veld om elk object te wegen (bijv. bevolking). Standaard: elk object gewicht 1."
              },
              "case_field": {
                "label": "Casusveld",
                "description": "Optioneel veld om objecten op te groeperen; er wordt één uitvoerobject per afzonderlijke waarde gemaakt."
              },
              "n_std": {
                "label": "Aantal standaardafwijkingen",
                "description": "Vermenigvuldiger van de standaardafwijking (1, 2 of 3) voor de standaardafstandscirkel en de standaarddeviatie-ellips. Standaard 1."
              }
            }
          },
          "directional_trend": {
            "name": "Richtingstrend",
            "description": "Projecteert steekproefpunten op een gekozen azimut en fit een polynoom van de 1e-3e orde van waarde versus afstand om een globale/anisotrope trend te detecteren vóór de variografie (zoals Directional Trend van ArcGIS). 'determine' doorloopt azimuts op zoek naar de richting met de maximaal verklaarde variantie.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag (punten hebben de voorkeur; andere geometrieën gebruiken hun representatieve punt als gemiddelde van de hoekpunten)."
              },
              "field": {
                "label": "Veld",
                "description": "Numeriek attribuutveld waarvan de trend wordt geanalyseerd."
              },
              "azimuth": {
                "label": "Azimut",
                "description": "Kompaskoers in graden (0 = noord, met de klok mee) waarop wordt geprojecteerd, of 'determine' (standaard) om 0-179° af te tasten voor de koers met de grootste verklaarde variantie."
              },
              "order": {
                "label": "Orde",
                "description": "Polynoomorde 1, 2 of 3 (standaard 2)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de vector (driver uit de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen. De punten dragen proj_dist, value, fitted en residual."
              }
            }
          },
          "directional_variogram": {
            "name": "Directionele variogramanalyse",
            "description": "Berekent variogrammen in meerdere richtingen om ruimtelijke anisotropie te detecteren. Onthult richtingsgebonden continuïteitspatronen die essentieel zijn voor realistische kriging.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Puntlaag met meetwaarden"
              },
              "field": {
                "label": "Veld",
                "description": "Veld met de meetwaarden"
              },
              "directions": {
                "label": "Richtingen",
                "description": "Door komma's gescheiden lijst met te analyseren azimuts (0-180°)"
              },
              "tolerance": {
                "label": "Tolerantie",
                "description": "Richtingstolerantie in graden (standaard 22.5)"
              },
              "max_distance": {
                "label": "Maximale afstand",
                "description": "Maximale te berekenen lagafstand (standaard 1000)"
              },
              "bin_size": {
                "label": "Bingrootte",
                "description": "Grootte van de lagbins (standaard 50)"
              },
              "output_json": {
                "label": "JSON uitvoeren",
                "description": "Uitvoerbestandspad voor de resultaten van het directionele variogram"
              },
              "output_html": {
                "label": "Uitvoer-HTML",
                "description": "Optioneel uitvoerpad voor de HTML-visualisatie van het rosediagram"
              }
            }
          },
          "disperse_markers": {
            "name": "Markers spreiden",
            "description": "Spreidt samenvallende of overlappende puntsymbolen uit elkaar tot een minimale afstand tussen de middelpunten (uitgebreide/ring-/kruis-/vierkantpatronen), zodat gestapelde punten afzonderlijk zichtbaar blijven, zoals ArcGIS Disperse Markers.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met punten."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de puntvector (driver uit de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "min_spacing": {
                "label": "Minimale tussenafstand",
                "description": "Minimale hart-op-hartafstand die tussen geclusterde punten wordt afgedwongen, in kaarteenheden."
              },
              "pattern": {
                "label": "Patroon",
                "description": "'expanded' (standaard, concentrische ringen + lokale afstoting), 'ring' (één cirkel), 'cross' (vier armen) of 'square' (rooster)."
              },
              "seed": {
                "label": "Seed",
                "description": "Geheel zaad voor deterministische beslissing bij gelijkspel wanneer leden precies samenvallen (standaard 0)."
              }
            }
          },
          "dissolve_route_events": {
            "name": "Routegebeurtenissen samenvoegen",
            "description": "Voegt routegebeurtenissen die elkaar raken of overlappen langs dezelfde route samen tot enkele maatbereiken, ofwel alleen wanneer de samenvoegvelden overeenkomen ('dissolve') of door afwijkende waarden aaneen te rijgen ('concatenate'). Zoals ArcGIS Dissolve Route Events.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoergebeurtenistabel (lijngebeurtenissen met van/tot-maten)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de gebeurtenistabel. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "route_id_field": {
                "label": "Route-ID-veld",
                "description": "Veld dat de route-identificatie bevat."
              },
              "from_measure_field": {
                "label": "Veld beginmaat",
                "description": "Veld dat de van-maat van elke gebeurtenis bevat."
              },
              "to_measure_field": {
                "label": "Veld eindmaat",
                "description": "Veld dat de tot-maat van elke gebeurtenis bevat. Gebruik voor puntgebeurtenissen hetzelfde veld als 'from_measure_field'."
              },
              "dissolve_fields": {
                "label": "Samenvoegvelden",
                "description": "Door komma's/puntkomma's gescheiden veldna(a)m(en) die moeten overeenkomen om twee bereiken samen te voegen (of waarvan de waarden worden aaneengeschakeld)."
              },
              "mode": {
                "label": "Modus",
                "description": "'dissolve' (standaard) of 'concatenate'."
              },
              "tolerance": {
                "label": "Tolerantie",
                "description": "Maatverschil waaronder twee bereiken als aangrenzend gelden (standaard 0)."
              },
              "separator": {
                "label": "Scheidingsteken",
                "description": "Scheidingsteken dat wordt gebruikt om waarden in de modus 'concatenate' samen te voegen (standaard ', ')."
              }
            }
          },
          "edgematch_features": {
            "name": "Objecten randmatchen",
            "description": "Verbindt lijndatasets over een tegel-/bladgrens (zoals ArcGIS Generate Edgematch Links + Edgematch Features): matcht loshangende eindpunten één-op-één binnen een tolerantie en verzoent ze (middelpunt of snappen), met een optionele laag met matchlinks. De object-overschrijdende één-op-één-matching die de blinde snap_endnodes mist.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlijnlaag (bijv. twee samengevoegde aangrenzende tegels) om randen op elkaar aan te laten sluiten."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Aangepaste uitvoerlijnlaag. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "tolerance": {
                "label": "Tolerantie",
                "description": "Maximale afstand tussen losse eindpunten om ze aan elkaar te koppelen."
              },
              "method": {
                "label": "Methode",
                "description": "'midpoint' (beide uiteinden naar hun middelpunt verplaatsen; standaard) of 'move_endpoint' (het tweede op het eerste snappen)."
              },
              "match_fields": {
                "label": "Matchvelden",
                "description": "Optionele, door komma's gescheiden velden; een gekoppeld paar moet hierop overeenkomen (dit onderscheidt kandidaten)."
              },
              "links": {
                "label": "Links",
                "description": "Optionele uitvoerlijnlaag met koppelingslijnen (voor kwaliteitscontrole)."
              }
            }
          },
          "eighty_twenty_analysis": {
            "name": "80/20-analyse",
            "description": "Snapt incidentpunten naar gewogen locaties en berekent de Pareto-concentratie ('X% van de incidenten vindt plaats op Y% van de locaties'), waarbij elke locatie wordt voorzien van rang, cumulatief incidentpercentage en kop-/staartband, zoals ArcGIS Eighty Twenty Analysis.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met incidentpunten (Point of MultiPoint)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de puntvector (driver uit de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "cluster_tolerance": {
                "label": "Clustertolerantie",
                "description": "Afstand waarbinnen incidenten naar één locatie snappen (kaarteenheden, standaard 0 = alleen exact samenvallende punten)."
              },
              "weight_field": {
                "label": "Gewichtsveld",
                "description": "Optioneel numeriek veld dat het gewicht van elk incident geeft (standaard: elk incident telt als 1)."
              },
              "threshold": {
                "label": "Drempelwaarde",
                "description": "Concentratiedrempel in procenten die de Pareto-'kop' definieert (standaard 80)."
              }
            }
          },
          "eliminate_polygon_part": {
            "name": "Polygoondeel elimineren",
            "description": "Verwijdert binnengaten (en optioneel kleine buitendelen) van polygonen waarvan de oppervlakte onder een absolute-oppervlakte- of percentagedrempel ligt, met behoud van attributen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerpolygoonvectorbestand, formaat automatisch gedetecteerd (of een handle in het geheugen)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de vector (driver op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "condition": {
                "label": "Voorwaarde",
                "description": "Groottetoets: 'AREA' (standaard) vergelijkt met 'min_area'; 'PERCENT' vergelijkt de oppervlakte van het deel/gat als percentage van de totale buitenoppervlakte van het object met 'percentage'."
              },
              "min_area": {
                "label": "Minimale oppervlakte",
                "description": "Voorwaarde AREA: verwijdert delen/gaten waarvan de oppervlakte (in vierkante CRS-eenheden) onder deze waarde ligt. Vereist wanneer condition = AREA."
              },
              "percentage": {
                "label": "Percentage",
                "description": "Voorwaarde PERCENT: verwijdert delen/gaten waarvan de oppervlakte, als percentage (0-100) van de totale buitenoppervlakte van het object, onder deze waarde ligt. Vereist wanneer condition = PERCENT."
              },
              "part_option": {
                "label": "Deeloptie",
                "description": "Wat in aanmerking komt voor verwijdering: 'CONTAINED_ONLY' (standaard) verwijdert alleen binnenringen (gaten); 'ANY' verwijdert ook kleine buitendelen, behalve het enkele grootste deel."
              }
            }
          },
          "eliminate_polygons": {
            "name": "Polygonen elimineren",
            "description": "Voegt sliverpolygonen (op maximale oppervlakte en/of een attribuutquery) samen met een naburige polygoon, gekozen op langste gedeelde grens of grootste oppervlakte.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerpolygoonvectorbestand, formaat automatisch gedetecteerd (of een handle in het geheugen)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de vector (driver op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "max_area": {
                "label": "Maximale oppervlakte",
                "description": "Selecteert polygonen waarvan de oppervlakte (in vierkante CRS-eenheden) gelijk is aan of kleiner is dan deze waarde. Mag met 'where' worden gecombineerd (beide moeten dan overeenkomen)."
              },
              "where": {
                "label": "Where",
                "description": "Selecteert polygonen die voldoen aan een eenvoudige attribuutvoorwaarde 'FIELD OP VALUE', waarbij OP een van = != < <= > >= is (bijv. \"class = 0\"). Mag met 'max_area' worden gecombineerd."
              },
              "exclude": {
                "label": "Uitsluiten",
                "description": "Beschermt objecten die aan deze voorwaarde voldoen (dezelfde syntaxis 'FIELD OP VALUE') tegen eliminatie; ze blijven behouden en kunnen samenvoegingen ontvangen."
              },
              "strategy": {
                "label": "Strategie",
                "description": "In welke buur een splinter wordt opgenomen: 'longest_border' (standaard) of 'largest_area'."
              },
              "tolerance": {
                "label": "Tolerantie",
                "description": "Maximale loodrechte afstand (in CRS-eenheden) waarbij twee begrenzingssegmenten als gedeelde rand gelden. Standaard 1e-6."
              }
            }
          },
          "emerging_hot_spot_analysis": {
            "name": "Opkomende-hotspotanalyse",
            "description": "Ruimte-tijd-hotspottrends op een H3-ruimte-tijdkubus: verdeelt punten met tijdstempel in H3-cellen x tijdstappen, berekent Getis-Ord Gi* per bin en classificeert elke cel (nieuwe/intensiverende/persistente/afnemende/... hot- of coldspot) via een Mann-Kendall-trendtoets, zoals ArcGIS Emerging Hot Spot Analysis.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met punten (geografisch lon/lat, EPSG:4326). Andere geometrieën gebruiken hun representatieve punt als gemiddelde van de hoekpunten."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector (driver uit de extensie). Eén H3-polygoon per cel. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "time_field": {
                "label": "Tijdveld",
                "description": "Veld dat de tijd van elk punt bevat: een numeriek veld (in eigen eenheden) of een ISO-8601-datum-/datumtijdtekenreeks."
              },
              "time_step": {
                "label": "Tijdstap",
                "description": "Breedte van een tijdstap: een gewoon getal (numeriek time_field) of een duur zoals '1w', '7d', '12h', '1M' voor een datumveld. Standaard '1w'."
              },
              "value_field": {
                "label": "Waardeveld",
                "description": "Optioneel numeriek veld dat per bin wordt gesommeerd. Standaard: het aantal punten per bin."
              },
              "resolution": {
                "label": "Resolutie",
                "description": "H3-resolutie van 0 (grofst) tot 15 (fijnst); standaard 7 (cellen van ongeveer 5 km²)."
              },
              "neighborhood": {
                "label": "Omgeving",
                "description": "Straal van de ruimtelijke omgeving in H3-k-ringen (standaard 1)."
              },
              "time_window": {
                "label": "Tijdvenster",
                "description": "Straal van de temporele omgeving in tijdstappen (standaard 1)."
              }
            }
          },
          "empirical_bayesian_kriging": {
            "name": "Empirische bayesiaanse kriging",
            "description": "Interpoleert een puntveld via vele overlappende lokale deelverzamelingen, die elk hun eigen semivariogram fitten waarvan de onzekerheid wordt vastgelegd door verstoorde semivariogrammen te simuleren met een geseede RNG, en mengt vervolgens de kriging-voorspellingen/-varianties van de deelverzamelingen op afstand (zoals Empirical Bayesian Kriging van ArcGIS) — verschillend van de meegeleverde ordinary/universal/simple/cokriging, die allemaal één handmatig geaccepteerd globaal (of enkel bewegend-venster-)semivariogram fitten.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerpuntlaag."
              },
              "field": {
                "label": "Veld",
                "description": "Numeriek veld op de invoerlaag dat wordt geïnterpoleerd."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerraster met de voorspelling. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Uitvoercelgrootte in CRS-eenheden. Standaard: zo gekozen dat de langste rasteras ongeveer 150 cellen telt."
              },
              "subset_size": {
                "label": "Subsetgrootte",
                "description": "Beoogd aantal punten per lokale subset (standaard 40, minimaal 4)."
              },
              "overlap": {
                "label": "Overlap",
                "description": "Fractie van de breedte/hoogte van een subsettegel waarmee aangrenzende tegels overlappen (standaard 0.25)."
              },
              "simulations": {
                "label": "Simulaties",
                "description": "Aantal gesimuleerde semivariogrammen dat per subset wordt getrokken om de modelonzekerheid weer te geven (standaard 5, maximaal 50)."
              },
              "semivariogram": {
                "label": "Semivariogram",
                "description": "Modelfamilie van het semivariogram: 'power' (standaard), 'linear' of 'exponential'."
              },
              "transform": {
                "label": "Transformatie",
                "description": "Gegevenstransformatie vóór de kriging: 'none' (standaard) of 'log_empirical' (natuurlijke logaritme; vereist dat het veld overal > 0 is)."
              },
              "error_output": {
                "label": "Foutuitvoer",
                "description": "Optioneel uitvoerraster met de standaardfout van de voorspelling."
              },
              "seed": {
                "label": "Seed",
                "description": "Zaad voor de deterministische RNG van de semivariogramsimulatie (standaard 42)."
              }
            }
          },
          "enclose_multipatch": {
            "name": "Multipatch omsluiten",
            "description": "Converteert open 3D-driehoeksmesh-oppervlakken naar gesloten, waterdichte volumes door hun randlussen af te sluiten, zodat ze geldige invoer worden voor volumetrische analyse (ArcGIS Enclose Multipatch). is_closed_3d kan een open mesh diagnosticeren, maar niets kon er een repareren, en union_3d / intersect_3d / difference_3d / inside_3d weigeren open meshes allemaal of rapporteren ze verkeerd — wat de normale toestand is van geëxtrudeerde omtrekken, terreinschillen en geïmporteerde gebouwoppervlakken.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "3D-oppervlakteobjecten (MultiPolygons als driehoeksmesh met Z)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Gesloten uitvoerobjecten als vast lichaam. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "drop_failed": {
                "label": "Mislukte weglaten",
                "description": "Laat objecten weg die niet waterdicht konden worden gemaakt (standaard false: ze worden uitgevoerd met CAP_FAILED = true, zodat de mislukking zichtbaar is in plaats van stilzwijgend)."
              }
            }
          },
          "enforce_river_monotonicity": {
            "name": "Riviermonotonie afdwingen",
            "description": "Snijdt een DEM uit zodat de hoogten monotoon afnemen stroomafwaarts langs gekarteerde rivierpolylijnen — een hydro-afdwingstap voor hydraulische en overstromingsmodellering, zoals ArcGIS Enforce River Monotonicity. Anders dan fill_depressions/fill_burn (die gesloten putten verwijderen) dwingt dit een monotoon profiel af langs een bekende riviervector.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerpolylijnlaag met rivieren (LineString / MultiLineString) in hetzelfde CRS als het DEM."
              },
              "surface": {
                "label": "Oppervlak",
                "description": "Te corrigeren hoogteraster (DEM)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het gecorrigeerde DEM (formaat uit de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "tolerance": {
                "label": "Tolerantie",
                "description": "Minimale hoogtedaling die per verdichte stap wordt afgedwongen, in Z-eenheden (standaard 0 = niet stijgend). Positieve waarden dwingen een strikt dalend profiel af."
              },
              "sample_distance": {
                "label": "Bemonsteringsafstand",
                "description": "Verdichtingsinterval in CRS-eenheden langs elke rivierlijn. Standaard: de celgrootte van het raster (≈ één monster per cel)."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde DEM-band die wordt gecorrigeerd (standaard 1)."
              }
            }
          },
          "estimate_time_to_event": {
            "name": "Tijd tot gebeurtenis schatten",
            "description": "Schat de tijd tot een gebeurtenis via een Kaplan-Meier-overlevingscurve (zoals ArcGIS Estimate Time To Event): berekent uit een duurveld en een gebeurtenis-/censureringsveld de overlevingskans van elk object en de mediane tijd tot gebeurtenis van zijn stratum, optioneel gestratificeerd naar een categorisch veld.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlaag met punten of polygonen met een duurveld en een gebeurtenis-/censureringsveld."
              },
              "age_field": {
                "label": "Leeftijdsveld",
                "description": "Veld dat de waargenomen duur van elk object bevat (tijd tot gebeurtenis of tijd tot censurering), een niet-negatief getal."
              },
              "event_field": {
                "label": "Gebeurtenisveld",
                "description": "Veld dat aangeeft of de gebeurtenis heeft plaatsgevonden (waar: 1/true) of dat de waarneming is gecensureerd (onwaar: 0/false)."
              },
              "stratify_field": {
                "label": "Stratificatieveld",
                "description": "Optioneel categorisch veld om per groep een aparte overlevingscurve te fitten."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerlaag met de toegevoegde velden km_survival, km_median en km_stratum. Indien weggelaten, wordt het in het geheugen opgeslagen."
              }
            }
          },
          "estimate_variogram": {
            "name": "Variogram schatten",
            "description": "Berekent een empirisch semivariogram uit puntwaarnemingen om de ruimtelijke correlatiestructuur te karakteriseren. Essentiële eerste stap in de geostatistische workflow.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met punten met waarden"
              },
              "field": {
                "label": "Veld",
                "description": "Veld met de meetwaarden"
              },
              "lag_distance": {
                "label": "Lag-afstand",
                "description": "Grootte van de lagbins in kaarteenheden (standaard: 100.0)"
              },
              "lag_tolerance": {
                "label": "Lag-tolerantie",
                "description": "Tolerantie voor de lagindeling (standaard: 50.0)"
              },
              "max_lag_count": {
                "label": "Maximaal aantal lags",
                "description": "Maximaal aantal lags dat wordt behouden (standaard: 20)"
              }
            }
          },
          "euclidean_direction": {
            "name": "Euclidische richting",
            "description": "Berekent het kompasazimut van elke cel naar de dichtstbijzijnde broncel, plus optionele rasters voor afstand en terugrichting (ArcGIS Euclidean Direction). Completeert de meegeleverde euclidische familie, die euclidean_distance (hoe ver) en euclidean_allocation (welke bron) levert, maar niet de peiling. Gebruikt een exacte afstandstransformatie die de coördinaten van de dichtstbijzijnde bron meedraagt; met een barrièreraster wordt in plaats daarvan om obstakels heen gerouteerd.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Bronraster: cellen die geen no-data en niet nul zijn vormen de bronnen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van het richtingsraster (graden met de klok mee vanaf het noorden). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "output_distance": {
                "label": "Afstand uitvoeren",
                "description": "Optioneel pad voor het bijbehorende afstandsraster."
              },
              "output_back_direction": {
                "label": "Terugrichting uitvoeren",
                "description": "Optioneel pad voor het raster met de terugrichting: de koers om vanuit deze cel terug naar de dichtstbijzijnde bron te reizen. Gelijk aan het richtingsraster wanneer geen barrières zijn opgegeven; met barrières is het de eerste stap van het terugpad."
              },
              "barriers": {
                "label": "Barrières",
                "description": "Optioneel barrièreraster; cellen die niet nul en geen no-data zijn blokkeren rechte paden, waardoor eromheen moet worden gerouteerd."
              },
              "max_distance": {
                "label": "Maximale afstand",
                "description": "Cellen die verder dan deze afstand van een bron liggen worden als no-data weggeschreven."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band van het bronraster die wordt gelezen (standaard 1)."
              }
            }
          },
          "evaluate_bin_sizes": {
            "name": "Bingroottes evalueren",
            "description": "Doorloopt kandidaat-bingroottes voor aggregatie en rapporteert diagnostiek die aangeeft welke grootte de structuur het best onthult, zoals ArcGIS Evaluate Bin Sizes.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Te aggregeren puntobjecten."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de diagnostiektabel. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "bin_shape": {
                "label": "Binvorm",
                "description": "hexagon (standaard; benadering met rijverschuiving, zie de documentatie) | square."
              },
              "sizes": {
                "label": "Groottes",
                "description": "Door komma's gescheiden kandidaat-bingroottes (kaarteenheden). Indien weggelaten, wordt een meetkundige reeks gegenereerd op basis van de gemiddelde afstand tot de dichtstbijzijnde buur."
              },
              "steps": {
                "label": "Stappen",
                "description": "Aantal kandidaten in de gegenereerde reeks (standaard 8, maximaal 64)."
              },
              "analysis_field": {
                "label": "Analyseveld",
                "description": "Optioneel numeriek veld dat per bin wordt gesommeerd in plaats van punten te tellen."
              }
            }
          },
          "evaluate_variable_influence": {
            "name": "Variabele-invloed evalueren",
            "description": "Rapporteert permutatie-importantie en partiële-afhankelijkheidscurven voor een forestmodel dat op een tabel is gefit, en beantwoordt welke verklarende variabelen een model daadwerkelijk gebruikt en welke vorm elk effect heeft (ArcGIS Evaluate Variable Influence). De catalogus kan modellen fitten — generalized_linear_regression, exploratory_regression, geographically_weighted_regression, forest_based_forecast, de random forests van whitebox — maar geen ervan rapporteert een van beide maten. ArcGIS leest een getraind .ssm-modelbestand; deze stack heeft geen overdraagbaar modelformaat, dus de tool fit zijn eigen forest en verklaart dat vervolgens. Volledig deterministisch: bagging met vaste stappen en een vaste permutatie, geen RNG.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Laag of tabel met de trainingswaarnemingen."
              },
              "dependent_field": {
                "label": "Afhankelijk veld",
                "description": "Het te voorspellen veld."
              },
              "explanatory_fields": {
                "label": "Verklarende velden",
                "description": "Door komma's gescheiden numerieke velden die worden geëvalueerd."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoertabel met het belang per variabele. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "output_partial_dependence": {
                "label": "Partiële afhankelijkheid uitvoeren",
                "description": "Uitvoertabel met partiële-afhankelijkheidscurven, één rij per variabele en roosterpunt. Wordt altijd gemaakt; wordt in het geheugen opgeslagen wanneer geen pad is opgegeven."
              },
              "model_type": {
                "label": "Modeltype",
                "description": "'regression' (standaard) voor een continu doel, of 'classification' voor een categorisch doel."
              },
              "number_of_trees": {
                "label": "Aantal bomen",
                "description": "Aantal bomen in het ensemble (standaard 50)."
              },
              "max_depth": {
                "label": "Maximale diepte",
                "description": "Maximale boomdiepte (standaard 8)."
              },
              "min_samples_leaf": {
                "label": "Minimaal aantal monsters per blad",
                "description": "Minimaal aantal waarnemingen dat een blad mag bevatten (standaard 3)."
              },
              "grid_points": {
                "label": "Rasterpunten",
                "description": "Aantal punten per partiële-afhankelijkheidscurve (standaard 12)."
              },
              "permutation_repeats": {
                "label": "Permutatieherhalingen",
                "description": "Aantal afzonderlijke permutaties dat per variabele wordt gemiddeld (standaard 3). Meer is stabieler en trager."
              }
            }
          },
          "excel_to_table": {
            "name": "Excel naar tabel",
            "description": "Leest een werkblad uit een .xlsx/.xls/.xlsb/.ods-werkmap in een attribuuttabel, waarbij numerieke versus tekstkolommen worden afgeleid.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van de Excel-/OpenDocument-invoerwerkmap (.xlsx, .xls, .xlsb of .ods)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de tabel (driver uit de extensie; GeoParquet .parquet wordt aanbevolen). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "sheet": {
                "label": "Werkblad",
                "description": "Te lezen werkblad, op naam of 0-gebaseerde index. Standaard: het eerste blad."
              },
              "cell_range": {
                "label": "Celbereik",
                "description": "Optioneel te importeren bereik in A1-notatie, bijv. 'B2:E40'. Standaard: het volledige gebruikte bereik van het blad."
              },
              "field_names_row": {
                "label": "Rij met veldnamen",
                "description": "1-gebaseerde rij binnen het geselecteerde bereik die de kolomnamen bevat (standaard 1). Rijen erboven worden overgeslagen; 0 betekent geen kopregel (Field1, Field2, ... worden automatisch gegenereerd)."
              }
            }
          },
          "expand_shrink": {
            "name": "Uitbreiden / krimpen",
            "description": "Laat geselecteerde klassen van een categorisch raster groeien (uitbreiden) of krimpen met een aantal cellen, terwijl andere klassen intact blijven — de standaardopschoning voor geclassificeerde landbedekking vóór polygonisatie, zoals ArcGIS Expand / Shrink.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Categorisch invoerraster (met gehele waarden)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "classes": {
                "label": "Klassen",
                "description": "Door komma's gescheiden klassewaarde(n) die worden uitgebreid of verkleind."
              },
              "cells": {
                "label": "Cellen",
                "description": "Aantal cellen waarmee wordt uitgebreid of verkleind (>= 1)."
              },
              "mode": {
                "label": "Modus",
                "description": "'expand' (de geselecteerde klassen laten groeien; standaard) of 'shrink' (ze eroderen)."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die wordt gelezen (standaard 1)."
              }
            }
          },
          "exploratory_interpolation": {
            "name": "Verkennende interpolatie",
            "description": "Voert meerdere interpolatiemethoden uit (IDW, nearest neighbour, trendoppervlakken van de eerste/tweede orde), kruisvalideert elk met leave-one-out en rangschikt ze op voorspellingsnauwkeurigheid (RMSE/MAE) of bias (ME) — zoals ArcGIS Exploratory Interpolation. Rapporteert een gerangschikte vergelijkingstabel per methode en kan het voorspellingsraster van de beste methode uitvoeren. Omvat een losstaand kruisvalidatieverzoek.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met meetpunten."
              },
              "field": {
                "label": "Veld",
                "description": "Numeriek veld op de punten dat de te interpoleren waarde bevat."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoertabel met de gerangschikte vergelijking — een CSV (extensie .csv) of een vectortabel zonder geometrie. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "methods": {
                "label": "Methoden",
                "description": "Door komma's/pijpen gescheiden deelverzameling van de te vergelijken methoden: 'idw', 'nearest', 'trend1', 'trend2'. Standaard: alle vier."
              },
              "criterion": {
                "label": "Criterium",
                "description": "Rangschikkingscriterium: 'rmse' (standaard, kleinste fout), 'mae' (kleinste absolute fout) of 'me' (minste vertekening, kleinste |gemiddelde fout|)."
              },
              "power": {
                "label": "Macht",
                "description": "Exponent van de IDW-afstandsafname (standaard 2)."
              },
              "output_raster": {
                "label": "Uitvoerraster",
                "description": "Optionele uitvoer-GeoTIFF: de best gerangschikte methode gefit op alle monsters, geëvalueerd over een raster dat de omvang van de monsters beslaat."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Celgrootte van het winnaarsraster in CRS-eenheden (graden voor een geografisch CRS). Standaard: zo gekozen dat de langste as ongeveer 256 cellen beslaat."
              }
            }
          },
          "exploratory_regression": {
            "name": "Verkennende regressie",
            "description": "Somt OLS-modellen op over elke combinatie van kandidaat-verklarende velden en screent elk op aangepaste R2, coëfficiëntsignificantie, VIF-multicollineariteit, Jarque-Bera-residunormaliteit en ruimtelijke autocorrelatie van residuen via Moran's I, en rapporteert elk model plus de gerangschikte geslaagde set en een significantiesamenvatting per variabele — zoals ArcGIS Exploratory Regression.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerobjectlaag met geometrie (gebruikt voor de omgeving van de Moran's I op de residuen)."
              },
              "dependent_field": {
                "label": "Afhankelijk veld",
                "description": "Numeriek veld met de afhankelijke variabele (respons)."
              },
              "explanatory_fields": {
                "label": "Verklarende velden",
                "description": "Door komma's gescheiden numerieke kandidaat-verklarende velden waarin wordt gezocht."
              },
              "min_vars": {
                "label": "Minimaal aantal variabelen",
                "description": "Minimaal aantal verklarende variabelen per kandidaatmodel (standaard 1)."
              },
              "max_vars": {
                "label": "Maximaal aantal variabelen",
                "description": "Maximaal aantal verklarende variabelen per kandidaatmodel (standaard: min(aantal kandidaten, 6))."
              },
              "max_coef_p": {
                "label": "Maximale p-waarde coëfficiënt",
                "description": "Maximaal toegestane p-waarde voor elke verklarende coëfficiënt (standaard 0.05)."
              },
              "min_adj_r2": {
                "label": "Minimale aangepaste R²",
                "description": "Minimale aangepaste R-kwadraat (standaard 0.5)."
              },
              "max_vif": {
                "label": "Maximale VIF",
                "description": "Maximaal toegestane variantie-inflatiefactor per term (standaard 7.5)."
              },
              "min_jb_p": {
                "label": "Minimale JB-p-waarde",
                "description": "Minimale p-waarde van Jarque-Bera voor de normaliteit van de residuen (standaard 0.1)."
              },
              "min_moran_p": {
                "label": "Minimale Moran-p-waarde",
                "description": "Minimale p-waarde voor de ruimtelijke autocorrelatie van de residuen (Moran's I); daarboven zijn de residuen niet significant geclusterd (standaard 0.1)."
              },
              "neighbors": {
                "label": "Buren",
                "description": "Aantal dichtstbijzijnde buren dat de ruimtelijke gewichten voor de Moran's I-toets op de residuen bepaalt (standaard 8)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de rapporttabel — een CSV (extensie .csv) of een vectortabel zonder geometrie."
              }
            }
          },
          "extract_locations_from_text": {
            "name": "Locaties extraheren uit tekst",
            "description": "Doorzoekt vrije tekst op ingebedde coördinaten — decimale graden (DD), graden-decimale minuten (DDM), graden-minuten-seconden (DMS) en MGRS/USNG-rasterverwijzingen — en geeft per treffer één WGS84-punt, zoals ArcGIS Extract Locations From Text (coördinatentak). Pure patroonherkenning; geen geocodeerdienst.",
            "params": {
              "input_text": {
                "label": "Invoertekst",
                "description": "De vrije tekst die wordt gescand. Ofwel de letterlijke tekst, ofwel een pad naar een UTF-8-tekstbestand (dat wordt gelezen wanneer de waarde naar een bestaand bestand verwijst)."
              },
              "notations": {
                "label": "Notaties",
                "description": "Door komma's/spaties gescheiden deelverzameling van notaties waarnaar wordt gezocht: DD, DDM, DMS, MGRS (USNG is een alias van MGRS). Standaard: alle vier."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorpad (stuurprogramma op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              }
            }
          },
          "extract_ocean_winds": {
            "name": "Oceaanwinden extraheren",
            "description": "Haalt de equivalent-neutrale oceaanwindsnelheid op 10 m uit gekalibreerde SAR-terugverstrooiing door de geofysische modelfunctie CMOD5.N te inverteren (ArcGIS Extract Ocean Winds). De hele meegeleverde SAR-keten blijft in het radiometrische domein en niets zette terugverstrooiing om in een geofysische grootheid, wat ook het onderscheid maakt tussen een windstille zone en een olievlek.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Gekalibreerd terugstrooiingsraster (sigma0)."
              },
              "units": {
                "label": "Eenheden",
                "description": "Eenheden van 'input': 'dn', 'amplitude', 'intensity' of 'db' (standaard 'db')."
              },
              "incidence_angle": {
                "label": "Invalshoek",
                "description": "Invalshoek per cel in graden: een rasterpad of een constant getal."
              },
              "wind_direction": {
                "label": "Windrichting",
                "description": "Meteorologische windrichting in graden (de richting WAARUIT de wind waait), als rasterpad of als constante. Een vereiste voorkennis: CMOD heeft twee onbekenden en één waarneming."
              },
              "look_direction": {
                "label": "Kijkrichting",
                "description": "Kijkazimut van de radar in graden, als rasterpad of als constante. Wordt gebruikt om de windrichting om te zetten naar de relatieve hoek die CMOD gebruikt."
              },
              "polarization": {
                "label": "Polarisatie",
                "description": "'vv' (standaard, native CMOD5.N) of 'hh' (past een benaderde polarisatieverhouding toe)."
              },
              "polarization_ratio_alpha": {
                "label": "Alfa polarisatieverhouding",
                "description": "Alfa in de HH-naar-VV-polarisatieverhouding (standaard 0.6). Wordt alleen gebruikt wanneer de polarisatie 'hh' is."
              },
              "water_mask": {
                "label": "Watermasker",
                "description": "Optionele polygoonlaag of raster die de uitvoer tot water beperkt; landretours zijn hier betekenisloos."
              },
              "max_wind": {
                "label": "Maximale wind",
                "description": "Bovengrens van het inversiebereik, m/s (standaard 50)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerraster met de windsnelheid in m/s. Indien weggelaten, wordt het in het geheugen opgeslagen."
              }
            }
          },
          "extract_scanned_features": {
            "name": "Gescande objecten extraheren",
            "description": "Vectoriseert een binair (gescand/gedrempeld) raster naar schone lijnen (skelettracering) of polygonen, met ruisverwijdering, gatenvulling, gatensluiting en vereenvoudiging.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Te vectoriseren binair/geclassificeerd invoerraster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de vector (driver op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "feature_type": {
                "label": "Kenmerktype",
                "description": "'lines' (standaard): skeletteren en hartlijnen traceren. 'polygons': gevulde regio's vectoriseren."
              },
              "foreground_value": {
                "label": "Voorgrondwaarde",
                "description": "Celwaarde die de voorgrond markeert. Indien weggelaten, vormen cellen >= 'threshold' (of, bij afwezigheid daarvan, elke geldige cel die niet nul is) de voorgrond."
              },
              "threshold": {
                "label": "Drempelwaarde",
                "description": "De voorgrond bestaat uit cellen met een waarde >= deze waarde (wordt gebruikt wanneer 'foreground_value' niet is opgegeven)."
              },
              "noise_size": {
                "label": "Ruisgrootte",
                "description": "Verwijdert voorgrondcomponenten die kleiner zijn dan dit aantal cellen (standaard 4)."
              },
              "hole_size": {
                "label": "Gatgrootte",
                "description": "Vult achtergrondgaten die kleiner zijn dan dit aantal cellen (standaard 4)."
              },
              "gap_distance": {
                "label": "Hiaatafstand",
                "description": "Voor lijnen: overbrugt gaten tot deze afstand (CRS-eenheden) tussen vrijwel collineaire lijneindpunten. Standaard 0 (uit)."
              },
              "simplify_tolerance": {
                "label": "Vereenvoudigingstolerantie",
                "description": "Douglas-Peucker-tolerantie (CRS-eenheden) voor de uitvoergeometrie. Standaard ongeveer 1 cel."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die wordt gelezen (standaard 1)."
              }
            }
          },
          "extract_sinks": {
            "name": "Sinks extraheren",
            "description": "Extraheert sinks (maximale depressie-extent) uit een DEM (lidar filling.py).",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoer-DEM-rasterbestand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad van het puttenraster. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "min_size": {
                "label": "Minimale grootte",
                "description": "Minimaal aantal pixels voor een put (wordt behouden als het strikt groter is; standaard 10)."
              },
              "region_output": {
                "label": "Regio-uitvoer",
                "description": "Optioneel uitvoerpad voor het raster met gelabelde regio's."
              },
              "depth_output": {
                "label": "Diepte-uitvoer",
                "description": "Optioneel uitvoerpad voor het raster met de vuldiepte."
              },
              "filled_output": {
                "label": "Gevulde uitvoer",
                "description": "Optioneel uitvoerpad voor het DEM met opgevulde depressies."
              },
              "csv_output": {
                "label": "CSV-uitvoer",
                "description": "Optioneel uitvoerpad voor de CSV met attributen per regio."
              },
              "vector_output": {
                "label": "Vectoruitvoer",
                "description": "Optioneel uitvoerpad voor de regiopolygonen als GeoJSON (met gekoppelde attributen)."
              },
              "flat_increment": {
                "label": "Vlakte-increment",
                "description": "Vlak increment dat tijdens het opvullen wordt toegevoegd om afwatering af te dwingen (standaard 0)."
              }
            }
          },
          "extract_spectra_from_image": {
            "name": "Spectra extraheren uit beeld",
            "description": "Leidt een spectrale bibliotheek af uit een multibandbeeld en trainingsregio's, één spectrum per klasse, in de CSV-indeling die spectral_library_matching leest (ArcGIS Extract Spectra From Image). spectral_library_matching, spectral_angle_mapper en matched_filter_target_detection gebruiken allemaal een bibliotheek en niets maakte er een, zodat de spectrale suite alleen kon worden gebruikt met reeds bestaande gepubliceerde bibliotheken.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Multiband-beeld."
              },
              "training_features": {
                "label": "Trainingsobjecten",
                "description": "Polygoon- of puntlaag die elke klasse of elk doel afbakent."
              },
              "class_field": {
                "label": "Klasseveld",
                "description": "Attribuut dat het klasselabel bevat. Objecten met hetzelfde label worden tot één spectrum samengevoegd."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de CSV met de spectrale bibliotheek ('name,b1,b2,...' per klasse), gereed voor de 'library_csv' van spectral_library_matching."
              },
              "statistic": {
                "label": "Statistiek",
                "description": "Reductie over de bedekte cellen: 'mean' (standaard), 'median', 'max', 'min'."
              },
              "trim_percent": {
                "label": "Trimpercentage",
                "description": "Percentage dat per band aan elke staart wordt weggelaten vóór het reduceren, om gemengde randpixels te onderdrukken (standaard 0, maximaal 49)."
              },
              "min_cells": {
                "label": "Minimaal aantal cellen",
                "description": "Klassen die minder cellen bedekken dan deze waarde worden gerapporteerd en overgeslagen in plaats van een 'spectrum' van één pixel te leveren (standaard 1)."
              },
              "wavelengths": {
                "label": "Golflengten",
                "description": "Optionele, door komma's gescheiden golflengten per band, die als commentaarkop in de bibliotheek en in output_stats worden vastgelegd."
              },
              "output_stats": {
                "label": "Statistieken uitvoeren",
                "description": "Optionele CSV die de standaardafwijking en het aantal cellen per klasse en per band ontvangt. Wordt apart gehouden zodat de bibliotheek parseerbaar blijft."
              }
            }
          },
          "extract_water_sar": {
            "name": "Water extraheren (SAR)",
            "description": "Bakent open water en overstromingsextent af uit SAR-terugverstrooiing met een Otsu-drempelwaarde per scène op decibels, plus optionele DEM-hellings- en hoogte-boven-minimumfilters die radarschaduw en droge donkere oppervlakken afwijzen (ArcGIS Extract Water). Geen van beide registers kan dit vanuit radar: de NDWI/MNDWI van spectral_index hebben groene/NIR/SWIR-reflectantiebanden nodig die een SAR niet heeft, depth_to_water modelleert waar water zou moeten zijn op basis van terrein in plaats van het waar te nemen, en een handmatig ingestelde raster_calculator-drempel is niet overdraagbaar tussen scènes omdat de water-/landscheiding verschuift met wind en invalshoek.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "SAR-terugstrooiingsraster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerlaag met waterpolygonen. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "output_raster": {
                "label": "Uitvoerraster",
                "description": "Binair uitvoermasker voor water (1 water, 0 land). Wordt altijd gemaakt; wordt in het geheugen opgeslagen wanneer geen pad is opgegeven."
              },
              "dem": {
                "label": "DEM",
                "description": "Optioneel DEM, gecoregistreerd met de invoer, dat de hellings- en hoogtefilters mogelijk maakt."
              },
              "threshold_db": {
                "label": "Drempel (dB)",
                "description": "Vaste drempelwaarde in dB; cellen op of onder deze waarde zijn water. Heeft voorrang op de automatische Otsu-drempelwaarde."
              },
              "min_area": {
                "label": "Minimale oppervlakte",
                "description": "Verwerpt waterlichamen die kleiner zijn dan deze oppervlakte in vierkante kaarteenheden."
              },
              "max_slope": {
                "label": "Maximale helling",
                "description": "Verwerpt met een DEM water op terrein dat steiler is dan dit aantal graden (standaard 5). Stilstaand water kan geen steile helling bezetten, maar radarschaduw daar is even donker."
              },
              "max_height_above_min": {
                "label": "Maximale hoogte boven minimum",
                "description": "Verwerpt met een DEM kandidaatcellen die meer dan dit aantal z-eenheden boven de laagste DEM-cel in hun eigen samenhangende regio liggen."
              },
              "mask_features": {
                "label": "Maskerobjecten",
                "description": "Polygoonlaag die het analysegebied beperkt."
              },
              "mask_type": {
                "label": "Maskertype",
                "description": "'land_polygon' (standaard; analyseert buiten de polygonen) of 'water_polygon' (analyseert erbinnen)."
              },
              "histogram_bins": {
                "label": "Histogramklassen",
                "description": "Aantal bins voor het Otsu-histogram (standaard 256)."
              },
              "input_units": {
                "label": "Invoereenheden",
                "description": "'intensity' (standaard), 'dn', 'amplitude' of 'db'."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band waarop de drempelwaarde wordt toegepast (standaard 1)."
              }
            }
          },
          "extrude_between": {
            "name": "Extruderen tussen",
            "description": "Bouwt waterdichte gesloten volumes die de ruimte tussen twee oppervlakken binnen elke invoerpolygoon overspannen, met exacte volumes per object (ArcGIS Extrude Between). cut_fill geeft de volumeverandering per cel tussen twee rasters, maar levert een raster, kan niet tot omtrekken worden beperkt en draagt geen attributen; buffer_3d en minimum_bounding_volume bouwen volumes uit objecten in plaats van uit een oppervlakpaar. De uitvoer gaat rechtstreeks naar union_3d, intersect_3d, difference_3d en inside_3d.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Polygoongrondvlakken die de laterale omvang van elk vast lichaam bepalen. Alleen de EERSTE ring van het eerste deel wordt gebruikt: interne gaten en extra delen van een MultiPolygon worden genegeerd, dus splits meerdelige grondvlakken vooraf op en vul de gaten vóór het extruderen."
              },
              "surface_upper": {
                "label": "Bovenoppervlak",
                "description": "Bovenste begrenzende oppervlakteraster."
              },
              "surface_lower": {
                "label": "Onderoppervlak",
                "description": "Onderste begrenzende oppervlakteraster, gecoregistreerd met het bovenste."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Gesloten objecten als vast lichaam (MultiPolygons als driehoeksmesh met Z). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "sample_distance": {
                "label": "Bemonsteringsafstand",
                "description": "Afstand voor de bemonstering van het grondvlak en de verdichting van de begrenzing, in CRS-eenheden. Standaard: de fijnste celgrootte van de oppervlakken."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die uit elk oppervlakteraster wordt gelezen (standaard 1)."
              }
            }
          },
          "feature_outline_masks": {
            "name": "Objectomtrekmaskers",
            "description": "Genereert cartografische maskerpolygonen met een marge rond objecten (exacte omtrek, convexe omhullende of omsluitende rechthoek), optioneel uitgesneden op een tweede laag (Intersecting Layers Masks).",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag (elke geometrie), formaat automatisch gedetecteerd (of een handle in het geheugen)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de vector (driver op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "margin": {
                "label": "Marge",
                "description": "Marge-afstand van het masker. Meters voor een geografisch CRS (EPSG:4326 of onbekend, omgerekend naar graden), anders in de CRS-eenheden van de laag. Moet positief zijn."
              },
              "mask_kind": {
                "label": "Maskersoort",
                "description": "Vorm van het masker: 'exact' (standaard, de gebufferde omtrek van het object), 'convex_hull' (verwijde convexe omhullende) of 'box' (omhullende rechthoek + marge)."
              },
              "masked_layer": {
                "label": "Gemaskeerde laag",
                "description": "Optionele tweede polygoonlaag. Indien opgegeven, worden maskers uitgesneden op hun doorsnede daarmee (Intersecting Layers Masks); niet-overlappende maskers worden weggelaten."
              },
              "id_field": {
                "label": "ID-veld",
                "description": "Optioneel bronveld waarvan de waarde als 'source_id' naar elk masker wordt gekopieerd. Standaard de objectindex van de bron."
              }
            }
          },
          "feature_to_line": {
            "name": "Object naar lijn",
            "description": "Planariseert lijn-/polygoongrensobjecten tot geknoopte, niet-overlappende lijnsegmenten die bij elke onderlinge en zelfkruising worden gesplitst, zoals ArcGIS Feature To Line — de topologie-opbouwende voorloper die de meegeleverde polygons_to_lines en split_vector_lines niet bieden.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met lijnen of polygonen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de lijnvector (driver uit de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "cluster_tolerance": {
                "label": "Clustertolerantie",
                "description": "Snapt splitsingspunten naar een rooster met deze kaarteenheid om vrijwel samenvallende knooppunten samen te voegen (standaard 1e-9)."
              },
              "attributes": {
                "label": "Attributen",
                "description": "Indien true (standaard) krijgt elk uitvoersegment de aanduiding 'src_fid', de object-ID van de bron."
              }
            }
          },
          "feature_vertices_to_points": {
            "name": "Objecthoekpunten naar punten",
            "description": "Maakt een puntlaag uit geselecteerde objecthoekpunten — ALL, START, END, BOTH_ENDS, MID (middelpunt op booglengte) of DANGLE (niet-gedeelde lijneindpunten) — met een veld voor de bovenliggende FID, zoals ArcGIS Feature Vertices To Points.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met lijnen, polygonen of punten."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de puntvector (driver uit de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "point_location": {
                "label": "Puntlocatie",
                "description": "Welke hoekpunten worden geëxtraheerd: ALL | START | END | BOTH_ENDS | MID | DANGLE. Standaard ALL."
              }
            }
          },
          "features_to_gpx": {
            "name": "Objecten naar GPX",
            "description": "Schrijft puntobjecten als GPX-waypoints en lijnobjecten als GPX-tracks, waarbij attribuutvelden worden toegewezen aan naam/beschrijving/hoogte/tijd.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Te exporteren vectorlaag met punten of lijnen (er wordt WGS84 / EPSG:4326 aangenomen)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Pad van het uitvoerbestand .gpx."
              },
              "name_field": {
                "label": "Naamveld",
                "description": "Attribuutveld dat op het GPX-element <name> wordt afgebeeld (optioneel)."
              },
              "description_field": {
                "label": "Beschrijvingsveld",
                "description": "Attribuutveld dat op het GPX-element <desc> wordt afgebeeld (optioneel)."
              },
              "z_field": {
                "label": "Z-veld",
                "description": "Attribuutveld dat op de GPX-hoogte <ele> wordt afgebeeld (optioneel; valt terug op een Z uit de geometrie indien aanwezig)."
              },
              "date_field": {
                "label": "Datumveld",
                "description": "Attribuutveld dat op het GPX-tijdstempel <time> wordt afgebeeld, een ISO-8601-tekenreeks (optioneel)."
              }
            }
          },
          "features_to_gtfs": {
            "name": "Objecten naar GTFS",
            "description": "Exporteert puntobjecten naar GTFS stops.txt en lijnobjecten naar GTFS shapes.txt, waarmee de GTFS-rondgang wordt gesloten.",
            "params": {
              "stops_input": {
                "label": "Invoer haltes",
                "description": "Vectorlaag met punten die als stops.txt wordt weggeschreven (gebruikt de attribuutvelden stop_id/stop_name indien aanwezig)."
              },
              "shapes_input": {
                "label": "Invoer shapes",
                "description": "Vectorlaag met lijnen die als shapes.txt wordt weggeschreven (gebruikt een attribuutveld shape_id indien aanwezig)."
              },
              "output_dir": {
                "label": "Uitvoermap",
                "description": "Map waarin de GTFS-tekstbestanden (stops.txt / shapes.txt) worden weggeschreven. Wordt aangemaakt als deze ontbreekt."
              }
            }
          },
          "features_to_kml": {
            "name": "Objecten naar KML",
            "description": "Schrijft een vectorlaag naar een KML 2.2-document (of een gezipte KMZ), met attributen als ExtendedData en een optionele gedeelde stijl (ArcGIS Layer To KML / Map To KML). kml_to_features kon KML al lezen, maar niets schreef het, anders dan de symmetrische GPX-, GTFS- en GeoParquet-paren.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag. Moet in EPSG:4326 lon/lat zijn, het enige CRS dat KML definieert."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Pad van het uitvoerbestand .kml of .kmz."
              },
              "name_field": {
                "label": "Naamveld",
                "description": "Attribuut dat wordt gebruikt voor de <name> van elke Placemark."
              },
              "description_field": {
                "label": "Beschrijvingsveld",
                "description": "Attribuut dat wordt gebruikt voor <description>. Indien weggelaten, worden alle attributen als <ExtendedData> weggeschreven."
              },
              "z_field": {
                "label": "Z-veld",
                "description": "Attribuut dat een hoogte levert, die als derde coördinaat wordt weggeschreven."
              },
              "altitude_mode": {
                "label": "Hoogtemodus",
                "description": "'clampToGround' (standaard), 'relativeToGround' of 'absolute'."
              },
              "color": {
                "label": "Kleur",
                "description": "Lijn-/omtrekkleur als KML-hex aabbggrr (bijv. 'ff0000ff' voor dekkend rood)."
              },
              "line_width": {
                "label": "Lijnbreedte",
                "description": "Lijnbreedte in pixels (standaard 1.0)."
              },
              "fill_color": {
                "label": "Vulkleur",
                "description": "Vulkleur van polygonen als KML-hex aabbggrr. Laat dit weg voor geen vulling."
              }
            }
          },
          "fence_diagram": {
            "name": "Hekdiagram",
            "description": "Genereert 3D-verticale doorsnedepanelen waar een lijntracé een stapel oppervlakken kruist — de standaardmanier om ondergrondse stratigrafie of atmosferische gelaagdheid te visualiseren (ArcGIS Fence Diagram). profile, long_profile en stack_profile bemonsteren oppervlakken langs een lijn, maar geven 2D-profiellijnen of tabellen terug, zonder geometrie voor de ruimte TUSSEN opeenvolgende oppervlakken, en voxel_isosurface extraheert een niveau-oppervlak uit een volume in plaats van een doorsnede.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Lijnobjecten die het tracé van de doorsnede bepalen."
              },
              "surfaces": {
                "label": "Oppervlakken",
                "description": "Door komma's gescheiden lijst van gecoregistreerde oppervlakterasters, geordend van BOVEN naar BENEDEN."
              },
              "output": {
                "label": "Uitvoer",
                "description": "3D-doorsnedepanelen, één per tracé per oppervlaktepaar. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "sample_distance": {
                "label": "Bemonsteringsafstand",
                "description": "Bemonsteringsafstand langs het tracé in CRS-eenheden. Standaard: de fijnste celgrootte van de oppervlakken."
              },
              "floor_height": {
                "label": "Vloerhoogte",
                "description": "Optionele constante ondergrens: een kunstmatig ondervlak op deze hoogte, dat het diepste paneel afsluit."
              },
              "ceiling_height": {
                "label": "Plafondhoogte",
                "description": "Optionele constante bovengrens: een kunstmatig bovenvlak op deze hoogte."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die uit elk oppervlakteraster wordt gelezen (standaard 1)."
              }
            }
          },
          "fill_missing_values": {
            "name": "Ontbrekende waarden opvullen",
            "description": "Schat en vult null-waarden in een numeriek attribuutveld met behulp van ruimtelijke buren (k naaste of een afstandsband), optioneel beperkt tot een tijdvenster, met een selecteerbare schatter (mean/median/min/max/temporal_trend). Geïmputeerde rijen worden gemarkeerd met een vlagveld (ArcGIS Fill Missing Values).",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met het in te vullen veld."
              },
              "fill_field": {
                "label": "Vulveld",
                "description": "Numeriek veld waarvan de nulwaarden worden geschat en ingevuld."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorpad (stuurprogramma op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "estimator": {
                "label": "Schatter",
                "description": "Hoe buurwaarden worden gecombineerd: 'mean' (standaard), 'median', 'min', 'max' of 'temporal_trend' (kleinste kwadraten over de tijd; vereist time_field)."
              },
              "neighbourhood": {
                "label": "Omgeving",
                "description": "Ruimtelijke selectie: 'knn' (standaard, k dichtstbijzijnde) of 'distance_band' (alle binnen search_radius)."
              },
              "k": {
                "label": "K",
                "description": "Aantal dichtstbijzijnde buren voor 'knn' (standaard 8)."
              },
              "search_radius": {
                "label": "Zoekstraal",
                "description": "Straal (CRS-eenheden) voor de selectie 'distance_band'."
              },
              "time_field": {
                "label": "Tijdveld",
                "description": "Optioneel numeriek veld dat de tijd/volgorde van elk object geeft (vereist voor 'temporal_trend')."
              },
              "time_window": {
                "label": "Tijdvenster",
                "description": "Optioneel: beperkt de buren tot die binnen deze tijdsafstand van het doel (vereist time_field)."
              },
              "flag_field": {
                "label": "Vlagveld",
                "description": "Naam van het booleaanse veld dat geïmputeerde rijen markeert (standaard 'imputed')."
              }
            }
          },
          "fill_spill_merge": {
            "name": "Fill-Spill-Merge",
            "description": "Routeert een eindig volume oppervlaktewater over een DEM om realistische meer-/inundatie-extents te produceren (gedeeltelijke depressievulling met overloop en samenvoeging), een herimplementatie van Fill-Spill-Merge van RichDEM.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster (hoogtes)."
              },
              "water_level": {
                "label": "Waterpeil",
                "description": "Uniforme waterdiepte aan het oppervlak die op elke cel wordt toegepast. Geef deze of 'surface_water' op."
              },
              "surface_water": {
                "label": "Oppervlaktewater",
                "description": "Raster met de waterdiepte aan het oppervlak per cel (uitgelijnd op het DEM). Heeft voorrang op 'water_level' waar beide zijn opgegeven."
              },
              "ocean_level": {
                "label": "Zeeniveau",
                "description": "Optioneel zeeniveau: cellen op of onder deze hoogte die met de rasterrand in verbinding staan worden oceaan (basislijn voor kustoverstroming)."
              },
              "edge_outlet": {
                "label": "Randuitlaat",
                "description": "Behandelt elke cel op de rasterrand als een vrije uitlaat (standaard true). Water dat de rand bereikt verlaat het DEM."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad van het raster met de diepte van stilstaand water. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "water_surface": {
                "label": "Wateroppervlak",
                "description": "Optioneel uitvoerpad voor het hydraulische oppervlak (DEM + waterdiepte)."
              },
              "flood_extent": {
                "label": "Overstromingsextent",
                "description": "Optioneel uitvoerpad voor een masker met de overstromingsomvang (1 waar stilstaand water aanwezig is, anders 0)."
              }
            }
          },
          "find_argument_statistics": {
            "name": "Argumentstatistieken vinden",
            "description": "Argumentstatistieken per pixel over een rasterstapel (zoals ArcGIS Find Argument Statistics): de plakindex (of datum) van het max/min, de mediaanpositie, het aantal plakken boven een drempelwaarde (duur) of de langste aaneengesloten reeks — de argumentpositie-antwoorden die de meegeleverde celstatistieken en de waarde-aggregaten van image_stack_profile niet kunnen geven.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Eén multiband-raster (elke band is een doorsnede) of een door komma's gescheiden lijst van gecoregistreerde rasters, in chronologische volgorde."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Enkelbandig uitvoerraster met doorsnede-indices / datums / aantallen. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "statistic": {
                "label": "Statistiek",
                "description": "'argmax' (standaard), 'argmin', 'median_position', 'duration' of 'longest_run'."
              },
              "threshold": {
                "label": "Drempelwaarde",
                "description": "Numerieke drempelwaarde voor 'duration'/'longest_run' (vereist voor die opties)."
              },
              "comparison": {
                "label": "Vergelijking",
                "description": "Vergelijking voor 'duration'/'longest_run': '>' (standaard), '>=', '<' of '<='."
              },
              "dates": {
                "label": "Datums",
                "description": "Optionele, door komma's gescheiden numerieke datums (bijv. dag van het jaar) per doorsnede; argmax/argmin/median leveren de bijbehorende datum in plaats van de doorsnede-index."
              },
              "min_valid": {
                "label": "Minimaal aantal geldige",
                "description": "Minimaal aantal waarnemingen zonder no-data per pixel (standaard 1)."
              }
            }
          },
          "find_dwell_locations": {
            "name": "Verblijflocaties vinden",
            "description": "Detecteert waar een bewegende entiteit stil bleef: reeksen trackfixes binnen een afstandstolerantie gedurende ten minste een tijdtolerantie, uitgevoerd als fixes, gemiddelde centra of convexe omhullenden, zoals ArcGIS Find Dwell Locations.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Puntobjecten met tijdstempels (spoormetingen)."
              },
              "track_field": {
                "label": "Trackveld",
                "description": "Veld dat aangeeft bij welk spoor elke meting hoort."
              },
              "time_field": {
                "label": "Tijdveld",
                "description": "Tijdstempelveld (numerieke seconden of ISO-8601-tekst)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              },
              "distance_tolerance": {
                "label": "Afstandstolerantie",
                "description": "Maximale afstand (kaarteenheden) waarop een meting van het lopende zwaartepunt van het verblijf mag liggen."
              },
              "time_tolerance": {
                "label": "Tijdtolerantie",
                "description": "Minimale duur (dezelfde eenheden als time_field) waarin een reeks stilstaande metingen als verblijf telt."
              },
              "output_type": {
                "label": "Uitvoertype",
                "description": "dwell_features (standaard) | mean_centers | convex_hulls | all_features."
              }
            }
          },
          "find_identical": {
            "name": "Identieke vinden",
            "description": "Vindt objecten die identiek zijn qua geometrie en/of gekozen velden en groepeert duplicaten; 'report' voegt kolommen dup_group/dup_seq toe, 'delete' behoudt alleen het eerste van elke groep, zoals ArcGIS Find Identical / Delete Identical.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Te ontdubbelen invoervectorlaag."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorpad (stuurprogramma op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "fields": {
                "label": "Velden",
                "description": "Door komma's gescheiden velden die worden vergeleken. Laat dit weg om alleen de geometrie te vergelijken; combineer met 'compare_geometry'."
              },
              "compare_geometry": {
                "label": "Geometrie vergelijken",
                "description": "Of de geometrie deel uitmaakt van de identiteitstoets (standaard true; zet op false om alleen velden te vergelijken)."
              },
              "xy_tolerance": {
                "label": "XY-tolerantie",
                "description": "Snaptolerantie voor de geometrievergelijking (hoekpunten worden vóór het hashen op dit rooster afgerond). Standaard 0 (exact)."
              },
              "mode": {
                "label": "Modus",
                "description": "'report' (standaard; voegt dup_group/dup_seq toe) of 'delete' (behoudt het eerste object van elke groep)."
              }
            }
          },
          "find_meeting_locations": {
            "name": "Ontmoetingslocaties vinden",
            "description": "Detecteert bijeenkomsten waarbij meerdere afzonderlijke tracks gedurende ten minste een minimale duur binnen een afstand van elkaar zijn (zoals ArcGIS Find Meeting Locations) — het N-track-samenvallen dat de zelfgeschreven trace_proximity_events (paarsgewijs) en reconstruct_tracks (verblijf van één track) niet dekken. Geeft gebiedsomhullenden en representatieve punten met aantal deelnemers, begin-/eindtijd en duur.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Puntlaag met spoorpunten met tijdstempels (geprojecteerd CRS; afstanden in kaarteenheden)."
              },
              "track_field": {
                "label": "Trackveld",
                "description": "Veld dat elk spoor / elke entiteit identificeert."
              },
              "time_field": {
                "label": "Tijdveld",
                "description": "Veld dat de tijd van elk punt bevat: numerieke seconden of een ISO-8601-tijdstempel."
              },
              "search_distance": {
                "label": "Zoekafstand",
                "description": "Maximale afstand (kaarteenheden) waarbij sporen als samen gelden."
              },
              "min_meeting_duration": {
                "label": "Minimale ontmoetingsduur",
                "description": "Minimale duur (tijdseenheden) die een samenkomst moet aanhouden om te worden gerapporteerd."
              },
              "max_meeting_duration": {
                "label": "Maximale ontmoetingsduur",
                "description": "Optionele maximale duur; langere samenkomsten worden weggelaten."
              },
              "min_participants": {
                "label": "Minimaal aantal deelnemers",
                "description": "Minimaal aantal verschillende sporen in een samenkomst (standaard 2)."
              },
              "time_step": {
                "label": "Tijdstap",
                "description": "Breedte van een tijddoorsnede (tijdseenheden). Standaard: min_meeting_duration."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerlaag met representatieve punten (één punt per samenkomst). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "output_area": {
                "label": "Oppervlakte uitvoeren",
                "description": "Optionele uitvoerlaag met gebieden (één convexe-omhullendepolygoon per samenkomst). Indien weggelaten, wordt het in het geheugen opgeslagen."
              }
            }
          },
          "find_space_time_matches": {
            "name": "Ruimte-tijd-overeenkomsten vinden",
            "description": "Matcht objecten tussen twee puntlagen met tijdstempel die binnen een ruimtelijke zoekafstand EN een tijdvenster van elkaar liggen (ervoor/erna/beide), en geeft gematchte paren met afstand en tijdsverschil, zoals ArcGIS Find Space Time Matches.",
            "params": {
              "primary": {
                "label": "Primair",
                "description": "Primaire puntlaag (elk object wordt tegen de secundaire laag gematcht)."
              },
              "secondary": {
                "label": "Secundair",
                "description": "Secundaire puntlaag waartegen wordt gematcht."
              },
              "time_field": {
                "label": "Tijdveld",
                "description": "Tijdstempelveld dat in BEIDE lagen aanwezig is (numeriek of ISO-8601)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerlaag met overeenkomsten (één verbindingslijn per gematcht paar). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "search_distance": {
                "label": "Zoekafstand",
                "description": "Maximale ruimtelijke afstand tussen een primair en een secundair object (kaarteenheden)."
              },
              "time_window": {
                "label": "Tijdvenster",
                "description": "Maximaal tijdsverschil: een aantal seconden of een duur zoals '2h', '30m', '7d'."
              },
              "temporal_relationship": {
                "label": "Temporele relatie",
                "description": "'either' (standaard), 'before' (secundair vóór primair) of 'after' (secundair na primair)."
              },
              "primary_id_field": {
                "label": "Primair ID-veld",
                "description": "Veld dat elk primair object in de uitvoer benoemt (standaard: de objectindex)."
              },
              "secondary_id_field": {
                "label": "Secundair ID-veld",
                "description": "Veld dat elk secundair object in de uitvoer benoemt (standaard: de objectindex)."
              }
            }
          },
          "fit_variogram": {
            "name": "Variogrammodel fitten",
            "description": "Fit een theoretisch variogrammodel (sferisch, exponentieel, gaussiaans) op empirische semivariogramgegevens voor gebruik bij kriging.",
            "params": {
              "lags_json": {
                "label": "Lags-JSON",
                "description": "JSON-array met lagbins uit estimate_variogram"
              },
              "model_family": {
                "label": "Modelfamilie",
                "description": "Model: spherical, exponential of gaussian"
              }
            }
          },
          "flatten_interferogram": {
            "name": "Interferogram afvlakken",
            "description": "Verwijdert de topografische fasecomponent uit een gewikkeld interferogram met behulp van een DEM en de interferometrische basislijn, zodat het deformatie- en atmosfeersignaal overblijft (de TOPO-afvlakmodus van ArcGIS Generate Interferogram). sar_coherence geeft het interferogram zelf al via output_phase, maar niets in beide registers kan de topografische fase simuleren en aftrekken — en boven elk reliëf domineert die component, zodat een niet-afgevlakt interferogram onbruikbaar is voor deformatiewerk.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Raster met de gewikkelde interferometrische fase in radialen (zoals de output_phase van sar_coherence levert), of een tweebands I/Q-interferogram."
              },
              "dem": {
                "label": "DEM",
                "description": "Gecoregistreerd hoogteraster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Vlakgemaakt raster met gewikkelde fase, opnieuw gewikkeld naar (-pi, pi]. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "perpendicular_baseline": {
                "label": "Loodrechte basislijn",
                "description": "Loodrechte basislijn B_perp in meters. Vereist: deze bepaalt de gevoeligheid van fase voor hoogte, en er is geen verdedigbare standaardwaarde."
              },
              "wavelength": {
                "label": "Golflengte",
                "description": "Radargolflengte in meters (standaard 0.05546576, Sentinel-1 C-band)."
              },
              "incidence_angle": {
                "label": "Invalshoek",
                "description": "Invalshoek in graden: een constante (standaard 39.0, typisch voor Sentinel-1 IW midden in de strook) of het pad van een gecoregistreerd raster."
              },
              "slant_range": {
                "label": "Schuine afstand",
                "description": "Schuine afstand R van sensor tot grond in meters (standaard 800000)."
              },
              "reference_elevation": {
                "label": "Referentiehoogte",
                "description": "Hoogte die als nul topografische fase wordt behandeld. Standaard: het gemiddelde van het DEM, zodat de uitvoer geen willekeurige globale verschuiving bevat."
              },
              "out_topographic_phase": {
                "label": "Uitvoer topografische fase",
                "description": "Raster met de gesimuleerde topografische fase, GEWIKKELD naar (-pi, pi] net als de vlakgemaakte uitvoer — niet de absolute gesimuleerde fase. Wordt altijd gemaakt; valt terug op een handle in het geheugen wanneer geen pad is opgegeven."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die de fase bevat. Laat deze weg voor een enkelbandig faseraster of een tweebands I/Q-interferogram (dat dan automatisch wordt gedetecteerd); geef deze op om de reële fase uit een specifieke band van een multiband-stapel te lezen. Een raster met meer dan twee banden VEREIST deze parameter, omdat drie of meer banden geen I/Q-paar vormen en gokken een plausibele maar onjuiste fase zou opleveren."
              }
            }
          },
          "flip_line": {
            "name": "Lijn omkeren",
            "description": "Keert de hoekpuntvolgorde (begin↔einde) van polylijnobjecten om om hun digitaliseerrichting om te draaien.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerlijnvectorbestand, formaat automatisch gedetecteerd (of een handle in het geheugen)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de vector (driver op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              }
            }
          },
          "focal_flow": {
            "name": "Focale stroming",
            "description": "Codeert welke van de acht buren van een cel erin stromen als een 8-bits masker (ArcGIS Focal Flow). Anders dan de meegeleverde D8-/D-infinity-accumulatietools, die elke cel hellingafwaarts langs één richting routeren, registreert dit elke instromende buur — waarmee convergentie in putten, sinks en zadels wordt vastgelegd. Bitgewichten lopen tegen de klok in vanaf het oosten (1, 2, 4, 8, 16, 32, 64, 128); 0 is een lokaal hoogtepunt, 255 een put.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoeroppervlakteraster (hoogte of een willekeurig continu oppervlak)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              },
              "threshold": {
                "label": "Drempelwaarde",
                "description": "Een buur telt alleen als instromend wanneer deze de middencel met meer dan deze waarde overtreft (standaard 0)."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die wordt gelezen (standaard 1)."
              }
            }
          },
          "focal_statistics": {
            "name": "Focale statistieken",
            "description": "Omgevingsstatistieken met bewegend venster (rechthoek/cirkel/ring/wig; numeriek en categorisch).",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              },
              "statistics": {
                "label": "Statistieken",
                "description": "Statistiek: mean, majority, maximum, median, minimum, minority, percentile, range, std, sum of variety (standaard mean)."
              },
              "neighborhood": {
                "label": "Omgeving",
                "description": "Vorm van de omgeving: rectangle, circle, annulus of wedge (standaard rectangle)."
              },
              "width": {
                "label": "Breedte",
                "description": "Breedte van de rechthoek in cellen (standaard 3)."
              },
              "height": {
                "label": "Hoogte",
                "description": "Hoogte van de rechthoek in cellen (standaard 3)."
              },
              "radius": {
                "label": "Straal",
                "description": "Straal in cellen voor circle / wedge, en de buitenstraal voor annulus (standaard 1)."
              },
              "inner_radius": {
                "label": "Binnenstraal",
                "description": "Binnenstraal in cellen voor de omgeving annulus (standaard 0)."
              },
              "start_angle": {
                "label": "Beginhoek",
                "description": "Beginhoek van de wig in graden (0 = oost, tegen de klok in; standaard 0)."
              },
              "end_angle": {
                "label": "Eindhoek",
                "description": "Eindhoek van de wig in graden (0 = oost, tegen de klok in; standaard 90)."
              },
              "percentile_value": {
                "label": "Percentielwaarde",
                "description": "Percentiel in [0, 100] voor de statistiek percentile (standaard 90)."
              },
              "ignore_nodata": {
                "label": "NoData negeren",
                "description": "Indien true (standaard) wordt alleen over geldige cellen gereduceerd; indien false levert elke no-data-cel in het venster no-data op."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die wordt verwerkt (standaard 1)."
              }
            }
          },
          "forest_based_forecast": {
            "name": "Forest-based voorspelling",
            "description": "Voorspelt een waarde vooruit op elke locatie met een random forest getraind op schuivende lagvensters van de eigen geschiedenis van die locatie, zoals ArcGIS Forest-based Forecast.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Objecten met tijdstempels die een locatie-ID, een tijdveld en een waardeveld dragen."
              },
              "location_field": {
                "label": "Locatieveld",
                "description": "Veld dat aangeeft bij welke locatie elke waarneming hoort."
              },
              "time_field": {
                "label": "Tijdveld",
                "description": "Numeriek tijdveld dat de reeks van elke locatie ordent."
              },
              "value_field": {
                "label": "Waardeveld",
                "description": "Te voorspellen numeriek veld."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de voorspellingstabel. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "forecast_steps": {
                "label": "Voorspellingsstappen",
                "description": "Aantal stappen dat vooruit wordt voorspeld (standaard 3)."
              },
              "time_window": {
                "label": "Tijdvenster",
                "description": "Aantal voorgaande waarden dat als voorspeller wordt gebruikt (standaard: een kwart van de lengte van de reeks, minimaal 2)."
              },
              "validation_steps": {
                "label": "Validatiestappen",
                "description": "Aantal afsluitende stappen dat wordt achtergehouden om de RMSE te scoren (standaard 0, geen validatie)."
              },
              "n_trees": {
                "label": "Aantal bomen",
                "description": "Aantal bomen in het forest (standaard 50, maximaal 500)."
              },
              "min_leaf_size": {
                "label": "Minimale bladgrootte",
                "description": "Minimaal aantal trainingsrijen in een blad (standaard 2)."
              },
              "max_depth": {
                "label": "Maximale diepte",
                "description": "Maximale boomdiepte (standaard 8)."
              },
              "seed": {
                "label": "Seed",
                "description": "Zaad voor de deterministische RNG die het bootstrappen en de kenmerkselectie aanstuurt (standaard 42)."
              }
            }
          },
          "frequency_comparison": {
            "name": "Frequentievergelijking",
            "description": "Telt per cel hoeveel rasters in een stapel gelijk zijn aan / groter zijn dan / kleiner zijn dan de overeenkomstige cel van een referentiewaarderaster (ArcGIS Equal To Frequency, Greater Than Frequency en Less Than Frequency, plus de inclusieve en ontkende operatoren). Geen van beide registers kan een vergelijking over een stapel aggregeren: cell_statistics heeft geen referentie-invoer, raster_calculator drukt één vergelijking uit maar kan niet tellen over een stapel van willekeurige lengte, en conditional_evaluation is een selector met één voorwaarde.",
            "params": {
              "value_raster": {
                "label": "Waarderaster",
                "description": "Referentieraster waarmee elke laag van de stapel wordt vergeleken, gecoregistreerd met de invoeren. Een enkelbandige referentie wordt naar elke bandgroep uitgezonden; een multiband-referentie moet één band per groep hebben en schuift daarmee mee op."
              },
              "inputs": {
                "label": "Invoeren",
                "description": "Eén multiband-raster (elke band is een laag) of een door komma's gescheiden lijst van gecoregistreerde rasters."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerraster met de telling (0..n). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "comparison": {
                "label": "Vergelijking",
                "description": "'equal' (standaard), 'greater', 'less', 'greater_equal', 'less_equal' of 'not_equal'."
              },
              "tolerance": {
                "label": "Tolerantie",
                "description": "Absolute tolerantie voor 'equal'/'not_equal' bij drijvendekommagegevens (standaard 0 = exact)."
              },
              "ignore_nodata": {
                "label": "NoData negeren",
                "description": "Slaat no-data-waarnemingen per cel over (standaard true). Indien false maakt elke no-data-waarneming de cel no-data."
              },
              "process_as_multiband": {
                "label": "Als multiband verwerken",
                "description": "'single_band' (standaard): elke band van elke invoer vormt één laag van één stapel. 'multi_band': band i van elke invoer vormt een eigen stapel, wat een multiband-resultaat oplevert."
              }
            }
          },
          "fuzzy_overlay": {
            "name": "Fuzzy overlay",
            "description": "Herschaalt een raster naar een fuzzy-lidmaatschapsoppervlak van 0..1 (linear/gaussian/small/large/ms_small/ms_large), of combineert meerdere lidmaatschapsrasters met fuzzy AND/OR/PRODUCT/SUM/GAMMA, zoals ArcGIS Fuzzy Membership + Fuzzy Overlay.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Lidmaatschapsmodus: invoerraster dat naar een 0..1-oppervlak wordt getransformeerd."
              },
              "inputs": {
                "label": "Invoeren",
                "description": "Overlaymodus: door komma's gescheiden lijst van ≥2 lidmaatschapsrasters die worden gecombineerd. Heeft voorrang op 'input'."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              },
              "function": {
                "label": "Functie",
                "description": "Lidmaatschapsfunctie: 'linear' (standaard), 'gaussian', 'small', 'large', 'ms_small', 'ms_large'."
              },
              "overlay": {
                "label": "Overlay",
                "description": "Overlay-operator: 'and' (min, standaard), 'or' (max), 'product', 'sum', 'gamma'."
              },
              "midpoint": {
                "label": "Middelpunt",
                "description": "linear: de waarde die op 0.5 wordt afgebeeld wordt genegeerd (gebruik min/max); gaussian/small/large: het middelpunt van de functie; ms_small/ms_large: de vermenigvuldiger van het gemiddelde (standaard uit de bandstatistieken)."
              },
              "spread": {
                "label": "Spreiding",
                "description": "gaussian/small/large: spreiding (standaard 0.1 voor gaussian, 5 voor small/large); ms_small/ms_large: de vermenigvuldiger van de standaardafwijking (standaard 1)."
              },
              "min": {
                "label": "Min",
                "description": "linear: de waarde die op lidmaatschap 0 wordt afgebeeld (standaard het minimum van de band). Als min>max loopt de helling aflopend."
              },
              "max": {
                "label": "Max",
                "description": "linear: de waarde die op lidmaatschap 1 wordt afgebeeld (standaard het maximum van de band)."
              },
              "gamma": {
                "label": "Gamma",
                "description": "Exponent van de gamma-overlay in [0,1] (standaard 0.9)."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die in de lidmaatschapsmodus wordt getransformeerd (standaard 1)."
              }
            }
          },
          "gaussian_geostatistical_simulations": {
            "name": "Gaussiaanse geostatistische simulaties",
            "description": "Sequentiële gaussiaanse simulatie: N even waarschijnlijke conditionele realisaties van een veld die de steekproefgegevens respecteren (zoals ArcGIS Gaussian Geostatistical Simulations) — de conditionele multi-realisatie-uitvoer die de enkel-oppervlak empirical_bayesian_kriging / ordinary kriging en de onconditionele turning_bands_simulation niet bieden. Geseed en deterministisch.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerpuntlaag met de conditionerende waarden (geprojecteerd CRS)."
              },
              "value_field": {
                "label": "Waardeveld",
                "description": "Numeriek veld dat de te simuleren waarde bevat."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Multiband-uitvoerraster (één band per realisatie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "num_realizations": {
                "label": "Aantal realisaties",
                "description": "Aantal realisaties / uitvoerbanden (standaard 10)."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Uitvoercelgrootte in CRS-eenheden. Standaard: de langste zijde van de omvang / 100."
              },
              "variogram_model": {
                "label": "Variogrammodel",
                "description": "'exponential' (standaard), 'spherical' of 'gaussian'."
              },
              "nugget": {
                "label": "Nugget",
                "description": "Handmatige nugget; laat dit weg om deze uit de gegevens te fitten."
              },
              "sill": {
                "label": "Sill",
                "description": "Handmatige partiële sill; laat dit weg om deze uit de gegevens te fitten."
              },
              "range": {
                "label": "Bereik",
                "description": "Handmatige range; laat dit weg om deze uit de gegevens te fitten."
              },
              "max_neighbors": {
                "label": "Maximaal aantal buren",
                "description": "Maximaal aantal bekende punten dat per cel bij de kriging wordt gebruikt (standaard 16)."
              },
              "seed": {
                "label": "Seed",
                "description": "Zaad voor de deterministische RNG (standaard 1)."
              },
              "output_mean": {
                "label": "Gemiddelde uitvoeren",
                "description": "Optioneel rasterpad voor het gemiddelde van het ensemble."
              },
              "output_std": {
                "label": "Standaardafwijking uitvoeren",
                "description": "Optioneel rasterpad voor de standaardafwijking van het ensemble."
              }
            }
          },
          "generalized_linear_regression": {
            "name": "Gegeneraliseerde lineaire regressie",
            "description": "Globale regressie (gaussiaans/OLS, Poisson of logistisch) van een afhankelijk veld op verklarende velden via IRLS, met uitvoervelden voor gefitte waarden + residuen en volledige diagnostiek: coëfficiënt, standaardfout, t/z, waarschijnlijkheid en VIF per term, plus AICc, R²/deviantie en de gestudentiseerde Koenker-heteroskedasticiteitstoets (Breusch-Pagan) — zoals ArcGIS Generalized Linear Regression.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerobjectlaag (punten, of andere geometrieën — de geometrie wordt ongewijzigd doorgegeven)."
              },
              "dependent_field": {
                "label": "Afhankelijk veld",
                "description": "Afhankelijk (respons)veld, numeriek. Voor 'logistic' moet dit 0/1 zijn."
              },
              "explanatory_fields": {
                "label": "Verklarende velden",
                "description": "Door komma's gescheiden numeriek(e) verklarend(e) veld(en)."
              },
              "family": {
                "label": "Familie",
                "description": "Modelfamilie: 'gaussian' (OLS, standaard), 'poisson' (log-link, tellingen) of 'logistic' (logit-link, 0/1)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de vector (driver op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "report": {
                "label": "Rapport",
                "description": "Optioneel CSV-pad voor het rapport met coëfficiënten en modeldiagnostiek."
              }
            }
          },
          "generate_breach_lines": {
            "name": "Doorbraaklijnen genereren",
            "description": "Geeft op basis van depressiepolygonen en een DEM de polylijn waarlangs elke depressie zou worden doorbroken om af te wateren, met een criterium van minimale doorbraakkosten, kortste pad of minimale hoogteverandering, met snijdiepte en uitgegraven volume per doorbraak. Zoals ArcGIS Generate Breach Lines.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Depressiepolygonen (bijv. de uitvoer van delineate_depressions)."
              },
              "dem": {
                "label": "DEM",
                "description": "Oppervlakteraster waar de doorbraak doorheen wordt uitgesneden."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de doorbraaklijnen. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "connection_points": {
                "label": "Verbindingspunten",
                "description": "Optionele puntobjecten die beperken waar een doorbraak mag eindigen."
              },
              "method": {
                "label": "Methode",
                "description": "'minimum_breaching_cost' (standaard), 'shortest_path' of 'minimum_elevation_change'."
              },
              "max_length": {
                "label": "Maximale lengte",
                "description": "Laat doorbraken langer dan deze waarde (kaarteenheden) vallen; dergelijke depressies blijven ondoorbroken."
              }
            }
          },
          "generate_near_table": {
            "name": "Nabijheidstabel genereren",
            "description": "Geeft voor elk invoerobject de k dichtstbijzijnde (of alle binnen een zoekstraal) objecten van de nabijheidslaag met afstand, rang, optionele peilingshoek en nabijheids-XY — een nabijheidstabel met meerdere buren, zoals ArcGIS Generate Near Table.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag (punten, lijnen of polygonen) waarvan de nabijheid wordt gemeten."
              },
              "near_features": {
                "label": "Nabije objecten",
                "description": "Nabije vectorlaag waarin wordt gezocht (punten, lijnen of polygonen)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de puntvector (één Point per nabije overeenkomst). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "search_radius": {
                "label": "Zoekstraal",
                "description": "Behoudt alleen nabije objecten binnen deze afstand (kaarteenheden). Vereist wanneer closest_count = 0 (alle binnen de straal)."
              },
              "closest_count": {
                "label": "Aantal dichtstbijzijnde",
                "description": "Aantal dichtstbijzijnde nabije objecten per invoerobject (k, standaard 1). Gebruik 0 om elk nabij object binnen search_radius te retourneren."
              },
              "angle": {
                "label": "Hoek",
                "description": "Voegt NEAR_ANGLE toe (rekenkundige koershoek in graden, oost = 0, tegen de klok in). Standaard false."
              },
              "location": {
                "label": "Locatie",
                "description": "Voegt de kolommen NEAR_X / NEAR_Y toe voor de nabije locatie. Standaard false."
              }
            }
          },
          "generate_network_swm": {
            "name": "Netwerk-SWM genereren",
            "description": "Bouwt een ruimtelijke gewichtenmatrix waarin buren en gewichten afkomstig zijn van de reisafstand langs een lijnnetwerk in plaats van van rechtlijnige geometrie (ArcGIS Generate Network Spatial Weights). generate_spatial_weights_matrix biedt alleen euclidische en topologische conceptualisaties (knn, vaste afstandsband, inverse afstand, contiguïteit, Delaunay), zodat het voor netwerkgebonden fenomenen objecten verbindt die elkaar niet kunnen bereiken en elke verdere statistiek vertekent. De uitvoer gebruikt hetzelfde tabelschema, zodat global_morans_i, local_morans_i_lisa, getis_ord_gi_star en compare_spatial_weights het ongewijzigd kunnen gebruiken.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Te wegen puntobjecten."
              },
              "network": {
                "label": "Netwerk",
                "description": "Lijnnetwerk waarlangs de reisafstanden worden gemeten."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Gewichtstabel (CSV op basis van de extensie, of een vectortabel zonder geometrie), in hetzelfde origin/neighbor/weight-schema dat generate_spatial_weights_matrix levert. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "id_field": {
                "label": "ID-veld",
                "description": "Veld dat de unieke ID van elk object bevat. Standaard: de 0-gebaseerde objectindex, overeenkomstig generate_spatial_weights_matrix."
              },
              "impedance_field": {
                "label": "Impedantieveld",
                "description": "Kostenveld van het netwerk. Standaard: de geometrische lengte van elk segment."
              },
              "distance_cutoff": {
                "label": "Afstandsafkapwaarde",
                "description": "Maximale netwerkimpedantie waarop een buur mag liggen. Standaard: onbeperkt."
              },
              "max_neighbors": {
                "label": "Maximaal aantal buren",
                "description": "Bovengrens voor het aantal buren per oorsprong, waarbij de dichtstbijzijnde worden behouden. Standaard: onbeperkt."
              },
              "conceptualization": {
                "label": "Conceptualisatie",
                "description": "'fixed' (standaard, binair gewicht 1 binnen de afkapwaarde) of 'inverse' (gewicht = 1 / impedantie^exponent)."
              },
              "exponent": {
                "label": "Exponent",
                "description": "Afname-exponent voor 'inverse' (standaard 1)."
              },
              "row_standardization": {
                "label": "Rijstandaardisatie",
                "description": "Deelt de gewichten van elke oorsprong door hun rijsom, zodat elke oorsprong optelt tot 1. Standaard false, overeenkomstig generate_spatial_weights_matrix."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Afstand waarbinnen twee netwerkhoekpunten tot één knooppunt worden gelast, in CRS-eenheden (standaard 1e-6). Een netwerk waarvan de segmenten elkaar bijna raken zou anders stilzwijgend uiteenvallen, en elke betrokken oorsprong zou nul rijen leveren."
              },
              "search_tolerance": {
                "label": "Zoektolerantie",
                "description": "Maximale snapafstand van een punt tot het netwerk. Punten die verder weg liggen worden als niet-gesnapt gerapporteerd in plaats van stilzwijgend aan een ver knooppunt te worden gekoppeld."
              }
            }
          },
          "generate_od_links": {
            "name": "Herkomst-bestemmingslinks genereren",
            "description": "Tekent rechte verlangenslijnen van herkomstpunten naar bestemmingspunten — gematcht op een gedeelde id, binnen een afstand en/of naar de k dichtstbijzijnde — elk met herkomst-/bestemmings-id's en lengte, zoals ArcGIS Generate Origin-Destination Links.",
            "params": {
              "origins": {
                "label": "Herkomsten",
                "description": "Puntlaag met oorsprongen (Point of MultiPoint)."
              },
              "destinations": {
                "label": "Bestemmingen",
                "description": "Puntlaag met bestemmingen (Point of MultiPoint)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de lijnvector (driver uit de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "num_nearest": {
                "label": "Aantal dichtstbijzijnde",
                "description": "Behoudt alleen de k dichtstbijzijnde bestemmingen per oorsprong (na een eventueel ID-/afstandsfilter)."
              },
              "search_distance": {
                "label": "Zoekafstand",
                "description": "Behoudt alleen bestemmingen binnen deze afstand van de oorsprong (kaarteenheden)."
              },
              "id_field": {
                "label": "ID-veld",
                "description": "Veld dat in BEIDE lagen aanwezig is; koppelt alleen paren waarvan de waarden overeenkomen. Wordt ook weggeschreven als 'link_id'."
              },
              "origin_id_field": {
                "label": "Herkomst-ID-veld",
                "description": "Veld in de oorsprongen dat als 'origin_id' wordt weggeschreven (standaard: de objectindex)."
              },
              "dest_id_field": {
                "label": "Bestemmings-ID-veld",
                "description": "Veld in de bestemmingen dat als 'dest_id' wordt weggeschreven (standaard: de objectindex)."
              }
            }
          },
          "generate_points_along_3d_lines": {
            "name": "Punten genereren langs 3D-lijnen",
            "description": "Genereert gelijkmatig verdeelde punten langs 3D-lijnen gemeten in ware 3D-afstand (niet de 2D-planlengte die de meegeleverde points_along_lines gebruikt), met geïnterpoleerde Z, optionele eindpunten en een cumulatief 3D-kilometreringsveld. Zoals ArcGIS Generate Points Along 3D Lines.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerobjecten met 3D-polylijnen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de punten. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "method": {
                "label": "Methode",
                "description": "'distance' (standaard), 'percentage' of 'distance_field'."
              },
              "distance": {
                "label": "Afstand",
                "description": "Afstand in kaarteenheden voor de methode 'distance'."
              },
              "percentage": {
                "label": "Percentage",
                "description": "Afstand als percentage (0-100) van de 3D-lengte van elke lijn voor de methode 'percentage'."
              },
              "distance_field": {
                "label": "Afstandsveld",
                "description": "Veld dat een afstand per object geeft voor de methode 'distance_field'."
              },
              "include_end_points": {
                "label": "Eindpunten opnemen",
                "description": "Voert ook het begin- en eindhoekpunt van elke lijn uit (standaard false)."
              },
              "add_chainage": {
                "label": "Kilometrering toevoegen",
                "description": "Schrijft een veld CHAINAGE met de cumulatieve 3D-afstand vanaf het begin van de lijn (standaard false)."
              }
            }
          },
          "generate_spatial_weights_matrix": {
            "name": "Ruimtelijke gewichtenmatrix genereren",
            "description": "Geeft een herbruikbare buur-/gewichtentabel in lang formaat (origin_id, neighbor_id, weight) uit een gekozen conceptualisatie — KNN, vaste afstandsband, inverse afstand, contiguïteit (randen / randen+hoeken) of Delaunay — met optionele rijstandaardisatie, zoals ArcGIS Generate Spatial Weights Matrix.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag (punten/lijnen/polygonen; aangrenzing vereist polygonen)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de tabel — een CSV (extensie .csv) of een vectortabel zonder geometrie. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "id_field": {
                "label": "ID-veld",
                "description": "Veld dat de unieke ID van elk object bevat. Standaard: de 0-gebaseerde objectindex."
              },
              "method": {
                "label": "Methode",
                "description": "Conceptualisering van ruimtelijke relaties: 'knn', 'fixed_distance_band', 'inverse_distance', 'contiguity_edges', 'contiguity_edges_corners' of 'delaunay'. Standaard 'knn'."
              },
              "number_of_neighbors": {
                "label": "Aantal buren",
                "description": "Aantal dichtstbijzijnde buren k (method = knn). Standaard 8."
              },
              "threshold_distance": {
                "label": "Drempelafstand",
                "description": "Afkapwaarde van de afstandsband in kaarteenheden. Vereist voor fixed_distance_band; optionele afkapwaarde voor inverse_distance (niet ingesteld = alle overige objecten)."
              },
              "exponent": {
                "label": "Exponent",
                "description": "Exponent p van de afstandsafname voor inverse_distance (gewicht = 1/d^p). Standaard 1."
              },
              "row_standardization": {
                "label": "Rijstandaardisatie",
                "description": "Deelt de gewichten van elke oorsprong door hun rijsom, zodat de gewichten van elke oorsprong optellen tot 1. Standaard false."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Kwantiseert hoekpunten op een rooster van deze grootte (CRS-eenheden) voordat grenzen voor de aangrenzing worden vergeleken. Standaard 0 (exacte coördinaten)."
              }
            }
          },
          "generate_subset_polygons": {
            "name": "Deelverzamelingspolygonen genereren",
            "description": "Partitioneert een dichte puntlaag in compacte, niet-overlappende polygonen die de puntextent betegelen, elk met een aantal punten tussen een minimum en maximum (ArcGIS Generate Subset Polygons). De standaardvoorbewerkingsstap voor het interpoleren van zeer grote puntensets. Anders dan de meegeleverde vaste rasters past het zich aan de dichtheid aan (mediane k-d-splitsing), anders dan voronoi_diagram groepeert het punten in plaats van elk één cel te geven, en anders dan group_by_proximity geeft het polygonen en respecteert het groottegrenzen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerpuntlaag."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de polygonen. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              },
              "output_points": {
                "label": "Punten uitvoeren",
                "description": "Optioneel pad voor de invoerpunten voorzien van hun subset-ID. Indien weggelaten, wordt het in het geheugen opgeslagen (en toch geretourneerd)."
              },
              "min_points_per_subset": {
                "label": "Minimaal aantal punten per subset",
                "description": "Ondergrens voor het aantal punten per subset (standaard 50)."
              },
              "max_points_per_subset": {
                "label": "Maximaal aantal punten per subset",
                "description": "Bovengrens voor het aantal punten per subset (standaard 200)."
              },
              "coincident_points": {
                "label": "Samenvallende punten",
                "description": "'single' (standaard; exact samenvallende punten tellen bij het dimensioneren één keer) of 'all' (elk punt telt afzonderlijk)."
              },
              "clip_to_hull": {
                "label": "Uitsnijden op omhullende",
                "description": "Snijdt de subsetpolygonen uit op de convexe omhullende van de punten, zodat het resultaat de gegevens volgt in plaats van hun bbox (standaard true)."
              }
            }
          },
          "generate_transects_along_lines": {
            "name": "Transecten genereren langs lijnen",
            "description": "Doorloopt elke lijn met een vast interval en geeft loodrechte transectlijnen van een gegeven lengte (gecentreerd of verschoven), voor kustlijnverandering, oevers en dwarsdoorsnedebemonstering — zoals ArcGIS Generate Transects Along Lines.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met lijnen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de lijnvector (driver uit de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "interval": {
                "label": "Interval",
                "description": "Afstand tussen transecten langs elke lijn, in CRS-eenheden. Vereist."
              },
              "length": {
                "label": "Lengte",
                "description": "Totale transectlengte, in CRS-eenheden. Vereist."
              },
              "offset": {
                "label": "Verschuiving",
                "description": "Verschuiving met teken van het midden van het transect ten opzichte van de lijn, in CRS-eenheden (0 = gecentreerd; +/- verschuift naar links/rechts). Standaard 0."
              },
              "include_ends": {
                "label": "Uiteinden opnemen",
                "description": "Plaatst ook precies aan het begin en einde van elke lijn een transect. Standaard false."
              }
            }
          },
          "generate_trend_raster": {
            "name": "Trendraster genereren",
            "description": "Fit een temporele trend per pixel over een tijdreeks van gecoregistreerde rasters (zoals ArcGIS Generate Trend Raster): OLS-helling/-intercept/-R² of niet-parametrische Mann-Kendall + Sen's helling met een p-waarde — de temporele trend per pixel die de meegeleverde trend_surface (ruimtelijk) en change_vector_analysis (twee datums) niet kunnen produceren.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Door komma's gescheiden lijst met paden van gecoregistreerde enkelbandige rasters, in chronologische volgorde (>= 3)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerraster met de helling (de helling van Sen voor mann_kendall). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "times": {
                "label": "Tijden",
                "description": "Door komma's gescheiden numerieke tijden (bijv. jaren) die overeenkomen met 'inputs'. Standaard 0,1,2,..."
              },
              "method": {
                "label": "Methode",
                "description": "'linear' (OLS; standaard) of 'mann_kendall' (niet-parametrisch + de helling van Sen)."
              },
              "intercept_output": {
                "label": "Uitvoer intercept",
                "description": "alleen linear: optioneel uitvoerraster van het OLS-intercept."
              },
              "significance_output": {
                "label": "Uitvoer significantie",
                "description": "Optioneel uitvoerraster: R² (linear) of de tweezijdige p-waarde van Mann-Kendall (mann_kendall)."
              },
              "min_valid": {
                "label": "Minimaal aantal geldige",
                "description": "Minimaal aantal waarnemingen zonder no-data per pixel (standaard 3)."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die uit elke invoer wordt gelezen (standaard 1)."
              }
            }
          },
          "geodetic_densify": {
            "name": "Geodetisch verdichten",
            "description": "Voegt hoekpunten in langs het ware geodetische of loxodroom- (constante-peiling-)pad tussen bestaande hoekpunten van een geografische (lengte-/breedtegraad-)lijn- of polygoonlaag, zoals Geodetic Densify van ArcGIS — zodat lange segmenten de kromming van de aarde volgen in plaats van een vlakke koorde.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met lijnen of polygonen, waarvan wordt aangenomen dat deze geografisch is (lon/lat, in de trant van EPSG:4326)."
              },
              "geodetic_type": {
                "label": "Geodetisch type",
                "description": "Padtype tussen hoekpunten: 'geodesic' (standaard; kortste pad over de WGS84-ellipsoïde) of 'rhumb'/'loxodrome' (constante ware koershoek)."
              },
              "max_segment_length": {
                "label": "Maximale segmentlengte",
                "description": "Beoogde maximale afstand, in meters, tussen opeenvolgende hoekpunten na het verdichten. Precies één van max_segment_length / vertices_per_segment moet worden opgegeven."
              },
              "vertices_per_segment": {
                "label": "Hoekpunten per segment",
                "description": "Alternatief voor max_segment_length: voegt precies dit aantal gelijkmatig verdeelde hoekpunten in elk oorspronkelijk segment in, ongeacht de lengte ervan. Precies één van max_segment_length / vertices_per_segment moet worden opgegeven."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad; indien weggelaten, wordt het in het geheugen opgeslagen."
              }
            }
          },
          "geotagged_photos_to_points": {
            "name": "Gegeotagde foto's naar punten",
            "description": "Leest een map met gegeotagde foto's en bouwt een WGS84-puntlaag met per foto het pad, de opnamedatum en -tijd, hoogte, camerapeiling (GPS-beeldrichting) en merk/model — uitsluitend geparseerd uit EXIF-metadata (geen pixels gedecodeerd), zoals ArcGIS GeoTagged Photos To Points.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar de map met foto's (JPEG/TIFF) waaruit de EXIF-GPS-metadata worden gelezen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpuntvector (driver uit de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "recursive": {
                "label": "Recursief",
                "description": "Doorzoekt ook submappen bij het scannen naar foto's. Standaard false."
              },
              "only_geotagged": {
                "label": "Alleen met geotag",
                "description": "Slaat afbeeldingen zonder GPS-positie over (standaard true). Indien false worden niet-geotagde afbeeldingen uitgevoerd met een lege geometrie."
              }
            }
          },
          "getis_ord_general_g": {
            "name": "Hoog/laag-clustering (Getis-Ord General G)",
            "description": "Berekent de globale Getis-Ord General G-statistiek — één z-score en p-waarde die aangeven of HOGE of LAGE waarden globaal geclusterd zijn, zoals ArcGIS High/Low Clustering (Getis-Ord General G).",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag. Punten gebruiken hun coördinaten; andere geometrieën gebruiken hun representatieve punt als gemiddelde van de hoekpunten (aangrenzingsgewichten vereisen polygonen)."
              },
              "field": {
                "label": "Veld",
                "description": "Numeriek, niet-negatief veld dat op hoge/lage clustering wordt getoetst."
              },
              "weights": {
                "label": "Gewichten",
                "description": "Schema voor ruimtelijke gewichten: 'distance_band' (standaard), 'k_nearest', 'queen' of 'rook'."
              },
              "distance_band": {
                "label": "Afstandsband",
                "description": "Drempelafstand (CRS-eenheden) voor het schema 'distance_band'. Standaard: de maximale afstand tot de dichtstbijzijnde buur (elk object heeft >= 1 buur)."
              },
              "k": {
                "label": "K",
                "description": "Aantal buren voor het schema 'k_nearest' (standaard 8)."
              },
              "row_standardize": {
                "label": "Rijstandaardisatie",
                "description": "Standaardiseert de gewichtsmatrix per rij, zodat elke rij optelt tot 1 (standaard false)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel CSV-pad voor het rapport van één rij. Wordt altijd in het resultaat geretourneerd."
              }
            }
          },
          "goldstein_phase_filter": {
            "name": "Goldstein-fasefilter",
            "description": "Adaptieve spectrale (Goldstein-)filtering van interferometrische SAR-fase, de stap die fase-ontvouwing haalbaar maakt (ArcGIS Apply Complex Data Filter). unwrap_phase uit ronde 17 faalt op een ruw interferogram omdat ruisresiduen branch cuts afdwingen; de hele meegeleverde lee/frost/kuan/wiener/gaussiaanse filterfamilie werkt op reëelwaardige intensiteit en kan hier niet worden gebruikt, omdat het middelen van gewikkelde fase over de +/-pi-discontinuïteit deze vernietigt. Filtert het complexe signaal patch voor patch in het frequentiedomein en rapporteert het aantal residuen vóór en na.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Interferogram: een tweebands I/Q-raster, of een enkelbandig raster met gewikkelde fase in radialen (er wordt een eenheidsamplitude aangenomen)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Gefilterd complex uitvoerraster met twee banden (I, Q). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "output_phase": {
                "label": "Fase uitvoeren",
                "description": "Enkelbandige uitvoer met de gefilterde gewikkelde fase in radialen, in (-pi, pi]. Wordt altijd gemaakt; wordt in het geheugen opgeslagen wanneer geen pad is opgegeven."
              },
              "alpha": {
                "label": "Alfa",
                "description": "Filtersterkte in [0, 1] (standaard 0.5). 0 laat de fase ongemoeid; 1 is maximaal agressief."
              },
              "outer_window_size": {
                "label": "Grootte buitenvenster",
                "description": "FFT-patchgrootte in cellen (standaard 32). Wordt naar boven afgerond op een macht van twee."
              },
              "inner_window_size": {
                "label": "Grootte binnenvenster",
                "description": "Stap tussen patches in cellen (standaard = outer/4). Kleiner betekent meer overlap en een gladdere overgang; mag het buitenste venster niet overschrijden."
              },
              "spectrum_smoothing": {
                "label": "Spectrumgladstrijking",
                "description": "Breedte in bins van het voortschrijdend gemiddelde dat vóór de machtsverheffing op het patchspectrum wordt toegepast (standaard 3, moet oneven zijn)."
              }
            }
          },
          "gpx_to_features": {
            "name": "GPX naar objecten",
            "description": "Parseert een GPX-bestand naar waypoint-punten en/of track-/routepolylijnen, met ele/time/name.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar een .gpx-bestand (XML in het GPS Exchange Format)."
              },
              "points_output": {
                "label": "Puntenuitvoer",
                "description": "Optioneel uitvoerpad van de puntvector voor waypoints (driver uit de extensie). Indien geen van beide uitvoeren is opgegeven, worden de waypoints in het geheugen opgeslagen."
              },
              "lines_output": {
                "label": "Lijnenuitvoer",
                "description": "Optioneel uitvoerpad van de lijnvector voor tracks en routes (driver uit de extensie)."
              }
            }
          },
          "graphic_buffer": {
            "name": "Grafische buffer",
            "description": "Buffert objecten met een keuze uit eindstijlen (rond/vierkant/plat) en hoekverbindingsstijlen (rond/verstek/afgeschuind), met een versteklimiet — de vierkante/verstekbuffergeometrie die uitsluitend ronde buffers niet kunnen produceren.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoervectorbestand, formaat wordt automatisch gedetecteerd (of een handle in het geheugen)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de vector (driver op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "distance": {
                "label": "Afstand",
                "description": "Bufferafstand in de CRS-eenheden van de laag. Moet positief zijn."
              },
              "cap": {
                "label": "Eindstijl",
                "description": "Stijl van de eindkap voor lijn-/punteinden: 'round' (standaard), 'square' of 'butt' (alias 'flat')."
              },
              "join": {
                "label": "Koppelen",
                "description": "Stijl van de hoekverbinding: 'round' (standaard), 'miter' of 'bevel'."
              },
              "miter_limit": {
                "label": "Verstekgrens",
                "description": "Verhouding tussen de verstekslengte en de bufferafstand waarboven een verstekhoek wordt afgeschuind (standaard 10 in ArcGIS/JTS). Moet >= 1 zijn. Wordt alleen gebruikt wanneer join='miter'."
              },
              "dissolve": {
                "label": "Samenvoegen (dissolve)",
                "description": "Indien true worden alle buffers samengevoegd tot één opgelost (multi)polygoonobject. Standaard false (één buffer per invoerobject, met behoud van de attributen)."
              }
            }
          },
          "greater_than_or_equal_to": {
            "name": "Groter dan of gelijk aan",
            "description": "Toetst cel voor cel of het eerste raster groter dan of gelijk aan het tweede is.",
            "params": {
              "input1": {
                "label": "Invoer1",
                "description": "Eerste invoerraster (padtekenreeks of getypeerd rasterobject)."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Tweede invoerraster (padtekenreeks of getypeerd rasterobject)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, blijft de uitvoer in het geheugen en wordt deze geretourneerd als een memory://-rasterhandle."
              }
            }
          },
          "grid_index_features": {
            "name": "Rasterindexobjecten",
            "description": "Bouwt een kaartserie-indexraster van paginagrote rechthoeken met paginanamen (A1, B3, ... of sequentieel), schaalafgeleide afmetingen en een optioneel filter op gegevensdoorsnijding — zoals ArcGIS Grid Index Features, plus een stripmodus die een route volgt met gedraaide pagina's zoals ArcGIS Strip Map Index Features.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag. Levert de omvang wanneer geen expliciete omvang is opgegeven, de route voor de strookmodus en de objecten die door intersect_only worden getoetst."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpolygoonvector met indexpagina's (driver uit de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "mode": {
                "label": "Modus",
                "description": "grid (standaard): een rechthoekige omvang in tegels verdelen. strip: een routelijn volgen met geroteerde, overlappende pagina's."
              },
              "x_min": {
                "label": "X-minimum",
                "description": "Expliciete minimale X van de omvang (CRS-eenheden). Geef alle vier x_min/y_min/x_max/y_max op om de omvang van de invoer te overschrijven."
              },
              "y_min": {
                "label": "Y-minimum",
                "description": "Expliciete minimale Y van de omvang (CRS-eenheden)."
              },
              "x_max": {
                "label": "X-maximum",
                "description": "Expliciete maximale X van de omvang (CRS-eenheden)."
              },
              "y_max": {
                "label": "Y-maximum",
                "description": "Expliciete maximale Y van de omvang (CRS-eenheden)."
              },
              "tile_width": {
                "label": "Tegelbreedte",
                "description": "Paginabreedte in CRS-eenheden. Geef zowel tile_width als tile_height op, of gebruik page_size + map_scale."
              },
              "tile_height": {
                "label": "Tegelhoogte",
                "description": "Paginahoogte in CRS-eenheden (paginalengte langs de route in de strookmodus)."
              },
              "page_size": {
                "label": "Paginaformaat",
                "description": "Voorinstelling voor het papierformaat (a0..a4, letter, legal, tabloid) waarvan de metrische afmetingen met map_scale worden vermenigvuldigd om elke pagina te dimensioneren. Vereist map_scale."
              },
              "map_scale": {
                "label": "Kaartschaal",
                "description": "Noemer van de kaartschaal (bijv. 24000 voor 1:24.000). Samen met page_size geldt: tegelgrootte = papiermeters × map_scale (er wordt een metrisch CRS aangenomen)."
              },
              "origin_x": {
                "label": "Oorsprong X",
                "description": "X van de roosteroorsprong waarop de tegelgrenzen worden uitgelijnd. Standaard: de minimale X van de omvang."
              },
              "origin_y": {
                "label": "Oorsprong Y",
                "description": "Y van de roosteroorsprong waarop de tegelgrenzen worden uitgelijnd. Standaard: de minimale Y van de omvang."
              },
              "naming": {
                "label": "Naamgeving",
                "description": "Naamgevingsschema voor pagina's: alphanumeric (standaard; kolomletter + rijnummer, bijv. A1) of sequential (nummer in leesvolgorde)."
              },
              "intersect_only": {
                "label": "Alleen doorsnijden",
                "description": "Indien true worden pagina's die geen enkel invoerobject snijden weggelaten. Vereist input. Standaard false."
              },
              "route": {
                "label": "Route",
                "description": "Strookmodus: de te volgen lijnvectorlaag. Standaard het eerste lijnobject in input."
              },
              "overlap": {
                "label": "Overlap",
                "description": "Strookmodus: fractie [0,1) waarmee opeenvolgende pagina's elkaar langs de route overlappen. Standaard 0.05."
              },
              "epsg": {
                "label": "EPSG",
                "description": "EPSG-code voor de uitvoer wanneer de omvang expliciet is opgegeven en er geen invoerlaag is om een CRS van over te nemen."
              }
            }
          },
          "group_by_proximity": {
            "name": "Groeperen op nabijheid",
            "description": "Voorziet objecten van een GROUP_ID voor ruimtelijk samenhangende componenten via single linkage — objecten binnen een afstand ('near') of rakend ('intersects'), optioneel met een gedeelde attribuutwaarde — zoals ArcGIS Group By Proximity.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag (elk geometrietype)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorpad (stuurprogramma op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "relationship": {
                "label": "Relatie",
                "description": "'near' (binnen 'spatial_near_distance', standaard) of 'intersects' (rakend, afstand 0)."
              },
              "spatial_near_distance": {
                "label": "Ruimtelijke nabijheidsafstand",
                "description": "Zoekafstand in kaarteenheden voor 'near' (standaard 0)."
              },
              "attribute_field": {
                "label": "Attribuutveld",
                "description": "Optioneel veld; objecten worden alleen gegroepeerd wanneer ze deze attribuutwaarde delen."
              },
              "group_field": {
                "label": "Groepeerveld",
                "description": "Naam van het uitvoerveld met de groeps-ID (standaard 'GROUP_ID')."
              }
            }
          },
          "gtfs_to_features": {
            "name": "GTFS naar objecten",
            "description": "Parseert een GTFS-OV-feed naar haltepunten en routelijnen, optioneel met dienstfrequentietellingen per halte.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar een uitgepakte map met een GTFS-feed (map met *.txt-bestanden: stops.txt, shapes.txt, trips.txt, ...)."
              },
              "stops_output": {
                "label": "Uitvoer haltes",
                "description": "Optioneel uitvoerpad van de puntvector voor haltes (driver uit de extensie). Indien geen van beide uitvoeren is opgegeven, worden de haltes in het geheugen opgeslagen."
              },
              "shapes_output": {
                "label": "Uitvoer shapes",
                "description": "Optioneel uitvoerpad van de lijnvector voor de routevormen (driver uit de extensie)."
              },
              "frequency": {
                "label": "Frequentie",
                "description": "Indien true worden de geplande vertrekken van elke halte uit stop_times.txt geteld in een veld n_departures. Standaard false."
              },
              "start_time": {
                "label": "Begintijd",
                "description": "Optionele ondergrens in HH:MM:SS voor het frequentievenster (GTFS-tijden kunnen 24:00:00 overschrijden)."
              },
              "end_time": {
                "label": "Eindtijd",
                "description": "Optionele bovengrens in HH:MM:SS voor het frequentievenster."
              }
            }
          },
          "h3_polyfill": {
            "name": "H3-polyfill",
            "description": "Bedekt invoerpolygonen met H3-cellen van het discrete globale raster op een gekozen resolutie.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerpolygoonvectorbestand (moet geografisch lon/lat zijn, EPSG:4326) of een handle in het geheugen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector; de driver wordt afgeleid uit de extensie (.geojson, .fgb, .parquet, ...). Indien weggelaten, wordt de laag in het geheugen opgeslagen."
              },
              "resolution": {
                "label": "Resolutie",
                "description": "H3-resolutie van 0 (grofst) tot 15 (fijnst); standaard 8 (cellen van ongeveer 0,7 km²)."
              }
            }
          },
          "h3_to_vector": {
            "name": "H3-cellen naar polygonen",
            "description": "Zet een kolom met H3-cel-id's om in celgrenspolygonen, waarbij andere attributen worden overgenomen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoervectorbestand (of een handle in het geheugen) met een veld met H3-cel-ID's."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector; de driver wordt afgeleid uit de extensie (.geojson, .fgb, .parquet, ...). Indien weggelaten, wordt de laag in het geheugen opgeslagen."
              },
              "field": {
                "label": "Veld",
                "description": "Naam van het tekstveld dat de H3-cel-ID bevat; standaard 'h3'."
              }
            }
          },
          "hdbscan": {
            "name": "HDBSCAN-clustering",
            "description": "Hiërarchische dichtheidsgebaseerde clustering (HDBSCAN*): MST op wederzijdse bereikbaarheid, gecondenseerde clusterboom en excess-of-mass-selectie, met lidmaatschapskans en uitschieterscore per punt — gaat om met variabele dichtheid zonder epsilon, zoals de HDBSCAN-optie van ArcGIS Density-based Clustering.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met punten (geprojecteerd CRS; afstanden in de eenheden daarvan)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector (een kopie van de invoer met clustervelden). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "min_cluster_size": {
                "label": "Minimale clustergrootte",
                "description": "Kleinste groepering die als cluster geldt (>= 2). Standaard 5."
              },
              "min_samples": {
                "label": "Minimaal aantal monsters",
                "description": "Omgevingsgrootte voor de dichtheidsschatting van de kernafstand (hoger = meer punten die als ruis worden aangemerkt). Standaard: min_cluster_size."
              }
            }
          },
          "hot_spot_analysis_comparison": {
            "name": "Vergelijking van hotspotanalyses",
            "description": "Vergelijkt twee Getis-Ord-hotspotresultaatlagen: matcht hun locaties, classificeert elke overgang (hot_to_hot, hot_to_cold, none_to_hot, ...) en voert een geseede permutatietoets van de algehele overeenstemming uit — zoals ArcGIS Hot Spot Analysis Comparison.",
            "params": {
              "input1": {
                "label": "Invoer1",
                "description": "Eerste laag met hotspotresultaten (punten of polygonen)."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Tweede laag met hotspotresultaten."
              },
              "bin_field": {
                "label": "Binveld",
                "description": "Significantieveld dat op beide invoeren aanwezig is (positief = hot, negatief = cold)."
              },
              "significance": {
                "label": "Significantie",
                "description": "Drempelwaarde voor de absolute waarde waaronder een locatie 'none' is (standaard 0)."
              },
              "match_field": {
                "label": "Matchveld",
                "description": "Optioneel ID-veld dat op beide invoeren aanwezig is en wordt gebruikt om locaties te koppelen; anders het dichtstbijzijnde zwaartepunt."
              },
              "tolerance": {
                "label": "Tolerantie",
                "description": "Maximale afstand tussen zwaartepunten voor het koppelen van dichtstbijzijnde locaties (kaarteenheden). Onbeperkt indien weggelaten."
              },
              "permutations": {
                "label": "Permutaties",
                "description": "Aantal permutaties voor de globale overeenstemmingstoets (standaard 499)."
              },
              "seed": {
                "label": "Seed",
                "description": "Zaad voor de deterministische permutatie-RNG (standaard 1)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorpad (stuurprogramma op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              }
            }
          },
          "identify_narrow_polygons": {
            "name": "Smalle polygonen identificeren",
            "description": "Markeert polygonen die ergens smaller zijn dan een breedtetolerantie (slivers en dunne halzen), en annoteert elk met een is_narrow-vlag en een geschatte minimale breedte.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerpolygoonvectorbestand, formaat automatisch gedetecteerd (of een handle in het geheugen)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de vector (driver op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "width_tolerance": {
                "label": "Breedtetolerantie",
                "description": "Breedtedrempel in CRS-eenheden. Een polygoon is smal waar deze dunner is dan deze waarde. Vereist."
              },
              "min_narrow_area": {
                "label": "Minimale oppervlakte smal gebied",
                "description": "Minimale oppervlakte van het smalle deel (vierkante CRS-eenheden) die vereist is om een polygoon te markeren; kleinere smalle gebieden worden als ruis genegeerd. Standaard width_tolerance in het kwadraat, wat ook de lichte hoekafronding van de opening opvangt."
              },
              "narrow_only": {
                "label": "Alleen smalle gebieden",
                "description": "Indien true worden niet-smalle objecten weggelaten en worden alleen de gemarkeerde smalle polygonen uitgevoerd. Standaard false (alle objecten worden voorzien van een aantekening en behouden)."
              }
            }
          },
          "idw_3d": {
            "name": "3D-IDW",
            "description": "Volumetrische inverse-afstandsinterpolatie van 3D-puntwaarnemingen naar een stapel hoogteniveaus (één rasterband per niveau), met een hoogte-inflatiefactor voor verticale versus horizontale anisotropie en optionele leave-one-out-kruisvalidatiepunten. Zoals ArcGIS IDW3D.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerobjecten met 3D-punten."
              },
              "value_field": {
                "label": "Waardeveld",
                "description": "Numeriek veld dat de te interpoleren waarde bevat."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het multiband-raster (één band per hoogteniveau). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "z_field": {
                "label": "Z-veld",
                "description": "Veld dat de hoogte levert; standaard de Z van de geometrie."
              },
              "power": {
                "label": "Macht",
                "description": "Exponent van de omgekeerde afstand (standaard 2)."
              },
              "elev_inflation_factor": {
                "label": "Hoogte-inflatiefactor",
                "description": "Vermenigvuldigingsfactor die op de verticale afstand wordt toegepast voordat de 3D-afstand wordt berekend (standaard 1). Waarden > 1 laten de verticale afstand zwaarder meewegen, wat aansluit bij de kortere verticale correlatieschaal van de meeste volumetrische gegevens."
              },
              "x_spacing": {
                "label": "X-tussenafstand",
                "description": "Uitvoercelgrootte in X (standaard: omvang / 100)."
              },
              "y_spacing": {
                "label": "Y-tussenafstand",
                "description": "Uitvoercelgrootte in Y (standaard: hetzelfde als x_spacing)."
              },
              "z_spacing": {
                "label": "Z-tussenafstand",
                "description": "Verticale afstand tussen de uitvoerniveaus (standaard: z-bereik / 10)."
              },
              "z_min": {
                "label": "Z-minimum",
                "description": "Laagste uitvoerniveau (standaard: het minimum van de gegevens)."
              },
              "z_max": {
                "label": "Z-maximum",
                "description": "Hoogste uitvoerniveau (standaard: het maximum van de gegevens)."
              },
              "neighbors": {
                "label": "Buren",
                "description": "Maximaal aantal monsters per voorspelling (standaard 12)."
              },
              "search_radius": {
                "label": "Zoekstraal",
                "description": "Optionele maximale (opgeblazen) 3D-zoekafstand; monsters daarbuiten worden genegeerd."
              },
              "output_cv_features": {
                "label": "CV-objecten uitvoeren",
                "description": "Optioneel pad voor de punten van de leave-one-out-kruisvalidatie met de waargenomen, voorspelde en residuwaarden."
              },
              "epsg": {
                "label": "EPSG",
                "description": "EPSG-code die op het uitvoerraster wordt gezet (standaard: het CRS van de invoerlaag)."
              }
            }
          },
          "incremental_spatial_autocorrelation": {
            "name": "Incrementele ruimtelijke autocorrelatie",
            "description": "Berekent de globale Moran's I over een reeks toenemende afstandsbanden en rapporteert de z-scorecurve met de eerste en maximale piek — de verdedigbare manier om een clusteringsafstand te kiezen, zoals ArcGIS Incremental Spatial Autocorrelation.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met punten (andere geometrieën gebruiken hun representatieve punt als gemiddelde van de hoekpunten). Gebruik een geprojecteerd CRS."
              },
              "field": {
                "label": "Veld",
                "description": "Numeriek veld dat op ruimtelijke autocorrelatie wordt getoetst."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel CSV-pad voor de tabel per band. Wordt altijd in het resultaat geretourneerd."
              },
              "begin_distance": {
                "label": "Beginafstand",
                "description": "Afstand van de eerste band, in CRS-eenheden. Standaard: de maximale afstand tot de dichtstbijzijnde buur (elk object heeft >= 1 buur)."
              },
              "increment": {
                "label": "Verhogen",
                "description": "Afstand die bij elke band wordt opgeteld, in CRS-eenheden. Standaard: de beginafstand."
              },
              "num_bands": {
                "label": "Aantal banden",
                "description": "Aantal te evalueren afstandsbanden (standaard 10)."
              }
            }
          },
          "inside_3d": {
            "name": "Binnen 3D",
            "description": "Bepaalt welke 3D-objecten (punten, polylijnen of volumes) binnen gesloten volumetrische containers vallen, en rapporteert optioneel de omsloten lengte of het aandeel hoekpunten (ArcGIS Inside 3D). Elk omsluitingspredicaat in beide registers projecteert naar het XY-vlak, zodat een sensor boven een omtrek of een leiding onder een perceel momenteel als erbinnen wordt getoetst. Containers volgen de driehoeksmesh-conventie van de meegeleverde buffer_3d en minimum_bounding_volume.",
            "params": {
              "target": {
                "label": "Doel",
                "description": "Te toetsen 3D-objecten: punten, polylijnen of vaste lichamen als driehoeksmesh."
              },
              "container": {
                "label": "Container",
                "description": "Gesloten 3D-objecten (vaste lichamen als driehoeksmesh) die als container fungeren."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de tabel met doel-/containerparen. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "mode": {
                "label": "Modus",
                "description": "'simple' (standaard) meldt of het doel zich binnen bevindt; 'complex' voegt de omvatte lengte en de binnenfractie toe."
              },
              "output_features": {
                "label": "Uitvoerobjecten",
                "description": "Optioneel pad voor de uitgesneden binnendelen van lijndoelen (modus complex). Indien weggelaten, wordt het in het geheugen opgeslagen (en toch geretourneerd)."
              }
            }
          },
          "integrate": {
            "name": "Integreren",
            "description": "Snapt alle hoekpunten over alle objecten binnen een clustertolerantie naar een gedeelde locatie, zodat bijna samenvallende gedeelde grenzen exact samenvallend worden, en voegt optioneel T-kruisingshoekpunten in op nabijgelegen randen — zoals ArcGIS Integrate.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag (elk geometrietype)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de vector (driver uit de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "tolerance": {
                "label": "Tolerantie",
                "description": "Clusterafstand in CRS-eenheden: hoekpunten binnen deze afstand snappen naar een gedeelde locatie. Vereist."
              },
              "snap_to_edges": {
                "label": "Snappen aan randen",
                "description": "Voegt ook een hoekpunt in waar het hoekpunt van het ene object binnen de tolerantie op het segment van een ander object valt (T-splitsingen). Standaard true."
              }
            }
          },
          "interpolate_from_spatiotemporal_points": {
            "name": "Interpoleren uit ruimtelijk-temporele punten",
            "description": "Verdeelt puntwaarnemingen met tijdstempel in regelmatige tijdplakken en interpoleert elk naar één gedeeld raster, wat een gecoregistreerd multidimensionaal raster oplevert, zoals ArcGIS Interpolate From Spatiotemporal Points.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Puntobjecten met tijdstempels."
              },
              "value_field": {
                "label": "Waardeveld",
                "description": "Te interpoleren numeriek veld."
              },
              "time_field": {
                "label": "Tijdveld",
                "description": "Tijdstempelveld: numerieke seconden sinds het epoch, of ISO-8601-tekst."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad voor de eerste doorsnede. Latere doorsneden worden ernaast weggeschreven met het achtervoegsel _t<index>. Indien weggelaten, worden alle doorsneden in het geheugen opgeslagen."
              },
              "time_step": {
                "label": "Tijdstap",
                "description": "daily | weekly | monthly (standaard) | quarterly | yearly."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Uitvoercelgrootte in kaarteenheden. Standaard 1/50 van de grootste afmeting van de omvang."
              },
              "method": {
                "label": "Methode",
                "description": "idw (standaard) | nearest | mean | median."
              },
              "power": {
                "label": "Macht",
                "description": "IDW-afstandsexponent (standaard 2)."
              },
              "neighbors": {
                "label": "Buren",
                "description": "Aantal dichtstbijzijnde waarnemingen dat per cel wordt gebruikt (standaard 8)."
              },
              "min_points": {
                "label": "Minimaal aantal punten",
                "description": "Minimaal aantal waarnemingen dat vereist is om een doorsnede te interpoleren; ijlere doorsneden leveren volledig nodata op in plaats van een misleidend oppervlak (standaard 3)."
              }
            }
          },
          "interpolate_shape": {
            "name": "Vorm interpoleren",
            "description": "Drapeert punten/lijnen/polygonen over een oppervlakteraster: verdicht, bemonstert Z per hoekpunt (bilineair of nearest), schrijft 3D-geometrie en voegt oppervlaktematen toe (z_min/z_max/z_mean, 3D-oppervlaktelengte, gemiddelde helling), zoals ArcGIS Interpolate Shape / Add Surface Information.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag (punten, lijnen of polygonen) met hetzelfde CRS als het oppervlak."
              },
              "surface": {
                "label": "Oppervlak",
                "description": "Te bemonsteren hoogte-/oppervlakraster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorpad (stuurprogramma op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "sample_distance": {
                "label": "Bemonsteringsafstand",
                "description": "Verdichtingsinterval in CRS-eenheden; lange segmenten worden opgesplitst zodat ze het oppervlak volgen. Standaard: de celgrootte van het raster."
              },
              "method": {
                "label": "Methode",
                "description": "Oppervlaktebemonstering: 'bilinear' (standaard) of 'nearest'."
              },
              "attributes": {
                "label": "Attributen",
                "description": "Door komma's gescheiden lijst met toe te voegen maatkolommen: z_min,z_max,z_mean,surf_len,avg_slope. Standaard: alle."
              },
              "band": {
                "label": "Band",
                "description": "Te bemonsteren band van het oppervlakraster, 1-gebaseerd (standaard 1)."
              }
            }
          },
          "interpolate_with_barriers": {
            "name": "Interpoleren met barrières",
            "description": "Interpoleert puntmetingen naar een raster met inachtneming van absolute barrières (kustlijnen, ruggen, breuken, muren): de invloed reist om barrières heen via kosten-/geodetische afstand, niet erdoorheen — IDW of een eersteorde lokale-polynoomkernel, zoals ArcGIS Kernel Interpolation With Barriers / Spline With Barriers. De meegeleverde idw/kriging/natural-neighbour/spline-tools zijn allemaal barrièreblind.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met meetpunten."
              },
              "field": {
                "label": "Veld",
                "description": "Numeriek veld op de punten dat de te interpoleren waarde bevat."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Geïnterpoleerd uitvoerraster (GeoTIFF). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "barriers": {
                "label": "Barrières",
                "description": "Optionele vectorlaag met barrières (polylijnen of polygonen). Wordt gerasterd als onbegaanbare cellen, zodat de invloed eromheen moet lopen. Laat dit weg voor een barrièrevrije controle."
              },
              "method": {
                "label": "Methode",
                "description": "'idw' (standaard) of 'local_polynomial' (gewogen vlakke fit van de eerste orde met een Gaussische kernel op geodetische afstand)."
              },
              "power": {
                "label": "Macht",
                "description": "Exponent van de IDW-afstandsafname (standaard 2)."
              },
              "bandwidth": {
                "label": "Bandbreedte",
                "description": "Bandbreedte van de Gauss-kernel voor local_polynomial (afstandseenheden). Standaard: de zoekradius, of anders de omvang van het raster."
              },
              "radius": {
                "label": "Straal",
                "description": "Zoekradius als geodetische (kosten)afstand: monsters daarbuiten beïnvloeden een cel niet, en cellen die daarbinnen niet bereikbaar zijn worden no-data. Meters voor een geografisch CRS, anders CRS-eenheden. Standaard: onbegrensd."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Uitvoercelgrootte in CRS-eenheden (graden voor een geografisch CRS). Standaard: zo gekozen dat de langste as ongeveer 256 cellen omvat."
              }
            }
          },
          "intersect_3d": {
            "name": "3D-doorsnijden",
            "description": "Berekent het volume dat overlappende gesloten 3D-volumes delen, paar voor paar, met een optioneel omsluitend volume voor elke doorsnijding (ArcGIS Intersect 3D). union_3d is de enige 3D-overlay in beide registers en beantwoordt alleen de vraag naar het gecombineerde volume; inside_3d is een omsluitingspredicaat voor punten en lijnen, en polygon_volume / surface_volume meten ten opzichte van een referentievlak. Volumes per volume zijn exact; de doorsnijding wordt geschat via voxelbezetting op een gerapporteerde resolutie.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Gesloten 3D-objecten als vaste lichamen (MultiPolygons als driehoeksmesh met Z, zoals buffer_3d en minimum_bounding_volume die leveren)."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Optionele tweede laag met vaste lichamen. Indien weggelaten, wordt elk paar binnen 'input' gesneden (de modus met één invoer van ArcGIS)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoertabel met snijdende paren, één rij per niet-lege doorsnede. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "mode": {
                "label": "Modus",
                "description": "'table' (standaard): alleen attributen. 'solid': levert daarnaast het omhullende vaste lichaam van elke doorsnede als geometrie. Het gemeten volume is altijd een attribuut — er wordt geen exacte samengevoegde mesh geclaimd."
              },
              "resolution": {
                "label": "Resolutie",
                "description": "Aantal voxelcellen langs de langste as van de gedeelde bbox van elk paar (standaard 64). Hoger is nauwkeuriger en trager."
              }
            }
          },
          "intersect_3d_line_with_surface": {
            "name": "3D-lijn doorsnijden met oppervlak",
            "description": "Splitst 3D-lijnen op elk punt waar ze een hoogteoppervlak of een multipatch kruisen, markeert elk stuk als boven of onder en geeft de kruisingspunten (ArcGIS Intersect 3D Line With Surface / Intersect 3D Line With Multi Patch). intersect_3d uit ronde 17 neemt gesloten volumes in plaats van lijnen, inside_3d is een omsluitingspredicaat dat de geometrie niet snijdt en de kruisingen niet lokaliseert, en interpolate_shape drapeert een lijn over een oppervlak, waarbij de lijn-z waarvan de vergelijking afhangt wordt weggegooid.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "3D-lijnlaag, met hoekpunten die een z-waarde dragen."
              },
              "surface": {
                "label": "Oppervlak",
                "description": "Hoogteraster waartegen wordt gesneden. Vereist tenzij 'multipatch' is opgegeven."
              },
              "multipatch": {
                "label": "Multipatch",
                "description": "Multipatch-laag (multipolygonen van driehoeken) waartegen wordt gesneden, in plaats van een rasteroppervlak."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerlijnlaag die bij elke kruising is gesplitst. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "output_points": {
                "label": "Punten uitvoeren",
                "description": "Uitvoerpuntlaag met de kruisingen zelf. Wordt altijd gemaakt; wordt in het geheugen opgeslagen wanneer geen pad is opgegeven."
              },
              "spacing": {
                "label": "Tussenafstand",
                "description": "Verdichtingsstap in bovenaanzicht, in kaarteenheden (standaard: één oppervlaktecel). Kleiner lost kruisingen fijner op, tegen hogere kosten."
              },
              "keep_above": {
                "label": "Boven behouden",
                "description": "Behoudt de delen boven het oppervlak (standaard true)."
              },
              "keep_below": {
                "label": "Onder behouden",
                "description": "Behoudt de delen onder het oppervlak (standaard true)."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band van het oppervlakteraster (standaard 1)."
              }
            }
          },
          "intersecting_layers_masks": {
            "name": "Maskers van doorsnijdende lagen",
            "description": "Genereert cartografische maskerpolygonen met een marge rond objecten van een gemaskeerde laag, maar alleen waar ze een tweede maskerende laag doorsnijden (exacte omtrek, convexe omhullende of omsluitende rechthoek).",
            "params": {
              "masked_layer": {
                "label": "Gemaskeerde laag",
                "description": "Te maskeren vectorlaag (elke geometrie): elk object dat de maskerende laag snijdt krijgt een masker. Formaat automatisch gedetecteerd (of een handle in het geheugen)."
              },
              "masking_layer": {
                "label": "Maskeerlaag",
                "description": "Maskerende vectorlaag (elke geometrie): een te maskeren object wordt alleen gemaskeerd waar het een object van deze laag snijdt."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de vector (driver op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "margin": {
                "label": "Marge",
                "description": "Marge-afstand van het masker. Meters voor een geografisch CRS (EPSG:4326 of onbekend, omgerekend naar graden), anders in de CRS-eenheden van de laag. Moet positief zijn."
              },
              "mask_kind": {
                "label": "Maskersoort",
                "description": "Vorm van het masker: 'exact' (standaard, de gebufferde omtrek van het object), 'convex_hull' (verwijde convexe omhullende) of 'box' (omhullende rechthoek + marge)."
              },
              "id_field": {
                "label": "ID-veld",
                "description": "Optioneel veld op de te maskeren laag waarvan de waarde als 'source_id' naar elk masker wordt gekopieerd. Standaard de objectindex van de bron."
              }
            }
          },
          "intervisibility": {
            "name": "Onderlinge zichtbaarheid",
            "description": "Toetst elke zichtlijn tegen 3D-vectorobstakels en markeert deze als zichtbaar of geblokkeerd, met vermelding van welk obstakel blokkeerde en waar (ArcGIS Intervisibility). line_of_sight, visibility_index, viewshed en skyline_analysis werken allemaal tegen een oppervlakteraster; geen ervan kan toetsen tegen 3D-multipatch-obstakels zoals gebouwen, waarvan overstekken en arcades verloren gaan bij het inbranden in een DEM.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Zichtlijnen: 3D-polylijnen waarvan het eerste hoekpunt de waarnemer is en het laatste hoekpunt het doel."
              },
              "obstructions": {
                "label": "Obstakels",
                "description": "Een of meer door komma's gescheiden 3D-lagen met obstakels (MultiPolygons als driehoeksmesh met Z)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerzichtlijnen met de toegevoegde zichtbaarheidsvelden. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "visible_field": {
                "label": "Veld zichtbaar",
                "description": "Naam van het booleaanse zichtbaarheidsveld (standaard 'VISIBLE'), overeenkomstig de parameter in ArcGIS."
              },
              "observer_offset": {
                "label": "Waarnemeroffset",
                "description": "Hoogte die vóór de toetsing bij het eindpunt van de waarnemer wordt opgeteld, in CRS-eenheden (standaard 0). Modelleert de oog- of instrumenthoogte."
              },
              "target_offset": {
                "label": "Doeloffset",
                "description": "Hoogte die vóór de toetsing bij het eindpunt van het doel wordt opgeteld, in CRS-eenheden (standaard 0)."
              },
              "visible_only": {
                "label": "Alleen zichtbaar",
                "description": "Voert alleen de onbelemmerde zichtlijnen uit (standaard false)."
              }
            }
          },
          "is_closed_3d": {
            "name": "Is gesloten (3D)",
            "description": "Markeert welke 3D-multipatch-objecten waterdichte gesloten volumes zijn en welke open oppervlakken, met diagnostische tellingen van ongepaarde randen, niet-manifold randen en wikkelconsistentie (ArcGIS Is Closed 3D). Elke volumetrische tool in de catalogus — union_3d, inside_3d, minimum_bounding_volume, buffer_3d — gaat uit van gesloten invoer en geeft een betekenisloos getal voor een open mesh, en niets liet u die voorwaarde vooraf controleren.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "3D-objecten (MultiPolygons als driehoeksmesh met Z, zoals buffer_3d, minimum_bounding_volume en voxel_isosurface die leveren)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector: de invoerobjecten met de toegevoegde diagnostische velden. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "closed_only": {
                "label": "Alleen gesloten",
                "description": "Voert alleen de objecten uit die gesloten vaste lichamen zijn (standaard false: elk object wordt uitgevoerd met zijn oordeel)."
              }
            }
          },
          "kernel_density_ratio": {
            "name": "Kerneldichtheidsratio",
            "description": "Relatieve-risicoratio van twee kerneldichtheidsoppervlakken: evalueert een tellerpuntlaag (gevallen) en een noemerpuntlaag (risicopopulatie) met dezelfde quartische kernel en gedeelde bandbreedte, en deelt vervolgens cel voor cel — zoals ArcGIS Calculate Kernel Density Ratio. Een noemerondergrens schrijft NoData waar de populatie te dun is (geen inf/NaN-lekken), en een optionele natuurlijke-logtransformatie maakt over-/ondervertegenwoordiging symmetrisch. De dichtheidsratio die de enkellaags heat_map niet kan uitdrukken.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Puntlaag met de teller (bijv. gevallen / incidenten)."
              },
              "denominator": {
                "label": "Noemer",
                "description": "Puntlaag met de noemer (bijv. bevolking / blootstelling aan risico)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het ratioraster. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "weight_field": {
                "label": "Gewichtsveld",
                "description": "Numeriek veld dat de tellerpunten weegt (standaard: elk punt telt als 1)."
              },
              "denominator_weight_field": {
                "label": "Gewichtsveld noemer",
                "description": "Numeriek veld dat de noemerpunten weegt (standaard: elk punt telt als 1)."
              },
              "bandwidth": {
                "label": "Bandbreedte",
                "description": "Gedeelde kernelbandbreedte / zoekradius (meters voor een geografisch CRS, anders CRS-eenheden). Standaard: de regel van Silverman op basis van de gecombineerde puntspreiding."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Uitvoercelgrootte in CRS-eenheden (standaard: de langste zijde van de omvang / 200)."
              },
              "log_ratio": {
                "label": "Logratio",
                "description": "Indien true wordt de natuurlijke logaritme van de ratio uitgevoerd (symmetrisch rond 0). Standaard false."
              },
              "denominator_floor": {
                "label": "Ondergrens noemer",
                "description": "Cellen waarvan de noemerdichtheid onder deze waarde ligt (of nul is) worden no-data, waarmee ontsporende delingen worden vermeden. Standaard 0 (alleen een noemer die precies nul is wordt gemaskeerd)."
              },
              "epsg": {
                "label": "EPSG",
                "description": "EPSG waarmee de uitvoer wordt gemarkeerd (standaard: uit de tellerlaag)."
              }
            }
          },
          "kernel_interpolation_with_barriers": {
            "name": "Kernelinterpolatie met barrières",
            "description": "Interpoleert puntwaarnemingen met een kernelgewogen polynoomfit in een bewegend venster, waarbij de afstand wordt gemeten als het kortste pad OM absolute barrières heen in plaats van er rechtdoorheen (ArcGIS Kernel Interpolation With Barriers). Vult de meegeleverde diffusion_interpolation_with_barriers aan, die een warmtevergelijking oplost in plaats van een expliciete kernel toe te passen. Elke andere interpolator in beide registers gebruikt euclidische afstand, zodat ze allemaal rechtdoor over landtongen en breuken interpoleren.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerpuntlaag met de waarnemingen."
              },
              "z_field": {
                "label": "Z-veld",
                "description": "Te interpoleren numeriek veld."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad voor de voorspelde waarden. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "output_error": {
                "label": "Fout uitvoeren",
                "description": "Optioneel pad voor het raster met de lokale gewogen residu-RMS — de gewogen spreiding van de residuen van de buren rond de lokale fit. Dit is een maat voor de fitkwaliteit, GEEN standaardfout van de voorspelling zoals in ArcGIS (er wordt noch met effectieve vrijheidsgraden noch met hefboomwerking rekening gehouden). Indien weggelaten, wordt het in het geheugen opgeslagen (en toch geretourneerd)."
              },
              "barriers": {
                "label": "Barrières",
                "description": "Optionele polylijnlaag met absolute barrières. Wanneer er geen wordt aangeleverd, valt de tool terug op gewone kernelinterpolatie."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Uitvoercelgrootte in CRS-eenheden. Standaard ongeveer 1/100 van de langste zijde van de omvang."
              },
              "kernel": {
                "label": "Kernel",
                "description": "exponential, gaussian, quartic, epanechnikov, polynomial5 (standaard) of constant."
              },
              "bandwidth": {
                "label": "Bandbreedte",
                "description": "Kernelbandbreedte in CRS-eenheden. Standaard een uit de gegevens afgeleide waarde op basis van de gemiddelde afstand tot de dichtstbijzijnde buur."
              },
              "power": {
                "label": "Macht",
                "description": "Orde van de lokale polynoom: 0 (gewogen gemiddelde) of 1 (standaard, vlakke fit)."
              },
              "ridge": {
                "label": "Rug",
                "description": "Ridge-parameter die de lokale kleinste-kwadratenfit stabiliseert waar een omgeving ontaard is (standaard 1e-6)."
              },
              "max_neighbors": {
                "label": "Maximaal aantal buren",
                "description": "Bovengrens voor het aantal waarnemingen dat aan elke lokale fit bijdraagt (standaard 32)."
              }
            }
          },
          "kml_to_features": {
            "name": "KML naar objecten",
            "description": "Leest .kml/.kmz-Placemarks in als punt-, lijn- en polygoonlagen met naam-/beschrijvingsattributen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar een .kml-bestand of een .kmz-archief (een gezipte KML)."
              },
              "points_output": {
                "label": "Puntenuitvoer",
                "description": "Optioneel uitvoerpad van de puntvector (driver uit de extensie). Wordt alleen weggeschreven als de KML puntplacemarks bevat."
              },
              "lines_output": {
                "label": "Lijnenuitvoer",
                "description": "Optioneel uitvoerpad van de lijnvector (driver uit de extensie). Wordt alleen weggeschreven als de KML lijnplacemarks bevat."
              },
              "polygons_output": {
                "label": "Polygonenuitvoer",
                "description": "Optioneel uitvoerpad van de polygoonvector (driver uit de extensie). Wordt alleen weggeschreven als de KML polygoonplacemarks bevat."
              }
            }
          },
          "landtrendr": {
            "name": "LandTrendr",
            "description": "LandTrendr-temporele segmentatie van een jaarlijkse beeldreeks (zoals ArcGIS Analyze Changes Using LandTrendr): ontpieken, gretige stuksgewijs-lineaire fitting op basis van hoekpunten, en extractie van de grootste verstoring (jaar, magnitude, duur) per pixel. De veranderingsgeschiedenissegmentatie per pixel die de tweedatums-change_vector_analysis en de enkeltrend-generate_trend_raster niet kunnen doen.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Door komma's gescheiden paden van jaarlijkse rasters in chronologische volgorde (bijv. NBR-uitvoer van spectral_index; >= 4)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerraster: het jaar van de grootste verstoring per pixel. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "years": {
                "label": "Jaren",
                "description": "Door komma's gescheiden jaren die overeenkomen met 'inputs' (standaard 0,1,2,...)."
              },
              "magnitude_output": {
                "label": "Magnitude-uitvoer",
                "description": "Optioneel raster met de omvang van de verstoring (verandering van de index)."
              },
              "duration_output": {
                "label": "Duuruitvoer",
                "description": "Optioneel raster met de duur van de verstoring (jaren)."
              },
              "direction": {
                "label": "Richting",
                "description": "Richting van de verstoring in de index: 'loss' (een daling; standaard) of 'gain' (een stijging)."
              },
              "max_segments": {
                "label": "Maximaal aantal segmenten",
                "description": "Maximaal aantal segmenten (standaard 6)."
              },
              "spike_threshold": {
                "label": "Piekdrempel",
                "description": "Sterkte van de piekverwijdering 0..1 (fractie van het bereik van de reeks; standaard 0.75; 1 schakelt uit)."
              },
              "min_valid": {
                "label": "Minimaal aantal geldige",
                "description": "Minimaal aantal geldige waarnemingen per pixel (standaard 4)."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die uit elke invoer wordt gelezen (standaard 1)."
              }
            }
          },
          "las_height_metrics": {
            "name": "LAS-hoogtematen",
            "description": "Rasteriseert kroonhoogtematen per cel uit lidar-hoogten (zoals ArcGIS LAS Height Metrics): gemiddelde, std, scheefheid, kurtosis, MAD en hoogtepercentielen als een multibandraster — de bosbouwkundige momenten-/percentielsuite die de meegeleverde height_above_ground en lidar_point_stats niet in één doorgang leveren.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "LAS/LAZ-invoerpuntenwolk met hoogtes boven het maaiveld (normaliseer deze eerst met height_above_ground)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het multiband-raster. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "metrics": {
                "label": "Maten",
                "description": "Door komma's gescheiden deelverzameling van mean,std,skewness,kurtosis,mad (standaard 'mean,std,skewness,kurtosis,mad')."
              },
              "height_percentiles": {
                "label": "Hoogtepercentielen",
                "description": "Door komma's gescheiden percentielen in [0,100], bijv. '50,95,99' (standaard '50,95,99'; leeg voor geen)."
              },
              "min_height": {
                "label": "Minimale hoogte",
                "description": "Sluit punten met een hoogte hieronder uit (afkapwaarde voor grond/ruis). Standaard 0."
              },
              "min_points": {
                "label": "Minimaal aantal punten",
                "description": "Cellen met minder geldige punten worden no-data. Standaard 4."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Uitvoercelgrootte in CRS-eenheden. Standaard 10."
              }
            }
          },
          "less_than_or_equal_to": {
            "name": "Kleiner dan of gelijk aan",
            "description": "Toetst cel voor cel of het eerste raster kleiner dan of gelijk aan het tweede is.",
            "params": {
              "input1": {
                "label": "Invoer1",
                "description": "Eerste invoerraster (padtekenreeks of getypeerd rasterobject)."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Tweede invoerraster (padtekenreeks of getypeerd rasterobject)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel pad naar het uitvoerrasterbestand. Indien weggelaten, blijft de uitvoer in het geheugen en wordt deze geretourneerd als een memory://-rasterhandle."
              }
            }
          },
          "line_density": {
            "name": "Lijndichtheid",
            "description": "Dichtheid van lijnobjecten (lengte per oppervlakte-eenheid) in een cirkelvormige omgeving rond elke rastercel — weg-, waterloop- of breukdichtheid — door elk lijnsegment uit te snijden op de zoekstraalcirkel (gesloten vorm) en de gesommeerde gewogen lengte te delen door pi*r^2. Zoals ArcGIS Line Density; de vectorlijn-tegenhanger die de meegeleverde, uitsluitend puntgebaseerde heat_map en de categorische edge_density missen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met polylijnen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het dichtheidsraster (driver uit de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "weight_field": {
                "label": "Gewichtsveld",
                "description": "Numeriek veld dat elke lijn weegt (bijv. rijstroken, verkeer, bevolking). Standaard: elke lijn gewicht 1."
              },
              "search_radius": {
                "label": "Zoekstraal",
                "description": "Omgevingsstraal (meters voor een geografisch CRS, anders CRS-eenheden). Standaard: de kortste zijde van de omvang / 25."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Uitvoercelgrootte (dezelfde eenheden als search_radius). Standaard: search_radius / 10."
              },
              "area_units": {
                "label": "Oppervlakte-eenheden",
                "description": "Oppervlakte-eenheid van de dichtheidswaarden: 'square_map_units' (standaard), 'square_meters', 'square_kilometers', 'square_miles' of 'square_feet'."
              }
            }
          },
          "line_of_sight": {
            "name": "Zichtlijn",
            "description": "Punt-tot-punt-zichtbaarheid over een DEM: geeft voor elk waarnemer-doelpaar de zichtlijn gesplitst in zichtbare en geblokkeerde segmenten plus een doel-zichtbaar-vlag, zoals ArcGIS Line Of Sight.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoerhoogteraster (geprojecteerd CRS; afstanden/hoogtes in de eenheden daarvan)."
              },
              "observers": {
                "label": "Waarnemers",
                "description": "Vectorlaag met waarnemerpunten."
              },
              "targets": {
                "label": "Doelen",
                "description": "Vectorlaag met doelpunten."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de lijnvector (driver uit de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "observer_offset": {
                "label": "Waarnemeroffset",
                "description": "Hoogte van de waarnemer boven het maaiveld, in DEM-eenheden (standaard 1.75)."
              },
              "target_offset": {
                "label": "Doeloffset",
                "description": "Hoogte van het doel boven het maaiveld, in DEM-eenheden (standaard 0)."
              },
              "pair_field": {
                "label": "Paarveld",
                "description": "Optioneel veld dat op beide lagen aanwezig is; waarnemers en doelen worden gekoppeld waar dit veld overeenkomt (in plaats van allen-met-allen)."
              },
              "band": {
                "label": "Band",
                "description": "Te bemonsteren DEM-band (standaard 1)."
              }
            }
          },
          "line_statistics": {
            "name": "Lijnstatistieken",
            "description": "Rasteriseert een omgevingsstatistiek van een lijnattribuut (gemiddelde, meerderheid, mediaan, min/max, bereik, variëteit of totale lengte) door elk segment uit te snijden op de zoekstraalcirkel en de waarden naar lengte te wegen — zoals ArcGIS Line Statistics; de attribuutoppervlak-aanvulling op line_density die de meegeleverde suite mist.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met polylijnen."
              },
              "field": {
                "label": "Veld",
                "description": "Samen te vatten numeriek veld. Vereist voor elke statistiek behalve 'length'."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad (driver uit de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "statistic": {
                "label": "Statistiek",
                "description": "'mean' (standaard), 'majority', 'maximum', 'median', 'minimum', 'minority', 'range', 'variety' of 'length'."
              },
              "search_radius": {
                "label": "Zoekstraal",
                "description": "Omgevingsstraal in CRS-eenheden. Standaard: de kortste zijde van de omvang / 25."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Uitvoercelgrootte in CRS-eenheden. Standaard: search_radius / 10."
              }
            }
          },
          "local_bivariate_relationships": {
            "name": "Lokale bivariate relaties",
            "description": "Classificeert voor elk object hoe twee variabelen zich in zijn lokale omgeving verhouden (niet significant, positief/negatief lineair, concaaf, convex, ongedefinieerd) uit lokale lineaire en kwadratische fits, een entropiereductie-afhankelijkheidsstatistiek en een geseede permutatietoets-p-waarde — zoals ArcGIS Local Bivariate Relationships.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met punten die de twee variabelevelden bevat."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector (een kopie van de invoer met relatievelden). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "field1": {
                "label": "Veld1",
                "description": "Naam van het veld van de eerste (verklarende) variabele."
              },
              "field2": {
                "label": "Veld2",
                "description": "Naam van het veld van de tweede (afhankelijke) variabele."
              },
              "neighbors": {
                "label": "Buren",
                "description": "Aantal dichtstbijzijnde buren k dat elk lokaal monster bepaalt (standaard 12; moet >= 5 zijn)."
              },
              "permutations": {
                "label": "Permutaties",
                "description": "Aantal permutaties voor de significantietoets (standaard 199; 0 schakelt deze uit)."
              },
              "significance": {
                "label": "Significantie",
                "description": "Drempelwaarde voor de pseudo-p-waarde waarbij een relatie significant wordt genoemd (standaard 0.05)."
              },
              "seed": {
                "label": "Seed",
                "description": "Zaad voor de permutatie-RNG (standaard 1), voor reproduceerbare resultaten."
              }
            }
          },
          "local_outlier_analysis": {
            "name": "Lokale uitschieteranalyse",
            "description": "Ruimte-tijd lokale uitschieteranalyse (Anselin's lokale Moran's I op een H3-ruimte-tijdkubus): classificeert elke cel x tijdbin als Hoog-Hoog/Laag-Laag-cluster of Hoog-Laag/Laag-Hoog-uitschieter met een geseede permutatie-p-waarde en vat vervolgens per cel samen over de tijd — zoals ArcGIS Local Outlier Analysis. De ruimte-tijduitbreiding van de meegeleverde, uitsluitend ruimtelijke local_morans_i_lisa.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerpuntlaag met gebeurtenissen met tijdstempels (lon/lat)."
              },
              "time_field": {
                "label": "Tijdveld",
                "description": "Veld dat de tijd van elk punt bevat: een getal of een ISO-8601-tijdstempel."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoer-H3-polygoonlaag met de samenvatting. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "value_field": {
                "label": "Waardeveld",
                "description": "Numeriek veld dat per bin wordt geaggregeerd (standaard: het aantal punten)."
              },
              "time_step": {
                "label": "Tijdstap",
                "description": "Breedte van een tijdstap in de eenheden van time_field (standaard 1)."
              },
              "resolution": {
                "label": "Resolutie",
                "description": "H3-resolutie 0..15 (standaard 7)."
              },
              "kring": {
                "label": "K-ring",
                "description": "Straal van de k-ring voor de ruimtelijke omgeving (standaard 1)."
              },
              "time_window": {
                "label": "Tijdvenster",
                "description": "Halve breedte van de temporele omgeving in stappen (standaard 1)."
              },
              "permutations": {
                "label": "Permutaties",
                "description": "Aantal permutaties voor de significantietoets (standaard 99; 0 schakelt deze uit)."
              },
              "seed": {
                "label": "Seed",
                "description": "Zaad voor de permutatie-RNG (standaard 1)."
              }
            }
          },
          "local_polynomial_interpolation": {
            "name": "Lokale polynoominterpolatie",
            "description": "Fit een polynoom van orde 1/2/3 binnen een kernelgewogen bewegende omgeving op elke cel, wat een voorspellingsoppervlak, een oppervlak met de standaardfout van de voorspelling of een conditiegetaloppervlak oplevert. Anders dan de meegeleverde globale trend_surface wordt de polynoom lokaal opnieuw gefit. Zoals ArcGIS Local Polynomial Interpolation.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerpuntobjecten die de te interpoleren waarde dragen."
              },
              "z_field": {
                "label": "Z-veld",
                "description": "Numeriek veld dat de te interpoleren waarde bevat."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Uitvoercelgrootte in kaarteenheden (standaard: omvang van de invoer / 200)."
              },
              "order": {
                "label": "Orde",
                "description": "Polynoomorde: 1 (standaard), 2 of 3."
              },
              "kernel": {
                "label": "Kernel",
                "description": "'exponential' (standaard), 'gaussian', 'quartic', 'epanechnikov', 'fifth_order' of 'constant'."
              },
              "bandwidth": {
                "label": "Bandbreedte",
                "description": "Vaste kernelbandbreedte in kaarteenheden. Indien weggelaten, wordt een adaptieve bandbreedte gebruikt: de afstand tot het 'neighbors'-de dichtstbijzijnde monster."
              },
              "neighbors": {
                "label": "Buren",
                "description": "Aantal monsters per lokale fit voor de adaptieve bandbreedte (standaard: 3x het aantal polynoomtermen)."
              },
              "weight_field": {
                "label": "Gewichtsveld",
                "description": "Optioneel veld met het meetgewicht per waarneming."
              },
              "condition_number": {
                "label": "Conditiegetal",
                "description": "Weigert te voorspellen waar het conditiegetal van de lokale ontwerpmatrix deze drempelwaarde overschrijdt (standaard: geen limiet)."
              },
              "output_type": {
                "label": "Uitvoertype",
                "description": "'prediction' (standaard), 'standard_error' of 'condition_number'."
              },
              "epsg": {
                "label": "EPSG",
                "description": "EPSG-code die op het uitvoerraster wordt gezet (standaard: het CRS van de invoerlaag)."
              }
            }
          },
          "locate_lines_along_routes": {
            "name": "Lijnen lokaliseren langs routes",
            "description": "Overlayt lijn- of polygoonobjecten op gemeten routes om van/tot-maat-lijngebeurtenissen (RID, FMEAS, TMEAS) te produceren, zoals ArcGIS Locate Features Along Routes (lijn-/polygoongebeurtenissen).",
            "params": {
              "input_features": {
                "label": "Invoerobjecten",
                "description": "Invoervectorlaag met lijnen of polygonen die langs de routes wordt gelokaliseerd."
              },
              "routes": {
                "label": "Routes",
                "description": "Vectorlaag met routes (lijnen) die de maten voor de lineaire referentie levert."
              },
              "route_id_field": {
                "label": "Route-ID-veld",
                "description": "Veld op de routelaag dat de identificatie (RID) van elke route bevat. Indien weggelaten, wordt de 0-gebaseerde objectindex van de route gebruikt."
              },
              "tolerance": {
                "label": "Tolerantie",
                "description": "Zoekradius in CRS-eenheden. Een hoekpunt van een object binnen deze afstand van een route wordt als samenvallend behandeld. Vereist (> 0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector met lijngebeurtenissen (driver uit de extensie). Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              }
            }
          },
          "locate_regions": {
            "name": "Regio's lokaliseren",
            "description": "Vindt de beste aaneengesloten regio('s) van een doeloppervlakte uit een geschiktheidsraster (zoals ArcGIS Locate Regions): best-first-regiogroei vanaf geschiktheidspieken met een vorm-/compactheidsbeheersing en onderlinge regioafstand — de locatiekeuzestap die een fuzzy_overlay/weighted_overlay-oppervlak omzet in daadwerkelijke regio's, wat clump en drempelbepaling niet kunnen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Geschiktheidsraster (hoger = geschikter)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerraster met 1-gebaseerde regio-ID's (elders no-data). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "total_area": {
                "label": "Totale oppervlakte",
                "description": "Totale beoogde oppervlakte over alle regio's, in oppervlakte-eenheden van het CRS (standaard: 5% van de geldige oppervlakte)."
              },
              "num_regions": {
                "label": "Aantal regio's",
                "description": "Aantal te lokaliseren regio's (standaard 1). Elke regio richt zich op total_area / num_regions."
              },
              "shape": {
                "label": "Vorm",
                "description": "Compactheidsgewicht 0..1: 0 = uitsluitend geschiktheid, 1 = sterke voorkeur voor ronde regio's (standaard 0.3)."
              },
              "min_distance": {
                "label": "Minimale afstand",
                "description": "Minimale afstand tussen regio's, in CRS-eenheden (standaard 0)."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die wordt gelezen (standaard 1)."
              }
            }
          },
          "matched_filter_target_detection": {
            "name": "Matched-filter-doeldetectie (CEM/ACE)",
            "description": "Scoort elke pixel van een multibandbeeld tegen een bekend doelspectrum met gebruik van de scènestatistieken om de achtergrond te onderdrukken — Constrained Energy Minimization (CEM) of de Adaptive Coherence Estimator (ACE) — met een optioneel percentieldrempelmasker, zoals ArcGIS Detect Target Using Spectra.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Multiband-invoerraster (2 of meer banden)."
              },
              "target_spectrum": {
                "label": "Doelspectrum",
                "description": "Doelspectrum: één waarde per band, als JSON-array of als door komma's/spaties gescheiden lijst (de lengte moet gelijk zijn aan het aantal banden)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerraster met de detectiescore (F32). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "method": {
                "label": "Methode",
                "description": "'cem' (Constrained Energy Minimization, standaard) of 'ace' (Adaptive Coherence Estimator, scores in 0..1)."
              },
              "threshold": {
                "label": "Drempelwaarde",
                "description": "Optioneel percentiel (0-100) van de scoreverdeling waarboven een binair detectiemasker wordt weggeschreven."
              },
              "mask_output": {
                "label": "Maskeruitvoer",
                "description": "Uitvoerpad voor het binaire detectiemasker (vereist 'threshold'). Indien weggelaten terwijl een drempelwaarde is opgegeven, wordt het in het geheugen opgeslagen."
              }
            }
          },
          "maximum_likelihood_classification": {
            "name": "Maximum-likelihood-classificatie",
            "description": "Gaussiaanse maximum-likelihood-gesuperviseerde classificator: modelleert elke trainingsklasse als een multivariate normale verdeling (gemiddelde + covariantie per klasse), classificeert elke pixel van een multibandbeeld op de grootste gaussiaanse log-likelihood met optionele gelijke/steekproef-a-priori-gewichten, en kan een waarschijnlijkheids-/betrouwbaarheidsraster per pixel uitvoeren en de minst betrouwbare cellen afwijzen, zoals ArcGIS Maximum Likelihood Classification.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Te classificeren multiband-invoerraster (1 of meer banden; elke band is een kenmerk)."
              },
              "training": {
                "label": "Training",
                "description": "Trainingsraster met gehele labels op hetzelfde raster als 'input': elk afzonderlijk positief geheel getal is een klasse; cellen met no-data, niet-positieve of niet-eindige waarden zijn ongelabeld."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Geclassificeerd uitvoerraster met de klasse-ID's uit de training. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "prob_output": {
                "label": "Waarschijnlijkheidsuitvoer",
                "description": "Optioneel F32-uitvoerraster met de posterieure waarschijnlijkheid (betrouwbaarheid) van de winnende klasse in [0,1]."
              },
              "a_priori": {
                "label": "A priori",
                "description": "A-priori klassegewichten: 'equal' (standaard, 1/K) of 'sample' (evenredig met het aantal trainingspixels van elke klasse)."
              },
              "reject_fraction": {
                "label": "Verwerpingsfractie",
                "description": "Fractie in [0,1) van de minst betrouwbaar geclassificeerde cellen die ongeclassificeerd (no-data) blijft. Standaard 0."
              }
            }
          },
          "median_center": {
            "name": "Mediaan centrum",
            "description": "De geometrische mediaan (Weiszfeld-punt dat de gesommeerde, optioneel gewogen, euclidische afstand tot alle invoerpunten minimaliseert) — één robuust centrumpunt per case-groep, met optionele mediaanattributen per veld (ArcGIS Median Center).",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met punten."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorpad (stuurprogramma op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "weight_field": {
                "label": "Gewichtsveld",
                "description": "Optioneel numeriek veld dat de invloed van elk punt op de mediaan weegt."
              },
              "case_field": {
                "label": "Casusveld",
                "description": "Optioneel veld om punten op te groeperen; één mediaan per afzonderlijke waarde."
              },
              "attribute_fields": {
                "label": "Attribuutvelden",
                "description": "Optionele, door komma's gescheiden numerieke velden; de mediaan per groep van elk veld wordt toegevoegd als '<field>_med'."
              }
            }
          },
          "merge_divided_roads": {
            "name": "Gescheiden wegen samenvoegen",
            "description": "Vervangt gematchte paren gescheiden rijbanen door enkele middellijnen met behoud van de kruispuntconnectiviteit, waarbij alleen rijbanen worden gepaard die een samenvoegveld delen en antiparallel lopen binnen een scheidingsafstand, en geeft verplaatsingspolygonen voor propagate_displacement. Zoals ArcGIS Merge Divided Roads.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Objecten met wegassen."
              },
              "merge_field": {
                "label": "Samenvoegveld",
                "description": "Veld waarvan overeenkomende waarden twee lijnen tot kandidaat-rijbaanparen maken (bijv. wegnaam of -klasse)."
              },
              "merge_distance": {
                "label": "Samenvoegafstand",
                "description": "Maximale afstand tussen gekoppelde rijbanen, in kaarteenheden."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de samengevoegde wegassen. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "output_displacement_features": {
                "label": "Verplaatsingsobjecten uitvoeren",
                "description": "Optionele polygonen die tonen waar de geometrie is verplaatst, voor propagate_displacement."
              },
              "character_field": {
                "label": "Tekenveld",
                "description": "Optioneel veld; objecten met een waarde die niet nul en niet leeg is worden van het samenvoegen uitgesloten."
              },
              "output_table": {
                "label": "Uitvoertabel",
                "description": "Optionele herkomsttabel die uitvoerobjecten terugvoert op hun bronobjecten."
              }
            }
          },
          "merge_lines_by_pseudo_node": {
            "name": "Lijnen samenvoegen bij pseudoknoop",
            "description": "Voegt ketens van lijnsegmenten die samenkomen bij pseudoknopen van graad 2 samen tot enkele polylijnen, met behoud van echte kruisingen en (optioneel) attribuutonderbrekingen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerlijnvectorbestand, formaat automatisch gedetecteerd (of een handle in het geheugen)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de vector (driver op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "dissolve_fields": {
                "label": "Samenvoegvelden",
                "description": "Door komma's gescheiden namen van attribuutvelden; twee segmenten worden alleen samengevoegd waar ze op al deze velden overeenkomen. Indien weggelaten, worden segmenten samengevoegd over elk knooppunt van graad 2, ongeacht de attributen."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Eindpunten binnen deze afstand (CRS-eenheden) worden als hetzelfde knooppunt behandeld. Standaard 1e-6."
              }
            }
          },
          "merge_multidimensional_rasters": {
            "name": "Multidimensionale rasters samenvoegen",
            "description": "Voegt meerdere gecoregistreerde rasterkubussen samen tot één, gesorteerd op dimensiecoördinaat, waarbij dubbele coördinaten per cel worden opgelost (ArcGIS Merge Multidimensional Rasters). aggregate_multidimensional_raster reduceert een kubus en composite_bands stapelt enkelbandrasters tot banden, maar niets voegde kubussen samen langs hun gedeelde dimensie.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Door komma's of puntkomma's gescheiden paden van kubussen (multiband-rasters). Ten minste twee."
              },
              "dimension_values": {
                "label": "Dimensiewaarden",
                "description": "Optionele coördinaten per doorsnede die elke doorsnede van elke invoer dekken, in de volgorde van de invoer. Ze hoeven niet gesorteerd of uniek te zijn — dat is juist wat deze tool oplost. Zonder deze coördinaten worden de invoeren in de opgegeven volgorde aaneengeschakeld."
              },
              "dimension": {
                "label": "Dimensie",
                "description": "Naam van de dimensie, alleen gebruikt in de rapportage (standaard 'slice')."
              },
              "resolve_overlap": {
                "label": "Overlap oplossen",
                "description": "Regel bij dubbele coördinaten: 'first' (standaard), 'last', 'mean', 'min', 'max' of 'error'."
              },
              "tolerance": {
                "label": "Tolerantie",
                "description": "Relatieve tolerantie om twee coördinaten als gelijk te behandelen (standaard 1e-9)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerraster met de kubus, één band per samengevoegde doorsnede, in de volgorde van de dimensie. Indien weggelaten, wordt het in het geheugen opgeslagen."
              }
            }
          },
          "mgwr": {
            "name": "Multischaal geografisch gewogen regressie",
            "description": "GWR waarbij elke verklarende term een eigen bandbreedte krijgt via AICc-backfitting (MGWR): coëfficiënten per object, lokale R2, residuen, conditiegetal, plus de optimale bandbreedte van elke term met een lokale/regionale/globale interpretatie en globale AICc-/R2-diagnostiek.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlaag met objecten (punten, of andere geometrieën via hun representatieve punt)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de vector (driver op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "dependent_field": {
                "label": "Afhankelijk veld",
                "description": "Numeriek veld met de afhankelijke variabele (respons)."
              },
              "explanatory_fields": {
                "label": "Verklarende velden",
                "description": "Door komma's gescheiden verklarende numerieke veld(en), elk gefit met een eigen bandbreedte."
              },
              "kernel": {
                "label": "Kernel",
                "description": "Kernel voor afstandsafname: 'gaussian' (standaard) of 'bisquare'."
              },
              "bandwidth_type": {
                "label": "Bandbreedtetype",
                "description": "'adaptive' (standaard; bandbreedte = k dichtstbijzijnde buren) of 'fixed' (bandbreedte = een afstand). Geldt voor de bandbreedtezoektocht van elke term afzonderlijk."
              },
              "tolerance": {
                "label": "Tolerantie",
                "description": "Convergentietolerantie van de back-fitting: stoppen wanneer de relatieve verandering in de RSS tussen doorlopen hieronder zakt (standaard 0.001)."
              },
              "max_iterations": {
                "label": "Maximaal aantal iteraties",
                "description": "Maximaal aantal back-fitting-doorlopen over alle termen (standaard 30)."
              }
            }
          },
          "minimum_bounding_volume": {
            "name": "Minimaal omsluitend volume",
            "description": "Berekent het minimaal omsluitende volume (convexe omhullende, bol of envelop) rond 3D-objecten, per object, per groep of over alle invoer, en geeft het volume als driehoekige vlakken met Z-waarden en attributen voor volume en oppervlakte. Zoals ArcGIS Minimum Bounding Volume.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerobjecten met 3D-punten, multipunten of lijnen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad voor de vlakken van het volume. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "z_value": {
                "label": "Z-waarde",
                "description": "'geometry' (standaard) om Z uit de geometrie te nemen, of de naam van een numeriek veld dat Z levert."
              },
              "geometry_type": {
                "label": "Geometrietype",
                "description": "'convex_hull' (standaard), 'sphere' of 'envelope'. ('concave_hull' is in deze versie niet geïmplementeerd.)"
              },
              "group_option": {
                "label": "Groepeeroptie",
                "description": "'none' (één volume per object, standaard), 'all' (één volume over de hele invoer) of 'list' (één per waarde van 'group_field')."
              },
              "group_field": {
                "label": "Groepeerveld",
                "description": "Veld dat de groepen bepaalt wanneer 'group_option' gelijk is aan 'list'."
              },
              "mbv_fields": {
                "label": "MBV-velden",
                "description": "Voegt de velden MBV_VOLUME en MBV_AREA toe (standaard false)."
              }
            }
          },
          "multicriteria_overlay": {
            "name": "Multicriteria-overlay",
            "description": "Combineert een stapel criteriumrasters tot één geschiktheidsoppervlak met ranggebaseerde MCDA: weighted_sum, weighted_geometric_mean, OWA (ordered weighted averaging) of TOPSIS (nabijheid tot het ideale punt), met gewichten per raster en from_scale/to_scale-herschaling, zoals ArcGIS Multicriteria Overlay.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Door komma's gescheiden lijst van ≥2 gecoregistreerde criteriumrasters (een hogere waarde = geschikter; elk raster wordt vóór de combinatie met min-max naar 0..1 geschaald)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              },
              "method": {
                "label": "Methode",
                "description": "Combinatiemethode: 'weighted_sum' (standaard), 'weighted_geometric_mean', 'owa', 'topsis'."
              },
              "weights": {
                "label": "Gewichten",
                "description": "Door komma's gescheiden belanggewichten per raster, één per invoer (standaard gelijk). Worden genormaliseerd tot een som van 1."
              },
              "order_weights": {
                "label": "Ordegewichten",
                "description": "Alleen voor OWA: door komma's gescheiden ordegewichten, één per invoer, toegepast op de per cel van hoog naar laag gesorteerde criteria (standaard gelijk, waardoor OWA gelijk is aan het gewogen gemiddelde). Worden genormaliseerd tot een som van 1."
              },
              "from_scale": {
                "label": "Van schaal",
                "description": "Ondergrens van de evaluatieschaal van de uitvoer (standaard 0)."
              },
              "to_scale": {
                "label": "Naar schaal",
                "description": "Bovengrens van de evaluatieschaal van de uitvoer (standaard 1)."
              }
            }
          },
          "multidimensional_anomaly": {
            "name": "Multidimensionale anomalie genereren",
            "description": "Temporele anomaliekubus per plak uit een rastertijdstapel (zoals ArcGIS Generate Multidimensional Anomaly): berekent voor elke pixel een temporele basislijn (gemiddelde/std of mediaan over de plakdimensie) en herschrijft elke tijdplak als zijn afwijking van die basislijn — verschil met gemiddelde, percentage van gemiddelde, z-score of verschil met mediaan — en geeft een anomaliestapel met één plak per invoerplak.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Eén multiband-raster (elke band is een tijddoorsnede) of een door komma's gescheiden lijst van gecoregistreerde rasters, in chronologische volgorde."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Multiband-uitvoerraster met anomalieën (één band per invoerdoorsnede). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "method": {
                "label": "Methode",
                "description": "Anomalieberekening: 'difference_from_mean' (standaard), 'percent_of_mean', 'z_score' of 'difference_from_median'."
              },
              "reference_range": {
                "label": "Referentiebereik",
                "description": "Optioneel 1-gebaseerd, inclusief doorsnedebereik 'start-end' dat wordt gebruikt om de basislijn per pixel te berekenen (standaard: alle doorsneden)."
              },
              "min_valid": {
                "label": "Minimaal aantal geldige",
                "description": "Minimaal aantal waarnemingen zonder no-data per pixel binnen het referentiebereik (standaard 1); daaronder wordt de pixel no-data."
              }
            }
          },
          "multidimensional_principal_components": {
            "name": "Multidimensionale hoofdcomponenten",
            "description": "Ontleedt een rasterkubus in de weinige werkelijke modi die ten grondslag liggen aan een lange tijdreeks, en geeft componentrasters, ladingen en eigenwaarden, in dimensiereductie- of ruimtelijke-reductievorm (ArcGIS Multidimensional Principal Components). De meegeleverde principal_component_analysis ontleedt de bandruimte binnen één scène, zodat de componenten spectrale banden mengen in plaats van tijd; dimension_reduction werkt op vectorattribuuttabellen. Beide reducties komen uit één covariantie in de plakruimte, omdat het equivalent in de pixelruimte miljoenen rijen in het kwadraat zou zijn.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Eén multiband-raster (elke band is een slice) of een kommagescheiden lijst met co-geregistreerde rasters."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Multiband-uitvoerraster: componentscores voor 'dimension_reduction', componentladingen voor 'spatial_reduction'. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "output_loadings": {
                "label": "Ladingen uitvoeren",
                "description": "Uitvoertabel met de ladingen per doorsnede (of de componentreeksen per doorsnede bij 'spatial_reduction'). Wordt altijd gemaakt; wordt in het geheugen opgeslagen wanneer geen pad is opgegeven."
              },
              "output_eigenvalues": {
                "label": "Eigenwaarden uitvoeren",
                "description": "Uitvoertabel met de eigenwaarden en de variantie die elk ervan verklaart. Wordt altijd gemaakt; wordt in het geheugen opgeslagen wanneer geen pad is opgegeven."
              },
              "mode": {
                "label": "Modus",
                "description": "'dimension_reduction' (standaard; componenten zijn ruimtelijke patronen) of 'spatial_reduction' (componenten zijn reeksen over de dimensie)."
              },
              "dimension": {
                "label": "Dimensie",
                "description": "Naam van de dimensie, alleen gebruikt in het rapport (standaard 'slice')."
              },
              "dimension_values": {
                "label": "Dimensiewaarden",
                "description": "Kommagescheiden coördinaat van elke slice, strikt oplopend. Standaard de 1-gebaseerde slice-index."
              },
              "number_of_pc": {
                "label": "Aantal PC's",
                "description": "Hoeveel componenten worden behouden (standaard: alle doorsneden)."
              },
              "correlation": {
                "label": "Correlatie",
                "description": "Ontbindt de correlatiematrix in plaats van de covariantiematrix (standaard false). Gebruik dit wanneer de doorsneden op verschillende schalen liggen."
              }
            }
          },
          "multidimensional_raster_correlation": {
            "name": "Multidimensionale rastercorrelatie",
            "description": "Correleert twee rasterkubussen cel voor cel langs hun gedeelde dimensie en produceert een kaart van Pearson-, Spearman- of Kendall-coëfficiënten en — in kruiscorrelatiemodus — de lag waarbij de associatie van elke cel piekt (ArcGIS Multidimensional Raster Correlation). Niets in beide registers brengt dit in kaart: image_correlation reduceert een beeldpaar tot één scalar, time_series_cross_correlation uit ronde 17 is uitsluitend voor vectoren, attribute_correlation is een tabelbewerking, en bivariate_spatial_association vergelijkt twee enkelbandrasters zonder tijdas.",
            "params": {
              "input1": {
                "label": "Invoer1",
                "description": "Eerste kubus: één multiband-raster (elke band een doorsnede) of een door komma's gescheiden lijst van gecoregistreerde rasters."
              },
              "input2": {
                "label": "Invoer2",
                "description": "Tweede kubus, gecoregistreerd met de eerste en met hetzelfde aantal doorsneden."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerraster met de correlatie in [-1, 1]. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "output_lag": {
                "label": "Lag uitvoeren",
                "description": "Uitvoerraster met de beste lag per cel (modus kruiscorrelatie); anders overal de vaste lag. Wordt altijd gemaakt; wordt in het geheugen opgeslagen wanneer geen pad is opgegeven."
              },
              "output_count": {
                "label": "Aantal uitvoeren",
                "description": "Uitvoerraster met het aantal gepaarde monsters achter elke coëfficiënt. Wordt altijd gemaakt; wordt in het geheugen opgeslagen wanneer geen pad is opgegeven."
              },
              "method": {
                "label": "Methode",
                "description": "'pearson' (standaard), 'spearman' of 'kendall'."
              },
              "lag": {
                "label": "Lag",
                "description": "Vast aantal doorsneden waarmee de tweede kubus vóór het paren vooruit wordt geschoven (standaard 0). Wordt genegeerd in de modus kruiscorrelatie."
              },
              "cross_correlation": {
                "label": "Kruiscorrelatie",
                "description": "Doorzoekt elke lag in -max_lag..=max_lag en behoudt de sterkste coëfficiënt (standaard false)."
              },
              "max_lag": {
                "label": "Maximale lag",
                "description": "Halve breedte van de lagzoektocht in doorsneden (standaard 3). Alleen in de modus kruiscorrelatie."
              },
              "use_absolute": {
                "label": "Absolute waarde gebruiken",
                "description": "Rangschikt in de modus kruiscorrelatie de lags op absolute correlatie, zodat een sterk negatief verband wint (standaard true)."
              },
              "min_valid": {
                "label": "Minimaal aantal geldige",
                "description": "Minimaal aantal gepaarde monsters voordat een coëfficiënt wordt weggeschreven (standaard 3)."
              }
            }
          },
          "multilook": {
            "name": "Multilook",
            "description": "Vermindert SAR-speckle door aangrenzende looks in range en azimut incoherent te middelen, wat intensiteitsbeelden met vierkante pixels oplevert (ArcGIS Multilook). Geen van beide registers levert een SAR-tool; de meegeleverde lee_filter-familie werkt op reeds gedetecteerde intensiteit, dus dit levert de voorafgaande stap die complexe single-look-gegevens omzet in de gedetecteerde beelden die die filters verwachten. Complexe invoer wordt gelezen als een tweebands I/Q-paar; detectie vindt plaats vóór het middelen, en het equivalente aantal looks wordt gerapporteerd voor verdere specklefiltering.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "SAR-invoerraster: een tweebands I/Q-paar voor complexe (SLC-)gegevens, of één band met reeds gedetecteerde gegevens (zie 'input_domain')."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              },
              "input_domain": {
                "label": "Invoerdomein",
                "description": "Wat band 1 bij niet-complexe invoer al bevat: 'intensity' (standaard) of 'amplitude'. Amplitude wordt vóór het middelen gekwadrateerd naar intensiteit, omdat incoherent middelen alleen in het intensiteitsdomein correct is."
              },
              "complex": {
                "label": "Complex",
                "description": "Behandelt de invoer als een complex I/Q-paar (standaard: true wanneer het raster 2 of meer banden heeft, anders false)."
              },
              "range_looks": {
                "label": "Range-looks",
                "description": "Aantal looks in bereikrichting (x). Standaard 1, of afgeleid wanneer auto_looks is ingesteld."
              },
              "azimuth_looks": {
                "label": "Azimut-looks",
                "description": "Aantal looks in azimutrichting (y). Standaard 1, of afgeleid wanneer auto_looks is ingesteld."
              },
              "auto_looks": {
                "label": "Automatische looks",
                "description": "Indien true (standaard) en de looks niet expliciet zijn opgegeven, worden ze afgeleid uit de verhouding van de pixelafstanden, zodat de uitvoerpixels op de grond ongeveer vierkant zijn."
              },
              "output_units": {
                "label": "Uitvoereenheden",
                "description": "amplitude, intensity (standaard) of db."
              },
              "statistic": {
                "label": "Statistiek",
                "description": "mean (standaard) of median; median is robuuster waar sterke verstrooiers een look-venster domineren."
              }
            }
          },
          "multipatch_footprint": {
            "name": "Multipatch-omtrek",
            "description": "Projecteert 3D-multipatch-objecten op het XY-vlak en voegt ze samen tot 2D-omtrekpolygonen, één per object of per groepsveld (ArcGIS Multipatch Footprint). layer_footprint_vector geeft één extentrechthoek voor een hele laag, geen omtrekken per object, dus er is momenteel geen manier om buffer_3d / voxel_isosurface / geïmporteerde gebouwvolumes in de regularize_building_footprints-pijplijn in te voeren.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "3D-multipatch-objecten (MultiPolygons als driehoeksmesh met Z)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoer met 2D-polygoongrondvlakken. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "group_field": {
                "label": "Groepeerveld",
                "description": "Optioneel veld waarvan de waarden grondvlakken samenvoegen (één uitvoerpolygoon per afzonderlijke waarde). Standaard: één uitvoer per invoerobject."
              },
              "simplify_tolerance": {
                "label": "Vereenvoudigingstolerantie",
                "description": "Optionele Douglas-Peucker-tolerantie (CRS-eenheden) die op het samengevoegde grondvlak wordt toegepast. Standaard weggelaten, zodat de ruwe omtrek behouden blijft voor regularize_building_footprints."
              }
            }
          },
          "multipatch_to_mesh": {
            "name": "Multipatch naar mesh",
            "description": "Exporteert multipatch- en 3D-volumegeometrie naar OBJ of glTF 2.0 / GLB voor elke 3D- of webviewer (ArcGIS Multipatch To Collada). De union_3d / difference_3d / enclose_multipatch / voxel_isosurface-suite had helemaal geen exportpad — nergens in het register bestond een meshformaat — dus 3D-resultaten konden alleen door deze catalogus zelf worden teruggelezen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Laag met multipatch- / 3D-polygonen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Pad van het uitvoerbestand .glb, .gltf of .obj. De extensie bepaalt het formaat, tenzij 'format' is opgegeven."
              },
              "format": {
                "label": "Formaat",
                "description": "'glb' (standaard voor .glb), 'gltf' (JSON met een ingebedde base64-buffer) of 'obj'. De standaardwaarde volgt uit de uitvoerextensie."
              },
              "origin": {
                "label": "Oorsprong",
                "description": "Verschuiving naar een lokale oorsprong: 'centroid' (standaard), 'min_corner' of 'none'. Nodig voor de precisie — glTF-posities zijn 32-bits floats."
              },
              "y_up": {
                "label": "Y omhoog",
                "description": "Schakelt van de geospatiale Z-omhoog-conventie naar de Y-omhoog-conventie van glTF (standaard true voor glTF/GLB, false voor OBJ)."
              },
              "name_field": {
                "label": "Naamveld",
                "description": "Attribuut dat de mesh van elk object in de uitvoer benoemt."
              }
            }
          },
          "multiple_ring_buffer": {
            "name": "Buffer met meerdere ringen",
            "description": "Buffert objecten op een lijst van afstanden tot concentrische banden — geneste schijven of niet-overlappende ringen — optioneel samengevoegd per afstand, met de bandafstand opgeslagen als attribuut.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag (punten, lijnen of polygonen), formaat automatisch gedetecteerd (of een handle in het geheugen)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de vector (driver op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "distances": {
                "label": "Afstanden",
                "description": "Door komma's gescheiden lijst met bufferafstanden in CRS-eenheden, bijv. \"100,250,500\". Wordt oplopend gesorteerd; duplicaten en niet-positieve waarden worden weggelaten."
              },
              "ring_type": {
                "label": "Ringtype",
                "description": "'rings' (standaard) voor niet-overlappende ringvormige banden, of 'disks' voor geneste cumulatieve buffers."
              },
              "dissolve": {
                "label": "Samenvoegen (dissolve)",
                "description": "'none' (standaard) behoudt één band per bronobject; 'per_ring' voegt de banden van alle objecten per afstand samen tot één polygoon."
              },
              "distance_field": {
                "label": "Afstandsveld",
                "description": "Naam van het uitvoerattribuut dat de afstand van elke band bevat. Standaard 'distance'."
              }
            }
          },
          "multitemporal_coherence": {
            "name": "Multitemporele coherentie",
            "description": "Berekent interferometrische coherentie over een stapel gecoregistreerde SAR-opnamen en reduceert deze tot gemiddelde/min/max/std en temporele-decorrelatiehelling, met optioneel de coherentiekubus per paar (ArcGIS Generate Multitemporal Coherence). sar_coherence verwerkt precies twee scènes, zodat de selectie van persistent scatterers en de timing van coherentieverandering buiten bereik waren.",
            "params": {
              "inputs": {
                "label": "Invoeren",
                "description": "Door komma's of puntkomma's gescheiden gecoregistreerde complexe SLC-rasters (elk twee banden: eerst I, dan Q). Ten minste twee."
              },
              "dates": {
                "label": "Datums",
                "description": "Optionele opnametijden, één per invoer, als getallen in consistente eenheden (bijv. dagen). Vereist door de statistiek 'decorrelation_slope'."
              },
              "pairs": {
                "label": "Paren",
                "description": "'consecutive' (standaard, i met i+1), 'all' (elk ongeordend paar) of 'reference' (elke scène tegen reference_index)."
              },
              "reference_index": {
                "label": "Referentie-index",
                "description": "0-gebaseerde index van de referentiescène voor pairs='reference' (standaard 0)."
              },
              "window_size": {
                "label": "Venstergrootte",
                "description": "Schattingsvenster in cellen; één waarde of 'range,azimuth' (standaard 5). Even waarden worden naar boven afgerond op een oneven waarde."
              },
              "bias_correction": {
                "label": "Biascorrectie",
                "description": "Past de correctie voor de coherentievertekening bij kleine steekproeven toe (standaard true)."
              },
              "statistics": {
                "label": "Statistieken",
                "description": "Door komma's gescheiden: 'mean' (standaard), 'min', 'max', 'std', 'decorrelation_slope'. Eén uitvoerband per statistiek, in deze volgorde."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerraster, één band per gevraagde statistiek. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "output_pairs": {
                "label": "Paren uitvoeren",
                "description": "Optioneel raster dat de coherentiekubus per paar ontvangt, één band per paar."
              }
            }
          },
          "multivariate_clustering": {
            "name": "Multivariate clustering",
            "description": "Clustert vectorobjecten op de gelijkenis van hun gestandaardiseerde attribuutwaarden (geseede k-means of k-medoids), waarbij het aantal clusters automatisch wordt gekozen via Calinski-Harabasz-pseudo-F als het niet is opgegeven, zoals ArcGIS Multivariate Clustering.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag, formaat automatisch gedetecteerd (of een handle in het geheugen)."
              },
              "fields": {
                "label": "Velden",
                "description": "Door komma's gescheiden numerieke analysevelden (de attribuutruimte waarop wordt geclusterd)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector (een kopie van de invoer met cluster_id/silhouette). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "num_clusters": {
                "label": "Aantal clusters",
                "description": "Aantal clusters k. Laat dit weg of geef 0 op om k = 2..15 automatisch te evalueren met de pseudo-F van Calinski-Harabasz."
              },
              "method": {
                "label": "Methode",
                "description": "Clustermethode: 'kmeans' (standaard) of 'kmedoids' (PAM; geschikt voor kleinere aantallen objecten)."
              },
              "seed": {
                "label": "Seed",
                "description": "Willekeurig zaad voor de deterministische initialisatie met k-means++ / medoïden (standaard 1)."
              }
            }
          },
          "near_3d": {
            "name": "3D-nabijheid",
            "description": "Vindt het dichtstbijzijnde object in ware 3D-afstand en rapporteert afstand, de dichtstbijzijnde locatie, hoeken en delta's per as, zoals ArcGIS Near 3D.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerobjectlaag (3D-hoekpunten; een ontbrekende Z wordt als 0 behandeld)."
              },
              "near_features": {
                "label": "Nabije objecten",
                "description": "Door komma's gescheiden lijst met lagen waarin wordt gezocht. Laat dit weg om de invoerlaag met zichzelf te koppelen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              },
              "search_radius": {
                "label": "Zoekstraal",
                "description": "Beschouwt alleen nabije objecten binnen deze 3D-afstand (kaarteenheden). Onbeperkt indien weggelaten."
              },
              "location": {
                "label": "Locatie",
                "description": "Voegt de coördinaten van het dichtstbijzijnde punt toe als near_x / near_y / near_z (standaard false)."
              },
              "angle": {
                "label": "Hoek",
                "description": "Voegt de horizontale koershoek (near_bearing, graden vanaf het noorden) en de verticale hoek (near_vert_angle, graden vanaf het horizontale vlak) naar het dichtstbijzijnde punt toe (standaard false)."
              },
              "delta": {
                "label": "Delta",
                "description": "Voegt de verschuivingen per as toe als near_dx / near_dy / near_dz (standaard false)."
              }
            }
          },
          "neighborhood_summary_statistics": {
            "name": "Samenvattende omgevingsstatistieken",
            "description": "Vat voor elk object gekozen numerieke velden samen over zijn buren (k naaste, binnen een afstand of contiguïteit via gedeelde rand), en voegt <field>_nbr_mean/median/std/min/max/sum en een burentelling toe, zoals ArcGIS Neighborhood Summary Statistics.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag (punten, lijnen of polygonen)."
              },
              "fields": {
                "label": "Velden",
                "description": "Door komma's gescheiden numerieke velden die over de buren worden samengevat."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector (kopie van de invoer plus kolommen met buurstatistieken). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "neighborhood": {
                "label": "Omgeving",
                "description": "'knn' (standaard), 'distance_band' of 'contiguity' (polygonen die een rand delen)."
              },
              "neighbors": {
                "label": "Buren",
                "description": "k voor knn (standaard 8)."
              },
              "distance": {
                "label": "Afstand",
                "description": "Bandafstand voor distance_band (kaarteenheden)."
              },
              "weights": {
                "label": "Gewichten",
                "description": "'uniform' (standaard) of 'inverse_distance' (weegt het gemiddelde en de standaardafwijking)."
              }
            }
          },
          "non_maximum_suppression": {
            "name": "Non-maximum suppression",
            "description": "Behoudt de detectie met de hoogste betrouwbaarheid in elk overlapcluster en verwijdert lager scorende polygonen waarvan de intersection-over-union een drempelwaarde overschrijdt (zoals ArcGIS Non Maximum Suppression) — de scoregebaseerde deduplicator voor objectdetectie-/OBIA-uitvoer die count_overlapping_features (telt, behoudt alles), resolve_building_conflicts (verplaatst) en find_identical (alleen exact) niet bieden.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerpolygonen met detecties (mogen overlappen)."
              },
              "confidence_score_field": {
                "label": "Veld betrouwbaarheidsscore",
                "description": "Numeriek veld dat de betrouwbaarheid/score van elke detectie bevat; hoger wint."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de polygonen met de overgebleven detecties. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "max_overlap_ratio": {
                "label": "Maximale overlapverhouding",
                "description": "IoU waarboven een detectie met een lagere score wordt onderdrukt (0-1, standaard 0.5)."
              },
              "class_value_field": {
                "label": "Klassewaardeveld",
                "description": "Optioneel veld; alleen detecties van dezelfde klasse onderdrukken elkaar."
              }
            }
          },
          "observer_points": {
            "name": "Waarnemerspunten",
            "description": "Bepaalt welke van maximaal 32 waarnemers elke cel kunnen zien, als een bitmasker per waarnemer, en schrijft het raster met hoogte boven maaiveld dat aangeeft hoeveel een doel moet worden verhoogd om zichtbaar te worden (ArcGIS Observer Points / Viewshed 2 in OBSERVERS-modus). De meegeleverde viewshed geeft alleen een telling van zichtbare stations, waaruit geen van beide antwoorden kan worden afgeleid: een telling van 1 zegt niet welke mast een perceel dekt, en een telling van 0 maakt geen onderscheid tussen twee meter te kort en achter een berg.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerhoogteraster (DEM of DSM)."
              },
              "observers": {
                "label": "Waarnemers",
                "description": "Puntlaag met waarnemerposities, maximaal 32."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerraster met de zichtbaarheid: een bitmasker van waarnemers, of een aantal bij analysis_type 'frequency'. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "output_agl": {
                "label": "AGL uitvoeren",
                "description": "Uitvoerraster met de hoogte boven maaiveld: de hoogte waarop een doel moet worden gebracht om zichtbaar te worden. Wordt altijd gemaakt; wordt in het geheugen opgeslagen wanneer geen pad is opgegeven."
              },
              "output_table": {
                "label": "Uitvoertabel",
                "description": "Uitvoertabel met één rij per waarnemer en de cellen en oppervlakte die deze ziet. Wordt altijd gemaakt; wordt in het geheugen opgeslagen wanneer geen pad is opgegeven."
              },
              "analysis_type": {
                "label": "Analysetype",
                "description": "'observers' (standaard; een bitmasker) of 'frequency' (een aantal, overeenkomstig de meegeleverde viewshed)."
              },
              "observer_offset": {
                "label": "Waarnemeroffset",
                "description": "Hoogte van elke waarnemer boven het oppervlak, in z-eenheden (standaard 2.0)."
              },
              "observer_offset_field": {
                "label": "Veld waarnemeroffset",
                "description": "Attribuut met een hoogte per waarnemer, dat voorrang heeft op 'observer_offset'."
              },
              "target_offset": {
                "label": "Doeloffset",
                "description": "Hoogte van het doel boven het oppervlak, in z-eenheden (standaard 0.0)."
              },
              "max_distance": {
                "label": "Maximale afstand",
                "description": "Negeert cellen die verder dan deze afstand van een waarnemer liggen, in kaarteenheden. Standaard onbeperkt."
              },
              "curvature": {
                "label": "Kromming",
                "description": "Past de correctie voor aardkromming en refractie toe (standaard false, d.w.z. een vlakke aarde)."
              },
              "refractivity_coefficient": {
                "label": "Refractiecoëfficiënt",
                "description": "Atmosferische refractiecoëfficiënt die samen met 'curvature' wordt gebruikt (standaard 0.13)."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band van het hoogteraster (standaard 1)."
              }
            }
          },
          "optics_clustering": {
            "name": "OPTICS-clustering",
            "description": "Multischaal dichtheidsgebaseerde clustering via OPTICS (zoals de OPTICS-optie van ArcGIS Density-based Clustering): bouwt een bereikbaarheidsordening en extraheert clusters van variërende dichtheid met de ξ-steile methode — het multischaal-lid van het DBSCAN/HDBSCAN/OPTICS-trio dat de zelfgeschreven dbscan en hdbscan niet dekken.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met punten (geprojecteerd CRS; afstanden in de eenheden daarvan)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector (een kopie van de invoer met clustervelden). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "min_features_cluster": {
                "label": "Minimaal aantal objecten per cluster",
                "description": "Minimaal aantal punten voor de dichtheidsschatting van de kernafstand en voor het kleinste cluster (>= 2). Standaard 5."
              },
              "search_distance": {
                "label": "Zoekafstand",
                "description": "Optionele maximale bereikbaarheidsafstand (maximale epsilon). Standaard: onbegrensd (alle schalen)."
              },
              "cluster_sensitivity": {
                "label": "Clustergevoeligheid",
                "description": "0-100; hoger detecteert meer en compactere clusters. Wordt afgebeeld op xi = 1 - sensitivity/100. Standaard 95 (xi = 0.05)."
              }
            }
          },
          "optimal_corridor_connections": {
            "name": "Optimale corridorverbindingen",
            "description": "Berekent het netwerk van minimale-kostencorridorpolygonen met vaste breedte dat elke invoerregio optimaal verbindt over een kostenoppervlak, plus de corridormiddellijnen. Anders dan cost_connectivity (lijnen zonder breedte) of corridor (een kostenoppervlak voor één paar) geeft dit kant-en-klare corridorpolygonen voor het hele regionetwerk. Zoals ArcGIS Optimal Corridor Connections.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Te verbinden polygoonobjecten met regio's."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de corridorpolygonen. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "cost_raster": {
                "label": "Kostenraster",
                "description": "Optioneel kostenoppervlak. Zonder dit oppervlak zijn de kosten uniform (euclidisch)."
              },
              "barriers": {
                "label": "Barrières",
                "description": "Optionele polygoonobjecten die als onbegaanbaar worden behandeld."
              },
              "corridor_width": {
                "label": "Corridorbreedte",
                "description": "Corridorbreedte in kaarteenheden (standaard: 10 cellen)."
              },
              "output_lines": {
                "label": "Lijnen uitvoeren",
                "description": "Optioneel pad voor de hartlijnen van de corridors."
              },
              "neighbor_option": {
                "label": "Buuroptie",
                "description": "'spanning_tree' (standaard) behoudt alleen de corridors die nodig zijn om elke regio te verbinden; 'all_pairs' levert een corridor voor elk regiopaar."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Celgrootte voor de analyse wanneer geen kostenraster wordt aangeleverd (standaard: omvang van de regio's / 200)."
              }
            }
          },
          "optimal_interpolation": {
            "name": "Optimale interpolatie",
            "description": "Corrigeert een achtergrondrasterveld met puntwaarnemingen via de analysestap van optimale interpolatie / data-assimilatie x_a = x_b + B Hᵀ (H B Hᵀ + R)⁻¹ (y − H x_b), met een gaussiaanse ruimtelijke correlatie van de gegeven correlatielengte en foutvarianties per waarneming/achtergrond (zoals Optimal Interpolation van ArcGIS). Anders dan IDW/kriging/EBK, die alleen uit punten interpoleren, mengt dit een a-priori rasterveld met waarnemingen en kan het een raster met de analysefoutvariantie uitvoeren.",
            "params": {
              "background": {
                "label": "Achtergrond",
                "description": "Te corrigeren achtergrondrasterveld (a priori)."
              },
              "observations": {
                "label": "Waarnemingen",
                "description": "Puntlaag met waarnemingen."
              },
              "field": {
                "label": "Veld",
                "description": "Numeriek veld op de waarnemingslaag dat de waargenomen waarde bevat."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Gecorrigeerd uitvoerraster (analyse). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "correlation_length": {
                "label": "Correlatielengte",
                "description": "Ruimtelijke correlatielengte L in CRS-eenheden (Gaussisch). Standaard: 5% van de langste zijde van de achtergrond."
              },
              "background_error_variance": {
                "label": "Variantie achtergrondfout",
                "description": "Variantie van de achtergrondfout σ_b² (standaard 1.0). Groter => meer vertrouwen in de waarnemingen."
              },
              "obs_error_variance": {
                "label": "Variantie waarnemingsfout",
                "description": "Variantie van de waarnemingsfout σ_o² (standaard 1.0), gebruikt wanneer geen foutveld per punt is opgegeven. Groter => meer vertrouwen in de achtergrond."
              },
              "error_field": {
                "label": "Foutveld",
                "description": "Optioneel veld op de waarnemingslaag dat de foutvariantie van elk punt geeft (heeft voorrang op obs_error_variance waar het aanwezig en > 0 is)."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde achtergrondband die wordt gecorrigeerd (standaard 1)."
              },
              "max_obs": {
                "label": "Maximaal aantal waarnemingen",
                "description": "Maximaal aantal dichtstbijzijnde waarnemingen dat in de lokale oplossing van elke cel wordt gebruikt (standaard 50, bereik 1..=200)."
              },
              "analysis_error": {
                "label": "Analysefout",
                "description": "Optioneel uitvoerraster met de variantie van de analysefout σ_a² (≤ σ_b²)."
              }
            }
          },
          "optimal_path_as_line": {
            "name": "Optimaal pad als lijn",
            "description": "Traceert een kosten-terugkoppelingsraster van elke bestemming terug naar de bron en geeft de minimale-kostenroutes als polylijnen (ArcGIS Optimal Path As Line / Cost Path As Polyline). cost_pathway markeert de route alleen als rastercellen en cost_connectivity dekt alleen het N-locatienetwerkgeval, dus het gewone bron-naar-bestemmingspad had geen vectorvorm.",
            "params": {
              "destination": {
                "label": "Bestemming",
                "description": "Bestemmingen van waaruit wordt getraceerd: een raster (elke cel die niet nul en geen no-data is) of een vectorlaag met punten/multipunten."
              },
              "backlink": {
                "label": "Terugkoppeling",
                "description": "Richtingsraster met terugverwijzingen uit cost_back_link (0 = bron, 1-8 = richting naar de bron, 1 = oost, tegen de klok in)."
              },
              "accumulation": {
                "label": "Accumulatie",
                "description": "Optioneel raster met de geaccumuleerde kosten (de out_distance van cost_back_link). Levert de totale kosten van elk pad en is vereist door path_type 'each_zone' en 'best_single'."
              },
              "path_type": {
                "label": "Padtype",
                "description": "Een van 'each_cell' (standaard, één pad per bestemmingscel), 'each_zone' (één pad per bestemmingszone, vanaf de goedkoopste cel ervan) of 'best_single' (het enige goedkoopste pad)."
              },
              "zone_field": {
                "label": "Zoneveld",
                "description": "Attribuut dat de zone-ID bevat voor een vectorbestemming bij path_type 'each_zone'. Rasterbestemmingen gebruiken de celwaarde als zone."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerlaag met polylijnen. Indien weggelaten, wordt het in het geheugen opgeslagen."
              }
            }
          },
          "optimized_hot_spot_analysis": {
            "name": "Geoptimaliseerde hotspotanalyse",
            "description": "Aggregeert incidenten automatisch, selecteert automatisch de analyseafstandsband, voert Getis-Ord Gi* uit en rapporteert een FDR-gecorrigeerde hot-/coldspotbin (zoals ArcGIS Optimized Hot Spot Analysis) — de workflowwrapper die de ruwe meegeleverde getis_ord_gi_star mist.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerobjectlaag (incidentpunten, of objecten met een analyseveld)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpuntlaag met de Gi*-resultaten. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "analysis_field": {
                "label": "Analyseveld",
                "description": "Te analyseren numeriek veld (gewogen, zonder aggregatie). Laat dit weg om incidenten te tellen."
              },
              "aggregation": {
                "label": "Aggregatie",
                "description": "Aggregatie van incidenten wanneer geen analysis_field is opgegeven: 'fishnet' (telling per rastercel; standaard) of 'snap' (samenvallende punten samenvoegen)."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Cel-/snapgrootte voor de aggregatie in CRS-eenheden. Standaard: de langste zijde van de omvang / 30."
              },
              "distance_band": {
                "label": "Afstandsband",
                "description": "Afstandsband voor de analyse in CRS-eenheden. Standaard: automatisch gekozen op basis van de piek in de clusterintensiteit."
              }
            }
          },
          "optimized_outlier_analysis": {
            "name": "Geoptimaliseerde uitschieteranalyse",
            "description": "Aggregeert incidenten automatisch, selecteert automatisch de analyseafstandsband, voert Anselin's lokale Moran's I uit en rapporteert FDR-gecorrigeerde cluster-/uitschietertypen (HH/LL/HL/LH) — zoals ArcGIS Optimized Outlier Analysis; de niet-temporele lokale-Moran-wrapper die de ruwe meegeleverde local_morans_i_lisa en de ruimte-tijd local_outlier_analysis niet bieden.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerobjectlaag (incidentpunten, of objecten met een analyseveld)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpuntlaag met de resultaten van de lokale Moran. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "analysis_field": {
                "label": "Analyseveld",
                "description": "Te analyseren numeriek veld (gewogen, zonder aggregatie). Laat dit weg om incidenten te tellen."
              },
              "aggregation": {
                "label": "Aggregatie",
                "description": "Aggregatie van incidenten wanneer geen analysis_field is opgegeven: 'fishnet' (telling per rastercel; standaard) of 'snap' (samenvallende punten samenvoegen)."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Cel-/snapgrootte voor de aggregatie in CRS-eenheden. Standaard: de langste zijde van de omvang / 30."
              },
              "distance_band": {
                "label": "Afstandsband",
                "description": "Afstandsband voor de analyse in CRS-eenheden. Standaard: automatisch gekozen op basis van de piek in de clusterintensiteit."
              },
              "fdr_alpha": {
                "label": "FDR-alfa",
                "description": "Niveau van de False Discovery Rate voor de significantie van het COType (standaard 0.05)."
              }
            }
          },
          "ordinary_cokriging": {
            "name": "Ordinary cokriging-interpolatie",
            "description": "Voert multivariate ruimtelijke interpolatie uit met hulpvariabelen om de voorspellingen van de primaire variabele te verbeteren. Ideaal wanneer primaire gegevens schaars zijn, maar gecorreleerde secundaire gegevens overvloedig.",
            "params": {
              "primary_points": {
                "label": "Primaire punten",
                "description": "Vectorlaag met trainingspunten van de primaire variabele"
              },
              "primary_field": {
                "label": "Primair veld",
                "description": "Veld met de waarden van de primaire variabele"
              },
              "auxiliary_inputs": {
                "label": "Hulpinvoeren",
                "description": "Door komma's gescheiden lijst met bestandspaden van hulpvariabelen"
              },
              "auxiliary_fields": {
                "label": "Hulpvelden",
                "description": "Door komma's gescheiden veldnamen voor de hulpvariabelen (leeg voor rasters)"
              },
              "template_raster": {
                "label": "Sjabloonraster",
                "description": "Rastersjabloon dat het uitvoerraster en het CRS bepaalt"
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het gekrigede raster"
              },
              "output_variance": {
                "label": "Variantie uitvoeren",
                "description": "Optioneel uitvoerpad van het raster met de krigingvariantie"
              },
              "neighborhood_size": {
                "label": "Omgevingsgrootte",
                "description": "Aantal dichtstbijzijnde buren voor lokale cokriging (standaard: alle)"
              }
            }
          },
          "pairwise_comparison_weights": {
            "name": "Gewichten door paarsgewijze vergelijking",
            "description": "Leidt criteriumgewichten af uit een AHP-matrix van paarsgewijze vergelijkingen (Saaty-schaal 1-9) als de genormaliseerde hoofdeigenvector, met een consistentiecontrole (lambda_max, consistentie-index, consistentieratio) — zoals ArcGIS Assign Weights By Pairwise Comparison.",
            "params": {
              "matrix": {
                "label": "Matrix",
                "description": "De n x n reciproke vergelijkingsmatrix als een 2D JSON-array, bijv. [[1,3,5],[0.333,1,2],[0.2,0.5,1]]. Geef deze of `input` op."
              },
              "input": {
                "label": "Invoer",
                "description": "CSV-bestand met de vergelijkingsmatrix (eenvoudige numerieke rijen, of gelabeld met een kopregel en een naamkolom vooraan). Geef dit of `matrix` op."
              },
              "criteria": {
                "label": "Criteria",
                "description": "Door komma's gescheiden criteriumnamen (moeten overeenkomen met de volgorde in de matrix). Hebben voorrang op de labels in de CSV; standaard C1..Cn."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de tabel — een CSV (extensie .csv) of een vectortabel zonder geometrie (criterion, weight, rank). Indien weggelaten, wordt het in het geheugen opgeslagen."
              }
            }
          },
          "path_distance": {
            "name": "Padafstand",
            "description": "Geaccumuleerde minimale-kostenafstand waarbij elke stap de ware 3D-oppervlakteafstand (uit een DEM) betaalt maal een hellingsafhankelijke verticale factor (Tobler-wandelfunctie, lineair, binair) maal frictie, zoals ArcGIS Path Distance.",
            "params": {
              "source": {
                "label": "Bron",
                "description": "Bronraster; cellen met positieve waarden die geen nodata zijn vormen de vertrekpunten (geaccumuleerde kosten 0)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerraster met de geaccumuleerde kosten. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "cost": {
                "label": "Kosten",
                "description": "Optioneel raster met de wrijving/doorgangskosten (standaard uniform 1)."
              },
              "surface": {
                "label": "Oppervlak",
                "description": "Optioneel hoogteraster (DEM); maakt 3D-oppervlakteafstand en op helling gebaseerde verticale factoren mogelijk."
              },
              "vertical_factor": {
                "label": "Verticale factor",
                "description": "'tobler' (standaard), 'linear', 'sym_linear', 'inverse_linear' of 'binary'."
              },
              "slope_factor": {
                "label": "Hellingsfactor",
                "description": "Coëfficiënt voor de hellingsstraf bij de lineaire factoren (standaard 1)."
              },
              "zero_factor": {
                "label": "Nulfactor",
                "description": "Ondergrens van de verticale factor bergafwaarts voor linear/inverse_linear (standaard 0.1)."
              },
              "max_slope": {
                "label": "Maximale helling",
                "description": "Voor 'binary': hellingen steiler dan dit aantal graden zijn onbegaanbaar (standaard 30)."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band voor alle rasters (standaard 1)."
              }
            }
          },
          "percentile_contours": {
            "name": "Percentielcontouren",
            "description": "Geeft geneste polygonen die de meest extreme cellen van een oppervlak omsluiten, gedrempeld op waardepercentiel of op cumulatieve-massa- (volume-)percentiel.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Continu invoeroppervlakteraster (dichtheid, geschiktheid, hoogte)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de polygoonvector (driver uit de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "percentiles": {
                "label": "Percentielen",
                "description": "Door komma's gescheiden percentielen in [0,100] (bijv. \"50,90,95\"). Standaard \"90\"."
              },
              "mode": {
                "label": "Modus",
                "description": "'value' (standaard): cellen op of boven de waarde van het p-de percentiel. 'volume': de hoogste cellen die de bovenste (100-p)% van de cumulatieve waarde dragen."
              },
              "ignore_negative": {
                "label": "Negatieve negeren",
                "description": "Sluit negatieve celwaarden uit van de rangschikking en de uitvoer. Standaard false."
              },
              "smooth": {
                "label": "Gladstrijken",
                "description": "Vereenvoudigt de polygonen langs de celranden met Douglas-Peucker (tolerantie ongeveer 1,5 cel) om het trapeffect te verzachten. Standaard false."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die wordt gelezen (standaard 1)."
              }
            }
          },
          "pivot_table": {
            "name": "Draaitabel",
            "description": "Herstructureert een attribuuttabel in lang formaat naar breed formaat: één uitvoerrij per unieke combinatie van de identiteitsvelden en één kolom per afzonderlijke waarde van het draaiveld, gevuld uit het waardeveld. Zoals ArcGIS Pivot Table.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag of attribuuttabel in lang formaat."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de tabel (driver uit de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "fields": {
                "label": "Velden",
                "description": "Door komma's/puntkomma's gescheiden veldna(a)m(en) die een uitvoerrij identificeren; deze worden ongewijzigd meegenomen."
              },
              "pivot_field": {
                "label": "Draaiveld",
                "description": "Veld waarvan de afzonderlijke waarden nieuwe kolommen worden."
              },
              "value_field": {
                "label": "Waardeveld",
                "description": "Veld dat de celwaarden levert."
              },
              "aggregate": {
                "label": "Aggregeren",
                "description": "Wordt toegepast wanneer één rij-/kolomcel meerdere bronrecords heeft: 'first' (standaard), 'sum', 'mean', 'min', 'max', 'count'."
              }
            }
          },
          "pmtiles_extract": {
            "name": "PMTiles extraheren",
            "description": "Extraheert een bbox-/zoomsubset van een PMTiles-archief naar een nieuw archief (bijv. een offline basiskaart uit een Protomaps-planeetbuild).",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerbestand .pmtiles."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Pad van het uitvoerbestand .pmtiles."
              },
              "bbox": {
                "label": "Begrenzingsvak",
                "description": "WGS84-bbox als 'min_lon,min_lat,max_lon,max_lat'."
              },
              "min_zoom": {
                "label": "Minimaal zoomniveau",
                "description": "Laagste zoomniveau dat wordt opgenomen (standaard 0, zodat de kaart uitgezoomd bruikbaar blijft)."
              },
              "max_zoom": {
                "label": "Maximaal zoomniveau",
                "description": "Hoogste zoomniveau dat wordt opgenomen (standaard: het maximale zoomniveau van het bronarchief)."
              },
              "max_tiles": {
                "label": "Maximaal aantal tegels",
                "description": "Breekt af wanneer de selectie meer tegels betreft dan deze waarde (standaard 2000000)."
              },
              "url": {
                "label": "URL",
                "description": "HTTP(S)-PMTiles-URL. Geef ofwel url ofwel input op; HTTP-bronnen gebruiken byte-range-verzoeken (de host moet Range-verzoeken van andere origins toestaan)."
              },
              "bbox_crs": {
                "label": "CRS van begrenzingsvak",
                "description": "EPSG-code van de bbox-coördinaten. Standaard 4326 (WGS84 lon/lat); andere CRS'en worden naar 4326 geherprojecteerd."
              }
            }
          },
          "point_statistics": {
            "name": "Puntstatistieken",
            "description": "Rasteriseert een statistiek met bewegend venster van een puntobjectattribuut: voor elke uitvoercel verzamelt een omgeving (cirkel of rechthoek) de waarden van het gekozen numerieke veld van de punten erin en reduceert ze tot gemiddelde/meerderheid/maximum/mediaan/minimum/minderheid/bereik/std/som/variëteit. Zoals ArcGIS Point Statistics; vult de uitsluitend dichtheidsgebaseerde line_density/heat_map en de uitsluitend vectorgebaseerde neighborhood_summary_statistics aan.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met punten (Point / MultiPoint)."
              },
              "field": {
                "label": "Veld",
                "description": "Samen te vatten numeriek attribuutveld."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad (driver uit de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "statistic": {
                "label": "Statistiek",
                "description": "Statistiek per omgeving: mean (standaard), majority, maximum, median, minimum, minority, range, std, sum of variety."
              },
              "neighborhood": {
                "label": "Omgeving",
                "description": "Vorm van de omgeving: 'circle' (standaard, gebruikt 'radius') of 'rectangle' (een vierkant met zijde 2*radius)."
              },
              "radius": {
                "label": "Straal",
                "description": "Omgevingsstraal / halve zijde van de rechthoek (meters voor een geografisch CRS, anders CRS-eenheden). Standaard: de kortste zijde van de omvang / 20."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Uitvoercelgrootte (dezelfde eenheden als radius). Standaard: radius / 5."
              },
              "epsg": {
                "label": "EPSG",
                "description": "Overschrijft de EPSG-code van het invoer-CRS (bijv. wanneer de laag niet is gemarkeerd). 4326 activeert de projectie in meters."
              }
            }
          },
          "points_to_line": {
            "name": "Punten naar lijn",
            "description": "Bouwt polylijnobjecten uit punten: één lijn per afzonderlijke line_field-waarde, hoekpunten gesorteerd op sort_field, met een optionele vlag om de lijn te sluiten.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerpuntvectorbestand (of een handle in het geheugen)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de lijnvector (driver uit de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "line_field": {
                "label": "Lijnveld",
                "description": "Attribuut waarvan de afzonderlijke waarden de punten in afzonderlijke lijnen verdelen (één polylijn per waarde). Indien weggelaten, vormen alle punten één lijn."
              },
              "sort_field": {
                "label": "Sorteerveld",
                "description": "Attribuut dat de volgorde van de hoekpunten binnen elke lijn bepaalt. Numerieke waarden worden numeriek gesorteerd, tekst lexicografisch. Indien weggelaten, wordt de objectvolgorde van de invoer gebruikt."
              },
              "close_line": {
                "label": "Lijn sluiten",
                "description": "Voegt het eerste hoekpunt toe aan het einde van elke lijn, waardoor deze tot een ring wordt gesloten. Standaard false."
              }
            }
          },
          "points_to_path": {
            "name": "Punten naar pad",
            "description": "Verbindt punten tot polylijnobjecten, gesorteerd op een veld en (optioneel) gegroepeerd in één pad per waarde, met optionele natuurlijke sortering en padsluiting.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerpuntvectorbestand (of een handle in het geheugen)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de lijnvector (driver uit de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "order_field": {
                "label": "Volgordeveld",
                "description": "Attribuut dat de verbindingsvolgorde van de punten binnen elk pad bepaalt. Numerieke waarden worden numeriek gesorteerd, tekst lexicografisch. Indien weggelaten, wordt de objectvolgorde van de invoer gebruikt."
              },
              "group_field": {
                "label": "Groepeerveld",
                "description": "Attribuut dat de punten in afzonderlijke paden verdeelt (één lijn per afzonderlijke waarde). Indien weggelaten, vormen alle punten één pad."
              },
              "natural_sort": {
                "label": "Natuurlijke sortering",
                "description": "Sorteert tekstuele volgordewaarden natuurlijk, zodat 'a9' vóór 'a10' komt. Standaard false."
              },
              "close_path": {
                "label": "Pad sluiten",
                "description": "Voegt het eerste hoekpunt toe aan het einde van elk pad, waardoor dit tot een ring wordt gesloten. Standaard false."
              }
            }
          },
          "polygon_neighbors": {
            "name": "Polygoonburen",
            "description": "Bouwt een polygoonaangrenzingstabel (contiguïteit): naburige paren met de lengte van hun gedeelde grens en een telling van puntrakingen, zoals ArcGIS Polygon Neighbors.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met polygonen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de tabel — een CSV (extensie .csv) of een vectortabel zonder geometrie. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "id_field": {
                "label": "ID-veld",
                "description": "Veld dat elke polygoon in de tabel identificeert. Standaard: de objectindex."
              },
              "both_sides": {
                "label": "Beide zijden",
                "description": "Voert elk buurpaar twee keer uit (src→nbr en nbr→src). Standaard false (één keer per paar)."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Kwantiseert hoekpunten op een rooster van deze grootte (CRS-eenheden) voordat grenzen worden vergeleken. Standaard 0 (exacte coördinaten)."
              }
            }
          },
          "polygon_volume": {
            "name": "Polygoonvolume",
            "description": "Volume en 3D-oppervlakte per polygoon van een oppervlakteraster boven/onder de referentievlakhoogte van elk object, zoals ArcGIS Polygon Volume — de zonale tegenhanger van surface_volume.",
            "params": {
              "surface": {
                "label": "Oppervlak",
                "description": "Invoerraster met het hoogteoppervlak."
              },
              "input": {
                "label": "Invoer",
                "description": "Polygoonvectorlaag (zones)."
              },
              "height_field": {
                "label": "Hoogteveld",
                "description": "Attribuutveld dat de hoogte van het referentievlak van elke polygoon geeft."
              },
              "direction": {
                "label": "Richting",
                "description": "Aan welke zijde van elk vlak wordt geïntegreerd: 'above' (standaard), 'below' of 'both'."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die uit het oppervlak wordt gelezen (standaard 1)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorpad voor polygonen (stuurprogramma op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              }
            }
          },
          "porous_puff": {
            "name": "Poreuze pluim",
            "description": "Analytische advectie-dispersie van een momentane verontreinigingspuls door grondwater (zoals ArcGIS Porous Puff): verplaatst het pluimcentrum vanaf een lozingspunt langs een Darcy-snelheidsveld (grootte+richting, zoals geproduceerd door darcy_flow) en evalueert vervolgens de gesloten-vorm 2D-gaussiaanse pluimconcentratie in padgerichte coördinaten, geschaald naar porositeit, dikte, retardatie en eersteordeafbraak.",
            "params": {
              "magnitude": {
                "label": "Magnitude",
                "description": "Raster met de grootte van de darcysnelheid, zoals geproduceerd door de 'output' van darcy_flow. Celgrootte en omvang worden aan dit raster ontleend."
              },
              "direction": {
                "label": "Richting",
                "description": "Raster met de darcystroomrichting (azimut in graden vanaf het noorden, met de klok mee, gradiënt afwaarts), zoals geproduceerd door de 'direction' van darcy_flow. Moet gecoregistreerd zijn met 'magnitude'."
              },
              "x": {
                "label": "X",
                "description": "X-coördinaat van het lozingspunt (kaarteenheden, hetzelfde CRS als de snelheidsrasters)."
              },
              "y": {
                "label": "Y",
                "description": "Y-coördinaat van het lozingspunt (kaarteenheden)."
              },
              "mass": {
                "label": "Massa",
                "description": "Geloosde massa verontreiniging (moet positief zijn)."
              },
              "porosity": {
                "label": "Porositeit",
                "description": "Effectieve porositeit: ofwel een numerieke constante (0, 1] ofwel het pad van een raster dat met 'magnitude' is gecoregistreerd."
              },
              "thickness": {
                "label": "Dikte",
                "description": "Dikte van de watervoerende laag: ofwel een positieve numerieke constante ofwel het pad van een raster dat met 'magnitude' is gecoregistreerd."
              },
              "dispersivity_long": {
                "label": "Longitudinale dispersiviteit",
                "description": "Longitudinale dispersiviteit (lengte-eenheden; moet positief zijn)."
              },
              "dispersivity_trans": {
                "label": "Transversale dispersiviteit",
                "description": "Transversale dispersiviteit (lengte-eenheden; moet positief zijn)."
              },
              "retardation": {
                "label": "Retardatie",
                "description": "Retardatiefactor (standaard 1, moet >= 1 zijn)."
              },
              "decay": {
                "label": "Verval",
                "description": "Eersteordeafbraakconstante (standaard 0, moet >= 0 zijn; dezelfde tijdseenheden als 'time')."
              },
              "time": {
                "label": "Tijd",
                "description": "Door komma's gescheiden lijst met een of meer positieve verstreken tijden. De laatste tijd wordt naar 'output' geschreven; alle tijden (inclusief de laatste) worden gerapporteerd in de uitvoer 'time_series'."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het concentratieraster voor de laatste tijd in 'time'. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die uit de rasters magnitude/direction wordt gelezen (standaard 1)."
              },
              "step": {
                "label": "Stap",
                "description": "Staplengte waarmee het pluimmiddelpunt voortschrijdt, in CRS-eenheden (standaard: de celgrootte van het raster magnitude)."
              },
              "max_steps": {
                "label": "Maximaal aantal stappen",
                "description": "Maximaal aantal voortschrijdingsstappen per gevraagde tijd (standaard 1000)."
              }
            }
          },
          "predict_using_trend_raster": {
            "name": "Voorspellen met trendraster",
            "description": "Evalueert de door generate_trend_raster gefitte hellings-/interceptrasters op een of meer tijdstippen, wat voorspelde oppervlakken oplevert, zoals ArcGIS Predict Using Trend Raster.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Raster met de helling (trend) dat door generate_trend_raster is weggeschreven."
              },
              "intercept": {
                "label": "Intercept",
                "description": "Raster met het intercept dat door generate_trend_raster is weggeschreven (de 'intercept_output' ervan), gecoregistreerd met het hellingsraster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad voor de eerste voorspelde tijd. Indien weggelaten, worden de resultaten in het geheugen opgeslagen."
              },
              "times": {
                "label": "Tijden",
                "description": "Door komma's gescheiden tijden waarop wordt voorspeld, op dezelfde schaal als voor de fit is gebruikt (bijv. '12,18,24'). Heeft voorrang op start/end/interval."
              },
              "start": {
                "label": "Begin",
                "description": "Eerste tijd van een gegenereerd bereik (gebruikt wanneer 'times' ontbreekt)."
              },
              "end": {
                "label": "Einde",
                "description": "Laatste tijd van een gegenereerd bereik (inclusief; gebruikt wanneer 'times' ontbreekt)."
              },
              "interval": {
                "label": "Interval",
                "description": "Stap tussen gegenereerde tijden (standaard 1; gebruikt wanneer 'times' ontbreekt)."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die uit elk coëfficiëntenraster wordt gelezen (standaard 1)."
              }
            }
          },
          "presence_only_prediction": {
            "name": "Presence-only-voorspelling",
            "description": "MaxEnt-achtige soorten-/habitatgeschiktheidsmodellering: fit een L1-geregulariseerd logistisch model dat aanwezigheidspunten contrasteert met een geseede achtergrondsteekproef van verklarende rasters (lineaire/kwadratische/hinge-basisuitbreiding), en voorspelt vervolgens een aanwezigheidskansoppervlak plus een rapport over variabele-importantie — zoals ArcGIS Presence-only Prediction (MaxEnt).",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met aanwezigheidspunten (waargenomen voorkomens)."
              },
              "explanatory": {
                "label": "Verklarend",
                "description": "Door komma's gescheiden lijst met paden van verklarende rasters (de covariatenstapel). Wordt bemonsterd op de aanwezigheids- en achtergrondlocaties; het eerste raster bepaalt het uitvoerraster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerrasterpad van de aanwezigheidswaarschijnlijkheid. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "report": {
                "label": "Rapport",
                "description": "Optioneel uitvoerpad voor een CSV-tabel met coëfficiënten / variabelenbelang."
              },
              "features": {
                "label": "Kenmerken",
                "description": "Door komma's gescheiden kenmerkklassen voor de basisuitbreiding: een of meer van 'linear', 'quadratic', 'hinge'. Standaard 'linear,quadratic'."
              },
              "background": {
                "label": "Achtergrond",
                "description": "Aantal achtergrondmonsters dat uit de rasterstapel wordt getrokken. Standaard 1000 (begrensd door het aantal geldige cellen)."
              },
              "regularization": {
                "label": "Regularisatie",
                "description": "Sterkte van de L1-regularisatie (lasso) op de gestandaardiseerde kenmerken. Groter = eenvoudiger model. Standaard 0.01."
              },
              "hinge_knots": {
                "label": "Scharnierknopen",
                "description": "Aantal interne knopen per covariaat voor hinge-kenmerken (wordt alleen gebruikt wanneer 'hinge' is ingeschakeld). Standaard 10."
              },
              "seed": {
                "label": "Seed",
                "description": "Willekeurig zaad voor het deterministische achtergrondmonster (standaard 1)."
              }
            }
          },
          "propagate_displacement": {
            "name": "Verplaatsing propageren",
            "description": "Propageert de door resolve_road_conflicts (of elke tweepunts-verplaatsingslinklaag) geïntroduceerde verplaatsing naar nabijgelegen objecten door de schaarse links te interpoleren tot een glad IDW-veld: starre objecten (gebouwen, percelen) krijgen één gemiddelde translatie, flexibele lijnen een per hoekpunt, over booglengte gladgestreken buiging, zoals ArcGIS Propagate Displacement.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Aan te passen invoervectorlaag (elk geometrietype)."
              },
              "links": {
                "label": "Links",
                "description": "Verplaatsingskoppelingen: een lijnlaag met twee hoekpunten per koppeling, eerste hoekpunt = oorspronkelijke locatie, laatste hoekpunt = verplaatste locatie (het schema dat zowel de uitvoer 'links' van resolve_road_conflicts als de invoer 'links' van rubbersheet_features gebruikt)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de vector (driver uit de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "adjustment_style": {
                "label": "Aanpassingsstijl",
                "description": "'auto' (standaard: starre verschuiving voor punten/polygonen, buiging per hoekpunt voor lijnen), 'preserve_orientation' (starre verschuiving met het over het grondvlak gemiddelde veld) of 'solid' (starre verschuiving met het veld dat één keer op het representatieve punt van het object is bemonsterd)."
              },
              "search_distance": {
                "label": "Zoekafstand",
                "description": "Maximale afstand (CRS-eenheden) waarover een koppeling een monsterpunt mag beïnvloeden; verder gelegen koppelingen worden genegeerd. Standaard: onbeperkt (elke koppeling draagt overal bij)."
              }
            }
          },
          "pycnophylactic_interpolation": {
            "name": "Pycnofylactische interpolatie",
            "description": "Tobler's massabehoudende oppervlakte-interpolatie: zet per zone geaggregeerde tellingen om in een glad dichtheidsoppervlak waarvan de sommen per zone exact overeenkomen met de invoer (zoals ArcGIS Areal Interpolation) — het gladde alternatief voor de uniforme-dichtheidsaanname van apportion_polygon.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerpolygoonlaag met een aantalveld (extensieve variabele)."
              },
              "count_field": {
                "label": "Aantalveld",
                "description": "Veld dat het totale aantal van elke zone bevat (bevolking enz.)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerdichtheidsraster (waarde per cel; de zonesommen zijn gelijk aan de invoer). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Uitvoercelgrootte in CRS-eenheden (standaard: omvang / 200)."
              },
              "iterations": {
                "label": "Iteraties",
                "description": "Maximaal aantal afvlakkingsiteraties (standaard 100)."
              },
              "tolerance": {
                "label": "Tolerantie",
                "description": "Stopt wanneer de maximale verandering per cel onder deze fractie van de gemiddelde dichtheid zakt (standaard 0.001)."
              },
              "non_negative": {
                "label": "Niet-negatief",
                "description": "Kapt negatieve waarden af op 0 en herverdeelt om de massa te behouden (standaard true)."
              }
            }
          },
          "radiometric_terrain_flattening": {
            "name": "Radiometrische terreinafvlakking",
            "description": "Verwijdert het topografische helderheidssignaal uit gekalibreerde SAR-terugverstrooiing door het vlakke-aarde-referentieoppervlak te vervangen door het uit de DEM afgeleide lokaal verlichte oppervlak, en markeert layover en radarschaduw (ArcGIS Apply Radiometric Terrain Flattening). apply_radiometric_calibration uit ronde 17 normaliseert met de ellipsoïde-invalshoek, zodat op hellend terrein zijn sigma0/gamma0 de topografie volgt in plaats van de landbedekking — routinematig met meer dan 6 dB, wat het bos/kale-bodemverschil overtreft dat het moet meten.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Gekalibreerd SAR-terugstrooiingsraster (standaard bèta-nul; zie 'input_calibration')."
              },
              "dem": {
                "label": "DEM",
                "description": "Digitaal hoogtemodel, gecoregistreerd met het invoerraster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerraster met de op terrein gecorrigeerde terugstrooiing. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "output_scattering_area": {
                "label": "Verstrooiingsoppervlak uitvoeren",
                "description": "Uitvoer van de verhouding tussen de werkelijk belichte oppervlakte en de vlakke-aarde-oppervlakte. Wordt altijd gemaakt; wordt in het geheugen opgeslagen wanneer geen pad is opgegeven."
              },
              "output_geometry_mask": {
                "label": "Geometriemasker uitvoeren",
                "description": "Uitvoermasker: 0 normaal, 1 layover, 2 radarschaduw. Wordt altijd gemaakt; wordt in het geheugen opgeslagen wanneer geen pad is opgegeven."
              },
              "incidence_angle": {
                "label": "Invalshoek",
                "description": "Invalshoek ten opzichte van de ellipsoïde in graden: een constante of het pad naar een raster met een waarde per cel. Vereist."
              },
              "look_azimuth": {
                "label": "Kijkazimut",
                "description": "Kompasazimut in graden vanaf het doel naar de sensor (standaard 270, d.w.z. een rechtskijkende opgaande baan). Een rechtskijkende neergaande Sentinel-1-baan is ongeveer 283."
              },
              "input_calibration": {
                "label": "Invoerkalibratie",
                "description": "Wat de invoer al is: 'beta0' (standaard), 'sigma0_ellipsoid' of 'gamma0_ellipsoid'. De laatste twee worden met behulp van de ellipsoïdehoek terugberekend naar bèta-nul vóór de terreincorrectie."
              },
              "calibration_type": {
                "label": "Kalibratietype",
                "description": "Uitvoerconventie: 'gamma0' (standaard) of 'sigma0'."
              },
              "input_units": {
                "label": "Invoereenheden",
                "description": "'intensity' (standaard), 'dn', 'amplitude' of 'db'."
              },
              "output_units": {
                "label": "Uitvoereenheden",
                "description": "'linear' (standaard) of 'db'."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Vermenigvuldigingsfactor die de z-eenheden van het DEM omzet naar de XY-eenheden van het raster (standaard 1.0)."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band van het invoerraster waarop de terreincorrectie wordt toegepast (standaard 1)."
              }
            }
          },
          "raster_domain": {
            "name": "Rasterdomein",
            "description": "Traceert de grens van het geldige-gegevensgebied van een raster als polygonen (of gesloten polylijnen), met behoud van binnenliggende NoData-gaten (ArcGIS Raster Domain). De meegeleverde layer_footprint_raster geeft de volledige rechthoekige extent, die voor een gedraaide scène, een uitgesneden stroomgebied of een rafelige mozaïektegel een veelvoud van de werkelijke dekking kan zijn; polygonize zou het kunnen, maar alleen vanuit een 0/1-geldigheidsmasker dat de aanroeper eerst moet bouwen, wat de hele taak is.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerraster waarvan de omtrek met geldige gegevens wordt gevraagd."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerlaag met polygonen of lijnen. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "geometry_type": {
                "label": "Geometrietype",
                "description": "'polygon' (standaard) of 'line' voor de begrenzing als gesloten polylijnen."
              },
              "ignore_value": {
                "label": "Te negeren waarde",
                "description": "Behandelt ook deze waarde als ongeldig, naast de eigen no-data van het raster (vaak 0 voor beelden met een zwarte rand)."
              },
              "min_value": {
                "label": "Minimale waarde",
                "description": "Behandelt waarden hieronder als ongeldig."
              },
              "max_value": {
                "label": "Maximale waarde",
                "description": "Behandelt waarden hierboven als ongeldig."
              },
              "min_area": {
                "label": "Minimale oppervlakte",
                "description": "Verwerpt omtrekdelen die kleiner zijn dan deze oppervlakte in vierkante kaarteenheden, waarmee spikkels rond een rafelige rand worden verwijderd."
              },
              "fill_holes": {
                "label": "Gaten vullen",
                "description": "Laat interne gaten weg en retourneert de volle omtrek (standaard false)."
              },
              "all_bands": {
                "label": "Alle banden",
                "description": "Vereist dat een cel in elke band geldig is in plaats van alleen in de geselecteerde band (standaard false)."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die wordt getest (standaard 1). Wordt genegeerd wanneer 'all_bands' is ingesteld."
              }
            }
          },
          "raster_normalize": {
            "name": "Raster normaliseren",
            "description": "Normaliseert een rasterband met min-max naar het bereik [0, 1].",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die wordt genormaliseerd (standaard 1)."
              }
            }
          },
          "raster_to_h3": {
            "name": "Raster naar H3-bins",
            "description": "Aggregeert rasterbandwaarden in H3-cellen van het discrete globale raster (gemiddelde, som, min, max, telling, mediaan).",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerrasterbestand (moet geografisch lon/lat zijn, EPSG:4326)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector; de driver wordt afgeleid uit de extensie (.geojson, .fgb, .parquet, ...). Indien weggelaten, wordt de laag in het geheugen opgeslagen."
              },
              "resolution": {
                "label": "Resolutie",
                "description": "H3-resolutie van 0 (grofst) tot 15 (fijnst); standaard 8 (cellen van ongeveer 0,7 km²)."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde rasterband die wordt geaggregeerd (standaard 1)."
              },
              "aggregate": {
                "label": "Aggregeren",
                "description": "Hoe pixelwaarden per cel worden gecombineerd: mean, sum, min, max, count of median (standaard mean)."
              }
            }
          },
          "raster_to_tiles": {
            "name": "Raster naar XYZ-tegels",
            "description": "Snijdt een raster in een Web Mercator (EPSG:3857) XYZ-PNG-tegelpiramide voor webkaarten.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand. Moet een bron-CRS bevatten (EPSG of WKT)."
              },
              "output_dir": {
                "label": "Uitvoermap",
                "description": "Uitvoermap voor de tegelboom {z}/{x}/{y}.png (bijv. /work/tiles)."
              },
              "min_zoom": {
                "label": "Minimaal zoomniveau",
                "description": "Minimaal zoomniveau (standaard: één oorspronkelijk zoomniveau dat overeenkomt met de rasterresolutie)."
              },
              "max_zoom": {
                "label": "Maximaal zoomniveau",
                "description": "Maximaal zoomniveau (standaard: hetzelfde als min_zoom)."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die wordt gerenderd (standaard 1)."
              },
              "colormap": {
                "label": "Kleurenkaart",
                "description": "Kleurenschaal: viridis (standaard), magma, turbo, terrain of grayscale."
              },
              "method": {
                "label": "Methode",
                "description": "Herbemonsteringsmethode voor herprojectie en bemonstering: bilinear (standaard), nearest, cubic."
              },
              "min": {
                "label": "Min",
                "description": "Waarde die op het lage uiteinde van de kleurenschaal wordt afgebeeld (standaard: het minimum van de band)."
              },
              "max": {
                "label": "Max",
                "description": "Waarde die op het hoge uiteinde van de kleurenschaal wordt afgebeeld (standaard: het maximum van de band)."
              }
            }
          },
          "raster_to_weighted_points": {
            "name": "Raster naar gewogen punten",
            "description": "Verdeelt een vast aantal punten over een raster zodat hun dichtheid evenredig is met de celwaarde, en plaatst ze op een deterministisch Fibonacci-rooster, spiraal-, cirkel- of zwaartepuntpatroon (ArcGIS Raster To Weighted Points). Niets in beide registers weegt naar een oppervlak: random_sample en random_points_in_polygon zijn uniform, create_spatially_balanced_points spreidt punten bewust gelijkmatig, en raster_to_vector_points geeft één punt per cel zonder uitdunning of weging. De toewijzing gebruikt de grootste-restmethode en heeft geen RNG nodig, zodat de resultaten reproduceerbaar zijn in WASM.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoeroppervlakteraster; de celwaarden zijn de gewichten."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpuntlaag. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "max_number_of_points": {
                "label": "Maximaal aantal punten",
                "description": "Totaal aantal te verdelen punten (standaard 1000)."
              },
              "method": {
                "label": "Methode",
                "description": "Plaatsing binnen de cel: 'fibonacci_lattice' (standaard), 'fibonacci_spiral', 'circular' of 'centroid'."
              },
              "min_value": {
                "label": "Minimale waarde",
                "description": "Cellen met een gewicht gelijk aan of lager dan deze waarde krijgen geen punten (standaard 0). Negatieve gewichten worden altijd uitgesloten."
              },
              "max_points_per_cell": {
                "label": "Maximaal aantal punten per cel",
                "description": "Begrenst het aantal punten dat één cel mag ontvangen, zodat één uitschietende cel niet het hele budget opneemt."
              },
              "include_weight": {
                "label": "Gewicht opnemen",
                "description": "Schrijft de waarde van de broncel naar elk punt (standaard true)."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die de gewichten levert (standaard 1)."
              }
            }
          },
          "read_geoparquet": {
            "name": "GeoParquet lezen",
            "description": "Leest een GeoParquet-bestand en converteert het naar een ander vectorformaat (of slaat het op in het geheugen).",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoer-GeoParquet-bestand (bijv. /work/data.parquet)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de vector; het formaat wordt afgeleid uit de extensie (.geojson, .fgb, .shp, .gpkg, ...). Indien weggelaten, wordt de laag in het geheugen opgeslagen."
              }
            }
          },
          "reclassify_field": {
            "name": "Veld herclassificeren",
            "description": "Classificeert een numeriek vectorattribuut in klassebins (zoals ArcGIS Reclassify Field): equal_interval, defined_interval, quantile, natural_breaks (Jenks), std_dev of geometric_interval, en schrijft een geheeltallig klasseveld plus een optioneel veld met klassegrenswaarden.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag (of tabel) met het te classificeren numerieke veld."
              },
              "field": {
                "label": "Veld",
                "description": "Naam van het te classificeren numerieke veld."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorlaag met het toegevoegde klasseveld. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "method": {
                "label": "Methode",
                "description": "Classificatiemethode: equal_interval, defined_interval, quantile, natural_breaks, std_dev of geometric_interval (standaard natural_breaks)."
              },
              "classes": {
                "label": "Klassen",
                "description": "Aantal klassen voor equal_interval/quantile/natural_breaks/geometric_interval (standaard 5). Wordt genegeerd door defined_interval en std_dev, waarvan het aantal klassen uit de gegevens volgt."
              },
              "interval": {
                "label": "Interval",
                "description": "Vaste klassebreedte voor defined_interval (vereist voor die methode)."
              },
              "std_dev_interval": {
                "label": "Standaardafwijkingsinterval",
                "description": "Intervalgrootte voor std_dev, in eenheden van de standaardafwijking (standaard 1.0; bijv. 0.5 voor halve-sigma-banden)."
              },
              "class_field": {
                "label": "Klasseveld",
                "description": "Naam van het toe te voegen gehele klasseveld (standaard 'class')."
              },
              "break_field": {
                "label": "Breukveld",
                "description": "Indien opgegeven, wordt ook een floatveld toegevoegd met de bovengrens van de klasse waaronder elk object valt."
              }
            }
          },
          "reconstruct_tracks": {
            "name": "Tracks reconstrueren",
            "description": "Zet punten met tijdstempel om in bewegingstrackpolylijnen (gegroepeerd op id, gesorteerd op tijd, gesplitst bij tijd-/afstandshiaten) met statistieken per track, en vindt optioneel verblijflocaties waar de beweger pauzeerde — zoals ArcGIS Reconstruct Tracks / Find Dwell Locations.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met punten van waarnemingen met tijdstempels."
              },
              "track_field": {
                "label": "Trackveld",
                "description": "Veld dat elk spoor / elke bewegende entiteit identificeert (bijv. voertuig- of dier-ID)."
              },
              "time_field": {
                "label": "Tijdveld",
                "description": "Veld dat de tijd van elk punt bevat: numerieke seconden of een ISO-8601-tijdstempel."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerlijnvector met sporen (driver uit de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "time_gap": {
                "label": "Tijdhiaat",
                "description": "Begint een nieuw spoorsegment wanneer het tijdsverschil tussen punten dit aantal seconden overschrijdt. Standaard: geen splitsing op tijd."
              },
              "distance_gap": {
                "label": "Afstandshiaat",
                "description": "Begint een nieuw spoorsegment wanneer de afstand tussen punten deze waarde overschrijdt (meters voor een geografisch CRS, anders CRS-eenheden). Standaard: geen splitsing op afstand."
              },
              "dwells": {
                "label": "Verblijven",
                "description": "Optioneel uitvoerpad voor punten met verblijflocaties (waar de bewegende entiteit pauzeerde)."
              },
              "dwell_distance": {
                "label": "Verblijfsafstand",
                "description": "Maximale straal voor een verblijf, in de hierboven genoemde afstandseenheden. Standaard 50."
              },
              "dwell_min_duration": {
                "label": "Minimale verblijfsduur",
                "description": "Minimale tijd (seconden) die een bewegende entiteit binnen dwell_distance moet blijven om als verblijf te tellen. Standaard 300."
              }
            }
          },
          "reduce_point_density": {
            "name": "Puntdichtheid verminderen",
            "description": "Dunt een vectorpuntlaag uit zodat geen twee behouden punten dichter bij elkaar liggen dan een minimale afstand, of behoudt één punt per rastercel (ArcGIS Reduce Point Density). lidar_thin werkt alleen op LAS en find_identical vangt alleen exacte duplicaten, zodat dichte peilings-, GPS- en sensorlagen niet konden worden gedecimeerd vóór interpolatie.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlaag met punten (of multipunten)."
              },
              "method": {
                "label": "Methode",
                "description": "'spacing' (standaard): gulzige uitdunning op basis van een minimale onderlinge afstand. 'bin': behoudt één punt per rastercel."
              },
              "min_distance": {
                "label": "Minimale afstand",
                "description": "Minimale onderlinge afstand tussen behouden punten, in de eenheden van de laag. Vereist door de methode 'spacing'."
              },
              "bin_size": {
                "label": "Bingrootte",
                "description": "Rastercelgrootte in de eenheden van de laag. Vereist door de methode 'bin'."
              },
              "sort_field": {
                "label": "Sorteerveld",
                "description": "Numeriek attribuut dat bepaalt welk punt een conflict wint. Zonder dit attribuut beslist de volgorde van de invoer."
              },
              "sort_order": {
                "label": "Sorteervolgorde",
                "description": "'descending' (standaard, de hoogste sort_field wint) of 'ascending'."
              },
              "keep_field": {
                "label": "Te behouden veld",
                "description": "Attribuut dat punten markeert die altijd behouden moeten blijven (niet nul / true / niet leeg). Gebruik dit voor gevaren zoals ondiepteloodingen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerlaag met de behouden punten. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "output_removed": {
                "label": "Verwijderde uitvoeren",
                "description": "Optionele laag die de weggelaten punten ontvangt, ter controle."
              }
            }
          },
          "regression_kriging": {
            "name": "Regressiekriging",
            "description": "Kriging met externe drift: regresseert steekproefwaarden op exhaustieve covariaatrasters, fit een variogram op de residuen en telt het gekrigde residuveld op bij het regressieoppervlak (ArcGIS EBK Regression Prediction). Elke meegeleverde kriging-variant modelleert de trend in de coördinaten of heeft secundaire puntmonsters nodig; geen enkele accepteert covariaatrasters, wat de meeste toegepaste geostatistiek juist nodig heeft.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Puntlaag met monsters."
              },
              "value_field": {
                "label": "Waardeveld",
                "description": "Te voorspellen numeriek attribuut."
              },
              "covariates": {
                "label": "Covariaten",
                "description": "Door komma's of puntkomma's gescheiden paden van covariatenrasters, dekkend over het voorspellingsraster. Het eerste bepaalt het uitvoerraster."
              },
              "variogram_model": {
                "label": "Variogrammodel",
                "description": "Variogrammodel van de residuen: 'spherical' (standaard), 'exponential' of 'gaussian'."
              },
              "lag_count": {
                "label": "Aantal lags",
                "description": "Aantal lagbins dat wordt gebruikt om het residuvariogram te fitten (standaard 12)."
              },
              "max_neighbors": {
                "label": "Maximaal aantal buren",
                "description": "Aantal dichtstbijzijnde monsters dat in het krigingsysteem van elke cel wordt gebruikt (standaard 16)."
              },
              "bilinear": {
                "label": "Bilineair",
                "description": "Bemonstert de covariaten bilineair op de puntlocaties in plaats van via de dichtstbijzijnde cel (standaard false)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerraster met de voorspelling. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "output_error": {
                "label": "Fout uitvoeren",
                "description": "Raster met de standaardfout van de voorspelling (krigingstandaardfout van het residuveld). Wordt altijd gemaakt."
              }
            }
          },
          "regularize_adjacent_building_footprint": {
            "name": "Aangrenzende gebouwomtrekken regulariseren",
            "description": "Regulariseert een groep aangrenzende gebouwomtrekken naar één gedeelde oriëntatie zodat gedeelde muren parallel en collineair blijven (zoals ArcGIS Regularize Adjacent Building Footprint) — de groepsconsistente tegenhanger van de per-gebouw regularize_building_footprints, die naburige omtrekken uit de uitlijning laat drijven.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerpolygoonlaag met gebouwgrondvlakken."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de polygonen. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "group": {
                "label": "Groep",
                "description": "Optioneel veld dat grondvlakken groepeert die samen worden geregulariseerd. Zonder dit veld worden groepen gevormd op basis van aangrenzende begrenzingen."
              },
              "method": {
                "label": "Methode",
                "description": "'right_angles' (standaard) of 'right_angles_and_diagonals'."
              },
              "tolerance": {
                "label": "Tolerantie",
                "description": "Minimale muurlengte; kortere randen worden als ruis verwijderd (CRS-eenheden). Standaard 1.0."
              },
              "precision": {
                "label": "Precisie",
                "description": "Roosterstap voor het snappen van muurverschuivingen, zodat nabijgelegen parallelle muren collineair worden (CRS-eenheden). Standaard: tolerance."
              },
              "adjacency_distance": {
                "label": "Nabuurschapsafstand",
                "description": "Wanneer geen veld 'group' is opgegeven, vormen grondvlakken waarvan de hoekpunten binnen deze afstand liggen één groep (CRS-eenheden). Standaard: 2 x tolerance."
              }
            }
          },
          "regularize_building_footprints": {
            "name": "Gebouwomtrekken regulariseren",
            "description": "Normaliseert ruisige gebouwomtrekpolygonen tot regelmatige vormen (rechthoekige, diagonale, willekeurige-hoek- of cirkelvormige muren).",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerpolygoonvectorbestand, formaat automatisch gedetecteerd (of een handle in het geheugen)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de vector (driver op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "method": {
                "label": "Methode",
                "description": "Regularisatiemethode: 'right_angles' (standaard), 'right_angles_and_diagonals', 'any_angle' of 'circle'."
              },
              "tolerance": {
                "label": "Tolerantie",
                "description": "Maximale afstand (in CRS-eenheden) waarmee het geregulariseerde grondvlak van de oorspronkelijke begrenzing mag afwijken. Standaard 1.0."
              },
              "diagonal_penalty": {
                "label": "Diagonaalstraf",
                "description": "Voor 'right_angles_and_diagonals': hoe sterk rechte hoeken de voorkeur krijgen boven muren van 45 graden (een muur wordt pas diagonaal wanneer de hoekafwijking ten opzichte van een diagonaal, vermenigvuldigd met deze factor, kleiner is dan de afwijking ten opzichte van een as). Standaard 1.5; grotere waarden leveren minder diagonalen op."
              },
              "min_radius": {
                "label": "Minimale straal",
                "description": "Voor 'circle': kleinste toegestane gefitte straal; kleinere fits behouden het oorspronkelijke grondvlak. Standaard 0.1."
              },
              "max_radius": {
                "label": "Maximale straal",
                "description": "Voor 'circle': grootste toegestane gefitte straal; grotere fits behouden het oorspronkelijke grondvlak. Onbeperkt indien weggelaten."
              }
            }
          },
          "remove_overlap_multiple": {
            "name": "Overlap verwijderen (meerdere)",
            "description": "Wijst elke overlap binnen een set polygonen opnieuw toe aan precies één object, wat een partitie van hun vereniging zonder gaten en overlap oplevert (middellijn- of Thiessen-verdeling), zoals ArcGIS Remove Overlap (Multiple).",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met polygonen (objecten mogen overlappen)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorpad voor polygonen (stuurprogramma op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "method": {
                "label": "Methode",
                "description": "'center_line' (wijst elk overlappunt toe aan het object waarin het het diepst ligt, standaard) of 'thiessen' (het dichtstbijzijnde zwaartepunt van de generator)."
              },
              "grid_resolution": {
                "label": "Rasterresolutie",
                "description": "Aantal cellen over de langste zijde van elk overlapgebied bij het verdelen (standaard 40; hoger = gladdere scheidingslijnen, trager)."
              }
            }
          },
          "remove_thermal_noise": {
            "name": "Thermische ruis verwijderen",
            "description": "Trekt de additieve thermische ruisvloer van de ontvanger af van SAR-terugverstrooiing, waarmee de dwars-op-de-zwaad-banding wordt verwijderd die donkere oppervlakken zoals kalm water, overstroomd land en radarschaduw domineert (ArcGIS Remove Thermal Noise). Niets in beide registers doet dit: de meegeleverde lee/frost/kuan/refined-lee-filters onderdrukken multiplicatieve speckle, een andere grootheid. Zonder deze stap haakt een Otsu-waterdrempel aan op een subzwaadgrens in plaats van een kustlijn, en worden kruispolarisatieratio's berekend uit een teller die grotendeels ruis is.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Gekalibreerd SAR-terugstrooiingsraster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerraster met verwijderde ruis. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "output_snr": {
                "label": "SNR uitvoeren",
                "description": "Uitvoer van de signaal-ruisverhouding in dB. Wordt altijd gemaakt; wordt in het geheugen opgeslagen wanneer geen pad is opgegeven."
              },
              "noise_raster": {
                "label": "Ruisraster",
                "description": "Raster met het ruisvermogen per cel, gecoregistreerd met de invoer. Heeft voorrang op de twee andere vormen."
              },
              "noise_profile": {
                "label": "Ruisprofiel",
                "description": "Door komma's gescheiden ruisvermogens dwars op het bereik, lineair geïnterpoleerd over de kolommen van het raster. Ten minste twee waarden."
              },
              "noise_constant": {
                "label": "Ruisconstante",
                "description": "Eén ruisequivalente sigma-nul die op elke cel wordt toegepast."
              },
              "noise_units": {
                "label": "Ruiseenheden",
                "description": "Eenheden waarin de ruiswaarden zijn uitgedrukt: 'intensity' (standaard), 'dn', 'amplitude' of 'db'."
              },
              "input_units": {
                "label": "Invoereenheden",
                "description": "'intensity' (standaard), 'dn', 'amplitude' of 'db'."
              },
              "output_units": {
                "label": "Uitvoereenheden",
                "description": "'linear' (standaard) of 'db'."
              },
              "floor_fraction": {
                "label": "Vloerfractie",
                "description": "Cellen die naar nul of lager worden gebracht, worden afgekapt op deze fractie van het lokale ruisvermogen (standaard 0.01). Dit houdt een dB-conversie eindig."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band waaruit de ruis wordt verwijderd (standaard 1)."
              }
            }
          },
          "render_raster_png": {
            "name": "Raster renderen naar PNG",
            "description": "Rendert één rasterband naar een PNG-afbeelding via een kleurenkaart (NoData wordt transparant).",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Pad van het uitvoer-PNG-bestand (bijv. /work/preview.png)."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die wordt gerenderd (standaard 1)."
              },
              "colormap": {
                "label": "Kleurenkaart",
                "description": "Kleurenschaal: viridis (standaard), magma, turbo, terrain of grayscale."
              },
              "min": {
                "label": "Min",
                "description": "Waarde die op het lage uiteinde van de kleurenschaal wordt afgebeeld (standaard: het minimum van de band)."
              },
              "max": {
                "label": "Max",
                "description": "Waarde die op het hoge uiteinde van de kleurenschaal wordt afgebeeld (standaard: het maximum van de band)."
              }
            }
          },
          "render_vector_png": {
            "name": "Vector renderen naar PNG",
            "description": "Tekent een vectorlaag (punten/lijnen/polygonen) naar een PNG-kaartafbeelding.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoervectorbestand of een handle in het geheugen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Pad van het uitvoer-PNG-bestand (bijv. /work/map.png)."
              },
              "width": {
                "label": "Breedte",
                "description": "Beeldbreedte in pixels (standaard 800)."
              },
              "height": {
                "label": "Hoogte",
                "description": "Beeldhoogte in pixels (standaard: uit de beeldverhouding van de gegevens)."
              },
              "fill": {
                "label": "Vullen",
                "description": "Vulkleur van polygonen/punten als #rrggbb of #rrggbbaa (standaard halftransparant blauw)."
              },
              "stroke": {
                "label": "Lijnkleur",
                "description": "Kleur van de omtrek/lijn als #rrggbb of #rrggbbaa (standaard donkerblauw)."
              },
              "stroke_width": {
                "label": "Lijndikte",
                "description": "Breedte van de omtrek/lijn in pixels (standaard 1)."
              },
              "background": {
                "label": "Achtergrond",
                "description": "Achtergrondkleur als #rrggbb[aa] of 'transparent' (standaard transparant)."
              }
            }
          },
          "repair_geometry": {
            "name": "Geometrie repareren",
            "description": "Detecteert en herstelt ongeldige polygoongeometrie — zelfdoorsnijdingen (via zelfvereniging), ringoriëntatie, dubbele hoekpunten en null/lege delen — of rapporteert met check_only een probleemcode per object. Zoals ArcGIS Repair Geometry / Check Geometry.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerpolygoonvectorbestand, formaat automatisch gedetecteerd (of een handle in het geheugen)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de vector (driver op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "check_only": {
                "label": "Alleen controleren",
                "description": "Indien true wordt de geometrie niet gewijzigd: de invoer wordt uitgevoerd met de kolommen 'problem_code'/'problem_desc' (zoals ArcGIS Check Geometry). Standaard false."
              }
            }
          },
          "rescale_by_function": {
            "name": "Herschalen met functie",
            "description": "Herschaalt een continu raster naar een gemeenschappelijke geschiktheidsschaal via een overdrachtsfunctie (linear, inverse_linear, power, exponential, logarithmic, logistic, gaussian, near, small, large, symmetric_linear), zoals ArcGIS Rescale By Function.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Continu invoerraster."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              },
              "function": {
                "label": "Functie",
                "description": "Overdrachtsfunctie: linear (standaard), inverse_linear, power, exponential, logarithmic, logistic, gaussian, near, small, large, symmetric_linear."
              },
              "from_scale": {
                "label": "Van schaal",
                "description": "Onderkant van de uitvoerschaal (standaard 0)."
              },
              "to_scale": {
                "label": "Naar schaal",
                "description": "Bovenkant van de uitvoerschaal (standaard 1)."
              },
              "param1": {
                "label": "Parameter1",
                "description": "Eerste vormparameter (exponent voor power; steilheid voor exponential/logarithmic/logistic/small/large; middelpunt voor gaussian/near). De standaardwaarde is functieafhankelijk."
              },
              "param2": {
                "label": "Parameter2",
                "description": "Tweede vormparameter (spreiding voor gaussian/near). De standaardwaarde is functieafhankelijk."
              },
              "low_threshold": {
                "label": "Lage drempelwaarde",
                "description": "Optionele ondergrens: waarden daaronder worden afgebeeld op 'value_below'."
              },
              "high_threshold": {
                "label": "Hoge drempelwaarde",
                "description": "Optionele bovengrens: waarden daarboven worden afgebeeld op 'value_above'."
              },
              "value_below": {
                "label": "Waarde onder",
                "description": "Uitvoerwaarde voor cellen onder 'low_threshold' (standaard = from_scale)."
              },
              "value_above": {
                "label": "Waarde boven",
                "description": "Uitvoerwaarde voor cellen boven 'high_threshold' (standaard = to_scale)."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die opnieuw wordt geschaald (standaard 1)."
              }
            }
          },
          "resolve_building_conflicts": {
            "name": "Gebouwconflicten oplossen",
            "description": "Verplaatst, verkleint of verbergt gebouwomtrekken die grafisch conflicteren met gesymboliseerde wegbarrières (en met elkaar) voor kleinschalige kartering, en voorziet elk van een status, zoals ArcGIS Resolve Building Conflicts.",
            "params": {
              "buildings": {
                "label": "Gebouwen",
                "description": "Invoerpolygoonlaag met gebouwen."
              },
              "barriers": {
                "label": "Barrières",
                "description": "Lijnlaag met barrières (bijv. wegen) waar gebouwen vrij van moeten blijven."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerlaag met gebouwen met een veld 'status'. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "barrier_width": {
                "label": "Barrièrebreedte",
                "description": "Gesymboliseerde barrièrebreedte in kaarteenheden (aan elke zijde met de helft hiervan gebufferd). Standaard 0."
              },
              "gap": {
                "label": "Hiaat",
                "description": "Minimale afstand die tussen een gebouw en een barrière moet worden aangehouden (kaarteenheden). Standaard 0."
              },
              "min_size": {
                "label": "Minimale grootte",
                "description": "Minimale gebouwoppervlakte (kaarteenheden²) waaronder een conflicterend gebouw wordt verborgen in plaats van verkleind. Standaard 0 (nooit verbergen)."
              },
              "hide": {
                "label": "Verbergen",
                "description": "Of verborgen gebouwen uit de uitvoer moeten worden weggelaten (standaard false: ze blijven behouden met status='hidden')."
              }
            }
          },
          "resolve_road_conflicts": {
            "name": "Wegconflicten oplossen",
            "description": "Verplaatst wegen waarvan de gesymboliseerde (getekende-breedte-)representaties overlappen of te dicht op elkaar liggen op een doelschaal: wegen van lagere hiërarchie worden vrijgeduwd van die van hogere hiërarchie met aan de eindpunten vastgezette, gladgestreken hoekpuntverschuivingen, optioneel met verplaatsingslinks, zoals ArcGIS Resolve Road Conflicts / Propagate Displacement.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlijnlaag met wegen (LineString / MultiLineString)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerlaag met verplaatste wegen met de velden 'status' en 'shift'. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "symbol_width": {
                "label": "Symboolbreedte",
                "description": "Vaste gesymboliseerde breedte voor alle wegen, in kaarteenheden (of in mm op de kaart wanneer 'scale' is ingesteld). Wordt gebruikt wanneer 'symbol_width_field' ontbreekt."
              },
              "symbol_width_field": {
                "label": "Veld symboolbreedte",
                "description": "Numeriek veld dat de gesymboliseerde breedte van elke weg geeft (kaarteenheden, of mm op de kaart wanneer 'scale' is ingesteld). Valt terug op 'symbol_width' wanneer een waarde ontbreekt."
              },
              "hierarchy_field": {
                "label": "Hiërarchieveld",
                "description": "Numeriek veld dat het belang van wegen rangschikt (een lagere waarde = belangrijker, blijft vast). Ontbreekt dit: alle wegen delen de verplaatsing gelijkelijk."
              },
              "scale": {
                "label": "Schaal",
                "description": "Noemer van de beoogde kaartschaal. Indien ingesteld, worden symboolbreedtes als millimeters op de kaart opgevat en omgerekend naar terreineenheden (mm * scale / 1000). Standaard: breedtes worden rechtstreeks als kaarteenheden opgevat."
              },
              "gap": {
                "label": "Hiaat",
                "description": "Extra vrije ruimte die tussen symboolstroken moet worden aangehouden, in kaarteenheden. Standaard 0."
              },
              "max_iter": {
                "label": "Maximaal aantal iteraties",
                "description": "Maximaal aantal verplaatsingsiteraties. Standaard 50."
              },
              "pin_endpoints": {
                "label": "Eindpunten vastzetten",
                "description": "Houdt het eerste en laatste hoekpunt van elke weg vast om kruispunten/connectiviteit te behouden (standaard true)."
              },
              "links": {
                "label": "Links",
                "description": "Optioneel uitvoerpad voor verplaatsingskoppelingen (van→naar-lijnen) die door rubbersheet_features kunnen worden gebruikt."
              }
            }
          },
          "ripleys_k": {
            "name": "Ripley's K",
            "description": "Puntpatroonanalyse over meerdere afstanden (Ripley's K-/L-functie) met Monte-Carlo-enveloppen voor volledige ruimtelijke willekeur, om clustering of dispersie over een afstandsbereik te detecteren.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met punten (andere geometrieën gebruiken hun representatieve punt als gemiddelde van de hoekpunten)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel CSV-pad voor de K/L-tabel. De tabel wordt ook in het resultaat van de tool geretourneerd."
              },
              "distance_bands": {
                "label": "Afstandsbanden",
                "description": "Aantal te evalueren afstandsbanden (standaard 10)."
              },
              "max_distance": {
                "label": "Maximale afstand",
                "description": "Grootste te evalueren afstand, in CRS-eenheden. Standaard: een kwart van de kortste zijde van de bbox van de punten."
              },
              "permutations": {
                "label": "Permutaties",
                "description": "Aantal CSR-simulaties voor de significantie-envelop (standaard 99; 0 schakelt de envelop uit)."
              },
              "weight_field": {
                "label": "Gewichtsveld",
                "description": "Optioneel numeriek veld dat elk punt weegt."
              },
              "seed": {
                "label": "Seed",
                "description": "Zaad voor de CSR-RNG (standaard 1), voor reproduceerbare enveloppen."
              }
            }
          },
          "rubbersheet_features": {
            "name": "Objecten rubbersheeten",
            "description": "Vervormt een vectorlaag zodat deze uitlijnt met een doel met behulp van verplaatsingslinks: een Delaunay-TIN-stuksgewijs-affiene (of IDW-)transformatie die paspunten op hun doelen plaatst en alles ertussen vloeiend vervormt — de conflatietransformatie, zoals ArcGIS Rubbersheet Features.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Aan te passen invoervectorlaag (elk geometrietype)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de vector (driver uit de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "links": {
                "label": "Links",
                "description": "Optionele lijnlaag met verplaatsingskoppelingen (elke lijn: eerste hoekpunt = van, laatste hoekpunt = naar)."
              },
              "target": {
                "label": "Doel",
                "description": "Optionele doelvectorlaag; koppelingen worden gegenereerd door het representatieve punt van elk invoerobject te koppelen aan het dichtstbijzijnde doel binnen search_distance."
              },
              "search_distance": {
                "label": "Zoekafstand",
                "description": "Maximale afstand waarbinnen invoer aan doel wordt gekoppeld bij het genereren van koppelingen (CRS-eenheden). Vereist samen met 'target'."
              },
              "method": {
                "label": "Methode",
                "description": "'linear' (stuksgewijs affien op een Delaunay-TIN, standaard) of 'idw' (omgekeerd-afstandsgewogen)."
              },
              "power": {
                "label": "Macht",
                "description": "IDW-exponent voor de afname buiten het TIN / voor method=idw. Standaard 2."
              }
            }
          },
          "sar_coherence": {
            "name": "SAR-coherentie",
            "description": "Berekent de genormaliseerde interferometrische coherentiegrootte (en optioneel de interferometrische fase) tussen twee gecoregistreerde complexe SAR-opnamen over een bewegend venster (ArcGIS Compute Coherence / Generate Interferogram). Coherentie meet fasestabiliteit in plaats van helderheid, zodat het verandering detecteert die intensiteitsverschillen niet kunnen zien — instorting, overstroming onder vegetatie, oogst, ijsbeweging — bij elk weer. Geen enkele tool in beide registers gebruikt SAR-fase. De invoer bestaat uit tweebands I/Q-paren en moet al gecoregistreerd zijn.",
            "params": {
              "reference": {
                "label": "Referentie",
                "description": "Complex SAR-raster (twee banden: I en Q) uit de eerste opname."
              },
              "secondary": {
                "label": "Secundair",
                "description": "Gecoregistreerd complex SAR-raster (twee banden: I en Q) uit de tweede opname."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van het coherentieraster (magnitude, 0..1). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "output_phase": {
                "label": "Fase uitvoeren",
                "description": "Optioneel uitvoerpad voor het raster met de interferometrische fase in radialen, gewikkeld naar (-pi, pi]."
              },
              "window_size": {
                "label": "Venstergrootte",
                "description": "Schattingsvenster als 'range,azimuth' in cellen (standaard '5,5'). De schatter is gecentreerd, dus een even waarde wordt naar BOVEN afgerond naar de eerstvolgende oneven grootte; het effectieve venster wordt teruggemeld als window_range/window_azimuth."
              },
              "bias_correction": {
                "label": "Biascorrectie",
                "description": "Corrigeert de opwaartse vertekening van de coherentieschatter bij kleine venstergroottes (standaard true)."
              }
            }
          },
          "semivariogram_sensitivity": {
            "name": "Semivariogramgevoeligheid",
            "description": "Verstoort de nugget, partiële sill en range van een gefit variogram, krigt opnieuw op de evaluatielocaties en rapporteert hoe ver de voorspellingen en standaardfouten verschuiven — de standaard verdedigbaarheidscontrole van een kriging-model (ArcGIS GA Semivariogram Sensitivity). De meegeleverde kriging-suite is breed en kriging_cross_validation meet de fit, maar niets meet de gevoeligheid, en de twee zijn onafhankelijk: een goed kruisgevalideerd model kan nog steeds zeer kwetsbaar zijn voor de parameters die de analist koos.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Puntlaag met de gemeten waarden."
              },
              "field": {
                "label": "Veld",
                "description": "Numeriek veld waarop kriging wordt toegepast."
              },
              "locations": {
                "label": "Locaties",
                "description": "Puntlaag met voorspellingslocaties waarop de gevoeligheid wordt geëvalueerd."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Tabel met één rij per verstoord model. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "model": {
                "label": "Model",
                "description": "Variogrammodel: 'exponential' (standaard), 'spherical' of 'gaussian'."
              },
              "nugget_span_percent": {
                "label": "Nugget-spreiding (%)",
                "description": "Halve verstoringsbreedte voor de nugget, in procenten (standaard 10)."
              },
              "partial_sill_span_percent": {
                "label": "Spreiding partiële sill (%)",
                "description": "Halve verstoringsbreedte voor de partiële sill, in procenten (standaard 10)."
              },
              "range_span_percent": {
                "label": "Range-spreiding (%)",
                "description": "Halve verstoringsbreedte voor de range, in procenten (standaard 10)."
              },
              "nugget_steps": {
                "label": "Nugget-stappen",
                "description": "Aantal monsters over het nuggetbereik (standaard 3; 1 zet het vast op de gefitte waarde)."
              },
              "partial_sill_steps": {
                "label": "Stappen partiële sill",
                "description": "Aantal monsters over het bereik van de partiële sill (standaard 3)."
              },
              "range_steps": {
                "label": "Range-stappen",
                "description": "Aantal monsters over het rangebereik (standaard 3)."
              },
              "lag_count": {
                "label": "Aantal lags",
                "description": "Lagbins van het empirische variogram die voor de basisfit worden gebruikt (standaard 12)."
              }
            }
          },
          "similarity_search": {
            "name": "Gelijkenis zoeken",
            "description": "Rangschikt kandidaatobjecten op attribuutgelijkenis met een of meer referentieobjecten over z-gestandaardiseerde numerieke velden (euclidisch of cosinus), meest/minst/beide — zoals ArcGIS Similarity Search.",
            "params": {
              "reference": {
                "label": "Referentie",
                "description": "Referentievectorlaag (een of meer objecten die het te matchen profiel bepalen)."
              },
              "candidates": {
                "label": "Kandidaten",
                "description": "Vectorlaag met kandidaten die op gelijkenis met de referentie wordt gerangschikt."
              },
              "fields": {
                "label": "Velden",
                "description": "Door komma's gescheiden numerieke veld(en) die worden vergeleken (moeten op beide lagen aanwezig zijn)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector (gerangschikte kandidaten). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "match_method": {
                "label": "Matchmethode",
                "description": "'euclidean' (met z-scores gestandaardiseerde afstand; standaard) of 'cosine' (hoekgelijkenis)."
              },
              "most_or_least": {
                "label": "Meeste of minste",
                "description": "Behoudt de 'most' gelijkende (standaard), de 'least' gelijkende of 'both' uiteinden."
              },
              "num_results": {
                "label": "Aantal resultaten",
                "description": "Aantal resultaten dat per uiteinde wordt behouden (0 = alle kandidaten). Standaard 10."
              }
            }
          },
          "simplify_3d_line": {
            "name": "3D-lijn vereenvoudigen",
            "description": "Vermindert het aantal hoekpunten van 3D-polylijnen met een Douglas-Peucker-splitsing die de afwijking in drie dimensies meet, met behoud van het verticale profiel, zoals ArcGIS Simplify 3D Line.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlaag met polylijnen (3D-hoekpunten; 2D-hoekpunten worden als vlak bijzonder geval behandeld)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              },
              "tolerance": {
                "label": "Tolerantie",
                "description": "Maximale 3D-afwijking in kaarteenheden. Hoekpunten die dichter bij de koorde liggen dan deze waarde worden verwijderd."
              },
              "z_factor": {
                "label": "Z-factor",
                "description": "Vermenigvuldigingsfactor die vóór de afstandstoets op Z wordt toegepast, voor gegevens waarvan de Z-eenheid van XY verschilt (standaard 1)."
              }
            }
          },
          "simplify_building": {
            "name": "Gebouw vereenvoudigen",
            "description": "Vermindert de hoekpunten van gebouwomtrekken met bescherming van rechte hoeken, met een drempelwaarde voor het weglaten op minimale oppervlakte, zoals ArcGIS Simplify Building.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Polygonen met gebouwgrondvlakken."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              },
              "tolerance": {
                "label": "Tolerantie",
                "description": "Vereenvoudigingstolerantie in kaarteenheden: de maximale afstand waarover de begrenzing mag verschuiven."
              },
              "minimum_area": {
                "label": "Minimale oppervlakte",
                "description": "Grondvlakken kleiner dan deze oppervlakte worden weggelaten (standaard 0, alles behouden)."
              },
              "keep_collapsed_points": {
                "label": "Samengevouwen punten behouden",
                "description": "Plaatst een punt op het zwaartepunt van elk grondvlak dat door minimum_area is weggelaten (standaard false)."
              },
              "corner_tolerance": {
                "label": "Hoektolerantie",
                "description": "Aantal graden waarbinnen een binnenhoek als beschermde rechte hoek geldt (standaard 20)."
              }
            }
          },
          "simplify_by_circular_arcs": {
            "name": "Vereenvoudigen met cirkelbogen",
            "description": "Vereenvoudigt lijnen en polygonen door reeksen hoekpunten te vervangen door rechte segmenten en echte cirkelbogen, waarbij ontworpen krommen behouden blijven in plaats van benaderd met koorden (ArcGIS Simplify By Straight Lines And Circular Arcs; de modus 'tangent' dekt Simplify By Tangent Segments). Elke vereenvoudiger in beide registers verwijdert alleen hoekpunten, wat dwingt tot een keuze tussen een gefacetteerde kromme en een onaanvaardbaar aantal hoekpunten op keerlussen, rotondes en tankomtrekken. Cirkels worden gefit met algebraïsche kleinste kwadraten, maar geaccepteerd op ware orthogonale afwijking, zodat de tolerantiegarantie geldt.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlaag met lijnen of polygonen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              },
              "tolerance": {
                "label": "Tolerantie",
                "description": "Maximaal toegestane afwijking van een gefitte primitief ten opzichte van de oorspronkelijke hoekpunten, in CRS-eenheden."
              },
              "mode": {
                "label": "Modus",
                "description": "'arcs' (standaard; fit rechte segmenten en cirkelbogen) of 'tangent' (alleen rechte segmenten, het gedrag van Simplify By Tangent Segments)."
              },
              "min_arc_angle": {
                "label": "Minimale boog-hoek",
                "description": "Bogen die minder dan dit aantal graden omspannen worden in plaats daarvan als rechte segmenten uitgevoerd (standaard 10)."
              },
              "max_radius": {
                "label": "Maximale straal",
                "description": "Bogen met een grotere straal dan deze waarde worden als rechte segmenten uitgevoerd (standaard: 1e6)."
              },
              "densify_output": {
                "label": "Uitvoer verdichten",
                "description": "Verdicht gefitte bogen bij het wegschrijven opnieuw tot een koordetolerantie (standaard true). Indien false worden alleen de eindpunten van de boog uitgevoerd, waardoor de geometrie op zichzelf de kromming verliest — lees 'output_arcs' om die terug te halen."
              },
              "output_arcs": {
                "label": "Bogen uitvoeren",
                "description": "Optioneel pad voor de tabel met gefitte bogen (object-ID, eindpunten, middelpunt, straal, doorlopen hoek met teken in graden). Indien weggelaten, wordt het in het geheugen opgeslagen (en toch geretourneerd)."
              }
            }
          },
          "simplify_by_tangent_segments": {
            "name": "Vereenvoudigen met raaksegmenten",
            "description": "Vervangt verdichte krommegeometrie door de minimale keten van rechte segmenten die binnen een maximale loodrechte verschuiving blijft, waarbij opeenvolgende segmenten bij hun snijpunt worden verbonden zodat het resultaat rakend blijft aan het origineel (ArcGIS Simplify By Tangent Segments). De lineaire tegenhanger van simplify_by_circular_arcs: simplify_features (Douglas-Peucker) kan alleen bestaande hoekpunten behouden en garandeert geen raking, wat knikken achterlaat op ontworpen geometrie, terwijl smooth_line en smooth_natural_features hoekpunten verplaatsen in plaats van verminderen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Te vereenvoudigen lijn- of polygoonobjecten."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Vereenvoudigde objecten met toegevoegde velden voor het aantal hoekpunten. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "max_offset": {
                "label": "Maximale offset",
                "description": "Maximale loodrechte afwijking ten opzichte van het origineel, in CRS-EENHEDEN. Op EPSG:4326 zijn dat graden, dus voor werk op meterschaal is ongeveer 2e-5 nodig, niet 2.0. De grens wordt per gefitte lijn afgedwongen, waardoor de uitgevoerde keten deze licht kan overschrijden nabij een knik waar opeenvolgende segmenten samenkomen."
              },
              "anchor_points": {
                "label": "Ankerpunten",
                "description": "Optionele puntlaag waarvan de locaties als hoekpunten behouden moeten blijven (ArcGIS anchor_points). Reeksen worden nooit over een ankerpunt heen uitgebreid."
              },
              "anchor_tolerance": {
                "label": "Ankertolerantie",
                "description": "Afstand waarbinnen een invoerhoekpunt als overeenkomend met een ankerpunt geldt (CRS-eenheden). Standaard: max_offset."
              },
              "min_run": {
                "label": "Minimale reeks",
                "description": "Minimaal aantal invoerhoekpunten dat een reeks moet omvatten voordat deze tot een segment wordt samengevouwen (standaard 3). Kortere reeksen worden ongewijzigd uitgevoerd."
              },
              "preserve_endpoints": {
                "label": "Eindpunten behouden",
                "description": "Behoudt het eerste en laatste hoekpunt van elk deel exact (standaard true)."
              }
            }
          },
          "simplify_shared_edges": {
            "name": "Gedeelde randen vereenvoudigen",
            "description": "Vereenvoudigt een polygoondekking terwijl grenzen die aangrenzende polygonen delen samenvallend blijven (geen gaten of slivers), zoals ArcGIS Simplify Shared Edges.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerpolygoonvectorbestand, formaat automatisch gedetecteerd (of een handle in het geheugen)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de vector (driver op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "tolerance": {
                "label": "Tolerantie",
                "description": "Vereenvoudigingstolerantie volgens Douglas-Peucker: de maximale afstand (in CRS-eenheden) waarmee een vereenvoudigde boog van het origineel mag afwijken. Standaard 1.0."
              },
              "simplify_boundary": {
                "label": "Grens vereenvoudigen",
                "description": "Vereenvoudigt ook bogen op de buitengrens van de dekking (randen die tot één polygoon behoren). Standaard true; zet op false om de buitengrens ongewijzigd te laten."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Kwantiseert hoekpunten op een rooster van deze grootte (CRS-eenheden) voordat de topologie wordt opgebouwd, zodat vrijwel samenvallende gedeelde hoekpunten als één worden behandeld. Standaard 0 (coördinaten exact gebruiken)."
              }
            }
          },
          "slice_raster": {
            "name": "Raster in plakken snijden",
            "description": "Classificeert een continu raster in N ordinale zones (gelijk interval, gelijke oppervlakte, natuurlijke grenzen, geometrisch interval of standaardafwijking).",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het continue invoerrasterbestand."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van het zoneraster. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die wordt geclassificeerd (standaard 1)."
              },
              "number_zones": {
                "label": "Aantal zones",
                "description": "Aantal uitvoerzones (standaard 10). Wordt genegeerd voor std_dev."
              },
              "slice_type": {
                "label": "Snijtype",
                "description": "Classificatiemethode: equal_interval, equal_area, natural_breaks, geometric_interval of std_dev (standaard equal_interval)."
              },
              "base_output_zone": {
                "label": "Basisuitvoerzone",
                "description": "Zone-ID die aan de laagste zone wordt toegekend (standaard 1)."
              },
              "class_interval_size": {
                "label": "Klasse-intervalgrootte",
                "description": "Intervalgrootte van de standaardafwijking in σ-eenheden (standaard 1.0). Wordt alleen door std_dev gebruikt."
              }
            }
          },
          "smooth_natural_features": {
            "name": "Natuurlijke objecten gladstrijken",
            "description": "Strijkt gepixelde polygonen en gekartelde lijnen (raster-naar-vector-uitvoer) glad tot natuurlijk ogende krommen via Chaikin-hoekafsnijding, met behoud van de polygoonoppervlakte.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoervectorbestand met polygoon- of lijnobjecten, formaat automatisch gedetecteerd (of een handle in het geheugen)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de vector (driver op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "segment_length": {
                "label": "Segmentlengte",
                "description": "Schaal van de te verwijderen trapvormige ruis, in CRS-eenheden — idealiter de celgrootte van het bronraster. Wordt indien weggelaten automatisch afgeleid uit de mediane randlengte van de laag."
              },
              "iterations": {
                "label": "Iteraties",
                "description": "Aantal Chaikin-afvlakkingsiteraties (1-8); meer iteraties geven een gladdere uitvoer met meer hoekpunten. Standaard 3."
              },
              "preserve_area": {
                "label": "Oppervlakte behouden",
                "description": "Herstelt de oorspronkelijke oppervlakte van elke polygoon na het afvlakken (het afsnijden van hoeken verkleint convexe vormen). Standaard true."
              }
            }
          },
          "smooth_shared_edges": {
            "name": "Gedeelde randen gladstrijken",
            "description": "Strijkt een polygoondekking glad terwijl grenzen die aangrenzende polygonen delen samenvallend blijven (geen gaten of slivers), zoals ArcGIS Smooth Shared Edges.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerpolygoonvectorbestand, formaat automatisch gedetecteerd (of een handle in het geheugen)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de vector (driver op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "algorithm": {
                "label": "Algoritme",
                "description": "Afvlakkingsalgoritme: 'paek' (Gauss-kernel, gestuurd door de tolerantie; standaard) of 'bezier' (Chaikin-hoekafsnijding, negeert de tolerantie)."
              },
              "tolerance": {
                "label": "Tolerantie",
                "description": "PAEK-afvlakkingslengte in CRS-eenheden: het booglengtevenster waarover hoekpunten worden gemiddeld. Grotere waarden geven gladdere krommen. Standaard 1.0. Wordt genegeerd door het algoritme 'bezier'."
              },
              "smooth_boundary": {
                "label": "Grens gladstrijken",
                "description": "Vlakt ook bogen op de buitengrens van de dekking af (randen die tot één polygoon behoren). Standaard true; zet op false om de buitengrens ongewijzigd te laten."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Kwantiseert hoekpunten op een rooster van deze grootte (CRS-eenheden) voordat de topologie wordt opgebouwd, zodat vrijwel samenvallende gedeelde hoekpunten als één worden behandeld. Standaard 0 (coördinaten exact gebruiken)."
              }
            }
          },
          "snap_tracks": {
            "name": "Tracks snappen",
            "description": "Map-matcht GPS-tracks met tijdstempel op een wegennetwerk met een Viterbi-dynamisch programma (emissie = snapafstand, transitie = routecontinuïteit), zodat gematchte tracks één plausibel pad volgen in plaats van te zigzaggen tussen parallelle straten — zoals ArcGIS Snap Tracks.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlaag met GPS-punten voorzien van tijdstempels."
              },
              "network": {
                "label": "Netwerk",
                "description": "Lijnlaag met het wegennetwerk waarop wordt gematcht."
              },
              "track_field": {
                "label": "Trackveld",
                "description": "Veld dat elk spoor / elke bewegende entiteit identificeert."
              },
              "time_field": {
                "label": "Tijdveld",
                "description": "Veld dat de tijd van elk punt bevat (numerieke seconden of ISO-8601)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerlaag met gesnapte punten (driver uit de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "search_distance": {
                "label": "Zoekafstand",
                "description": "Kandidaatstraal: alleen netwerkverbindingen binnen deze afstand van een meting worden beschouwd. Vereist."
              },
              "max_candidates": {
                "label": "Maximaal aantal kandidaten",
                "description": "Maximaal aantal kandidaatverbindingen dat per meting wordt behouden (standaard 5)."
              }
            }
          },
          "solar_radiation": {
            "name": "Zonnestraling",
            "description": "Inkomende zonnestraling (Wh/m²) over een DEM voor een datumbereik: direct + diffuus, rekening houdend met helling/expositie, horizonschaduw en zonnestand door de tijd — zoals ArcGIS Raster Solar Radiation.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoerhoogteraster (geprojecteerd, meters — helling en horizon vereisen werkelijke afstanden)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerraster met de totale straling (Wh/m²). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "direct_output": {
                "label": "Directe uitvoer",
                "description": "Optioneel uitvoerraster voor de component directe straling (Wh/m²)."
              },
              "diffuse_output": {
                "label": "Diffuse uitvoer",
                "description": "Optioneel uitvoerraster voor de component diffuse straling (Wh/m²)."
              },
              "start_day": {
                "label": "Begindag",
                "description": "Eerste dag van het jaar (1-365) of een ISO-datum (YYYY-MM-DD). Standaard 1."
              },
              "end_day": {
                "label": "Einddag",
                "description": "Laatste dag van het jaar (1-365) of een ISO-datum. Standaard 365."
              },
              "day_interval": {
                "label": "Dagenintervalsgrootte",
                "description": "Bemonstert om de zoveel dagen binnen het bereik (elk monster vertegenwoordigt dat aantal dagen). Standaard: bereik/12 (ongeveer 12 monsters)."
              },
              "time_step": {
                "label": "Tijdstap",
                "description": "Aantal uren tussen de monsters van de zonnestand gedurende elke dag. Standaard 0.5."
              },
              "latitude": {
                "label": "Breedtegraad",
                "description": "Breedtegraad in graden. Standaard: afgeleid uit het middelpunt van het DEM voor EPSG:4326 / 3857."
              },
              "transmittivity": {
                "label": "Transmissiviteit",
                "description": "Atmosferische doorlatendheid (0-1) voor een eenheidsluchtmassa. Standaard 0.6."
              },
              "diffuse_proportion": {
                "label": "Diffuus aandeel",
                "description": "Fractie van de extraterrestrische horizontale instraling die als diffuse hemelstraling wordt behandeld (0-1). Standaard 0.3."
              },
              "horizon_distance": {
                "label": "Horizonafstand",
                "description": "Maximale lengte van de horizonstraal in cellen (begrenst de schaduwberekening). Standaard 100."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde DEM-band (standaard 1)."
              }
            }
          },
          "sort_features": {
            "name": "Objecten sorteren",
            "description": "Sorteert een vectorlaag opnieuw op attribuutvelden of langs een Hilbert-ruimtevullende kromme (ruimtelijke sortering), zoals ArcGIS Sort — Hilbert-ordening clustert ruimtelijk nabije records om GeoParquet-pruning en PMTiles-lokaliteit te verbeteren.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorlaag in de nieuwe volgorde. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "method": {
                "label": "Methode",
                "description": "'hilbert' (volgorde volgens een ruimtelijke curve; standaard) of 'attribute' (volgens de lijst 'fields')."
              },
              "fields": {
                "label": "Velden",
                "description": "Modus attribute: door komma's gescheiden velden met een optionele richting, bijv. 'pop:desc,name:asc'."
              },
              "index_field": {
                "label": "Indexveld",
                "description": "Optionele veldnaam om de Hilbert-curve-afstand van elk object in op te slaan."
              }
            }
          },
          "space_time_kernel_density": {
            "name": "Ruimte-tijd-kerneldichtheid",
            "description": "Ruimte-tijd-kerneldichtheid van punten met tijdstempel: één dichtheidsband per tijdplak (een multibandraster) uit een scheidbare ruimtelijke (Epanechnikov/quartisch) x temporele (driehoekig/Epanechnikov) kernel, zodat elke band punten aggregeert die zowel in ruimte als tijd nabij zijn, zoals ArcGIS Space Time Kernel Density. De tijdbewuste tegenhanger van de meegeleverde 2D-heat_map.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met punten. Geografische invoer (EPSG:4326/niet-gemarkeerde lon-lat) gebruikt haversine-meters; geprojecteerde invoer gebruikt CRS-eenheden. Niet-puntgeometrieën gebruiken hun eerste/representatieve hoekpunt."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het multiband-raster (één band per tijddoorsnede; driver uit de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "time_field": {
                "label": "Tijdveld",
                "description": "Veld dat de tijd van elk punt bevat: een numeriek veld (in eigen eenheden) of een ISO-8601-datum-/datumtijdtekenreeks."
              },
              "time_step": {
                "label": "Tijdstap",
                "description": "Doorsnede-interval: een gewoon getal (numeriek time_field) of een duur zoals '1w', '7d', '12h', '1M'. Standaard '1w'."
              },
              "temporal_bandwidth": {
                "label": "Temporele bandbreedte",
                "description": "Halve breedte van de temporele kernel, met dezelfde eenheden/duursyntaxis als time_step. Standaard: gelijk aan time_step."
              },
              "spatial_bandwidth": {
                "label": "Ruimtelijke bandbreedte",
                "description": "Straal van de ruimtelijke kernel, in meters voor geografische invoer of in CRS-eenheden voor geprojecteerde invoer. Standaard: maximale omvang / 20."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Uitvoercelgrootte in CRS-eenheden (graden voor geografische invoer). Standaard: maximale omvang / 200."
              },
              "weight_field": {
                "label": "Gewichtsveld",
                "description": "Optioneel numeriek veld dat elk punt weegt. Standaard: elk punt telt als 1."
              },
              "spatial_kernel": {
                "label": "Ruimtelijke kernel",
                "description": "Vorm van de ruimtelijke kernel: 'epanechnikov' (standaard) of 'quartic'."
              },
              "temporal_kernel": {
                "label": "Temporele kernel",
                "description": "Vorm van de temporele kernel: 'triangular' (standaard) of 'epanechnikov'."
              },
              "epsg": {
                "label": "EPSG",
                "description": "EPSG waarmee het uitvoerraster wordt gemarkeerd (standaard: uit de invoerlaag)."
              }
            }
          },
          "spatial_association_between_zones": {
            "name": "Ruimtelijke associatie tussen zones",
            "description": "Meet hoe sterk twee categorische zonerasters overeenkomen via de V-maat (homogeniteit/volledigheid) plus associatiescores per zone.",
            "params": {
              "zones1": {
                "label": "Zones1",
                "description": "Eerste categorische zoneraster (bijv. landbedekking). Hetzelfde raster als zones2."
              },
              "zones2": {
                "label": "Zones2",
                "description": "Tweede categorische zoneraster (bijv. ecoregio's) op hetzelfde raster als zones1."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optionele CSV-tabel per klasse van zone 1 (klasse, aantal, associatie, dominante klasse van zone 2 en aandeel). Algemene maten worden altijd in het resultaat geretourneerd."
              },
              "band1": {
                "label": "Band1",
                "description": "1-gebaseerde band van zones1 die wordt gelezen (standaard 1)."
              },
              "band2": {
                "label": "Band2",
                "description": "1-gebaseerde band van zones2 die wordt gelezen (standaard 1)."
              }
            }
          },
          "spatial_eigenvector_filtering": {
            "name": "Ruimtelijke eigenvectorfiltering (MESF)",
            "description": "Genereert Moran-eigenvectoren (ruimtelijke filters) uit een ruimtelijke gewichtenmatrix en voegt de geautocorreleerde componenten toe als velden met verklarende variabelen (MEV1, MEV2, …), zoals ArcGIS Decompose Spatial Structure / Create Spatial Component Explanatory Variables. Bouwt een symmetrische connectiviteitsmatrix (contiguïteit of gesymmetriseerde KNN), centreert deze dubbel (M C M) en voert eigendecompositie uit met een pure-Rust cyclische Jacobi-oplosser; behoudt eigenvectoren waarvan Moran's I ≥ min_autocorrelation, aflopend gerangschikt en begrensd op max_components.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag (punten/lijnen/polygonen; aangrenzingsmethoden vereisen polygonen)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector — de invoerobjecten met de behouden eigenvectoren toegevoegd als MEV1, MEV2, …. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "method": {
                "label": "Methode",
                "description": "Conceptualisering van ruimtelijke relaties: 'contiguity_edges' (rook), 'contiguity_edges_corners' (queen) of 'knn' (gesymmetriseerd). Standaard 'contiguity_edges_corners'."
              },
              "number_of_neighbors": {
                "label": "Aantal buren",
                "description": "Aantal dichtstbijzijnde buren k voor method = knn. Standaard 8."
              },
              "min_autocorrelation": {
                "label": "Minimale autocorrelatie",
                "description": "Minimale Moran's I die een eigenvector moet hebben om te worden behouden (positieve ruimtelijke autocorrelatie). Standaard 0.25."
              },
              "max_components": {
                "label": "Maximaal aantal componenten",
                "description": "Maximaal aantal uit te voeren eigenvectoren, genomen in aflopende volgorde van Moran's I. Standaard 15."
              }
            }
          },
          "spatial_outlier_detection": {
            "name": "Ruimtelijke uitschieterdetectie",
            "description": "Scoort punten op hun Local Outlier Factor (LOF) — hoe geïsoleerd elk punt is ten opzichte van de lokale dichtheid van zijn k naaste buren — en markeert de grootste uitschieters, zoals ArcGIS Spatial Outlier Detection. Vult het gat dat het binaire ruislabel van DBSCAN achterlaat.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met punten."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpunten met LOF-score en uitschietersmarkering. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "neighbors": {
                "label": "Buren",
                "description": "Aantal dichtstbijzijnde buren k (standaard 20)."
              },
              "percent_outlier": {
                "label": "Percentage uitschieters",
                "description": "Markeert het bovenste percentage punten volgens LOF als uitschieters (standaard 5). Wordt genegeerd als 'threshold' is ingesteld."
              },
              "threshold": {
                "label": "Drempelwaarde",
                "description": "Expliciete LOF-afkapwaarde: punten met een LOF hierboven zijn uitschieters (heeft voorrang op percent_outlier)."
              }
            }
          },
          "spatially_constrained_multivariate_clustering": {
            "name": "Ruimtelijk beperkte multivariate clustering",
            "description": "Partitioneert objecten in ruimtelijk aaneengesloten, attribuut-homogene regio's met het SKATER-algoritme (minimale opspannende boom over een contiguïteitsgraaf, gesneden om de variantie tussen clusters te maximaliseren), met optionele grootte-/balansbeperkingen. Elk cluster is per constructie verbonden, anders dan bij multivariate_clustering. Zoals ArcGIS Spatially Constrained Multivariate Clustering.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerobjecten met polygonen (of punten)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad voor de invoerobjecten plus een veld CLUSTER_ID. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "analysis_fields": {
                "label": "Analysevelden",
                "description": "Door komma's/puntkomma's gescheiden namen van de numerieke velden waarop wordt geclusterd."
              },
              "number_of_clusters": {
                "label": "Aantal clusters",
                "description": "Beoogd aantal clusters (standaard 5)."
              },
              "neighborhood": {
                "label": "Omgeving",
                "description": "'contiguity_edges' (rook, standaard), 'contiguity_edges_corners' (queen) of 'knn'."
              },
              "number_of_neighbors": {
                "label": "Aantal buren",
                "description": "Aantal buren voor de omgeving 'knn' (standaard 8)."
              },
              "constraint": {
                "label": "Beperking",
                "description": "'none' (standaard), 'feature_count' of 'attribute_value'."
              },
              "constraint_field": {
                "label": "Beperkingsveld",
                "description": "Veld dat per cluster wordt gesommeerd wanneer 'constraint' gelijk is aan 'attribute_value'."
              },
              "min_constraint": {
                "label": "Minimale beperking",
                "description": "Minimaal aantal objecten of attribuuttotaal per cluster; splitsingen die hiermee in strijd zijn worden overgeslagen."
              },
              "max_constraint": {
                "label": "Maximale beperking",
                "description": "Maximaal aantal objecten of attribuuttotaal per cluster; clusters daarboven worden verder gesplitst, zelfs voorbij 'number_of_clusters'."
              },
              "scale_data": {
                "label": "Gegevens schalen",
                "description": "Standaardiseert de analysevelden met z-scores vóór het clusteren (standaard true)."
              },
              "output_table": {
                "label": "Uitvoertabel",
                "description": "Optioneel pad voor de samenvatting per cluster (gemiddelden, R-kwadraat per variabele, pseudo-F)."
              }
            }
          },
          "spectral_index": {
            "name": "Spectrale index",
            "description": "Berekent een spectrale index (NDVI, NDWI, NDBI, NBR, EVI, SAVI) uit een multibandraster.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het multiband-invoerrasterbestand."
              },
              "index": {
                "label": "Index",
                "description": "Te berekenen index: ndvi, ndwi, ndbi, nbr, evi of savi."
              },
              "red": {
                "label": "Rood",
                "description": "1-gebaseerd bandnummer van de rode band."
              },
              "nir": {
                "label": "NIR",
                "description": "1-gebaseerd bandnummer van de nabij-infrarode band."
              },
              "green": {
                "label": "Groen",
                "description": "1-gebaseerd bandnummer van de groene band."
              },
              "blue": {
                "label": "Blauw",
                "description": "1-gebaseerd bandnummer van de blauwe band."
              },
              "swir": {
                "label": "SWIR",
                "description": "1-gebaseerd bandnummer van de kortegolf-infrarode band."
              },
              "soil_factor": {
                "label": "Bodemfactor",
                "description": "Bodemcorrectiefactor L voor SAVI (standaard 0.5)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              }
            }
          },
          "split_by_attributes": {
            "name": "Splitsen op attributen",
            "description": "Splitst een vectorlaag in één uitvoerbestand per unieke waarde (of combinatie) van de opgegeven veld(en), zoals ArcGIS Split By Attributes.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag."
              },
              "output_dir": {
                "label": "Uitvoermap",
                "description": "Uitvoermap; hierin wordt één bestand per groep geschreven (wordt zo nodig aangemaakt)."
              },
              "fields": {
                "label": "Velden",
                "description": "Door komma's gescheiden veldna(a)m(en) waarop wordt gesplitst (een sleutel met meerdere velden verbindt de waarden met '__')."
              },
              "format": {
                "label": "Formaat",
                "description": "Extensie van het uitvoerformaat: geojson (standaard), fgb, parquet, shp."
              }
            }
          },
          "split_by_features": {
            "name": "Splitsen op objecten",
            "description": "Snijdt een invoerlaag uit tegen elke zone van een polygoonsplitslaag en schrijft één uitvoerbestand per afzonderlijke splitsveldwaarde. Zones met dezelfde waarde worden eerst samengevoegd, en lege zones worden overgeslagen. Zoals ArcGIS Split (Analysis).",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Te splitsen objecten (punt, lijn of polygoon)."
              },
              "split_features": {
                "label": "Splitsobjecten",
                "description": "Polygoonlaag waarvan de objecten de splitsingszones bepalen."
              },
              "split_field": {
                "label": "Splitsveld",
                "description": "Veld op 'split_features' dat de naam van elke uitvoer levert."
              },
              "output_dir": {
                "label": "Uitvoermap",
                "description": "Map die één uitvoerbestand per afzonderlijke splitsingswaarde ontvangt."
              },
              "output_format": {
                "label": "Uitvoerformaat",
                "description": "Extensie/driver van het uitvoerbestand: 'geojson' (standaard), 'shp', 'gpkg', 'parquet', 'csv'."
              }
            }
          },
          "split_line_at_point": {
            "name": "Lijn splitsen bij punt",
            "description": "Splitst polylijnobjecten op de locaties van puntobjecten die binnen een zoekstraal vallen, voegt bij elk gesnapt punt een knoop in en geeft één object per resulterend deelsegment (attributen van het bovenliggende object behouden) — zoals ArcGIS Split Line At Point.",
            "params": {
              "input_lines": {
                "label": "Invoerlijnen",
                "description": "Te splitsen invoervectorlaag met polylijnen."
              },
              "point_features": {
                "label": "Puntobjecten",
                "description": "Vectorlaag met punten (of multipunten) waarvan de locaties de splitsingsknooppunten bepalen."
              },
              "search_radius": {
                "label": "Zoekstraal",
                "description": "Maximale afstand, in de CRS-eenheden van de lijnen, tussen een punt en een lijn waarbij het punt die lijn splitst. Vereist, positief."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de lijnvector (driver uit de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              }
            }
          },
          "split_raster": {
            "name": "Raster splitsen",
            "description": "Splitst een raster in losstaande tegels op basis van aantal tegels, vaste pixelgrootte of polygoonobjecten, met optionele pixeloverlap — zoals ArcGIS Split Raster. Elke tegel behoudt CRS en georeferentie.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerraster."
              },
              "output_dir": {
                "label": "Uitvoermap",
                "description": "Uitvoermap voor de tegelbestanden (wordt zo nodig aangemaakt)."
              },
              "base_name": {
                "label": "Basisnaam",
                "description": "Voorvoegsel voor de uitvoerbestandsnaam (standaard 'tile')."
              },
              "split_method": {
                "label": "Splitsmethode",
                "description": "'count' (N×M-rooster, standaard), 'size' (tegels met een vast aantal pixels) of 'polygons' (één uitsnede per object)."
              },
              "num_x": {
                "label": "Aantal X",
                "description": "Aantal tegelkolommen voor 'count' (standaard 2)."
              },
              "num_y": {
                "label": "Aantal Y",
                "description": "Aantal tegelrijen voor 'count' (standaard 2)."
              },
              "tile_size_x": {
                "label": "Tegelgrootte X",
                "description": "Tegelbreedte in pixels voor 'size' (standaard 256)."
              },
              "tile_size_y": {
                "label": "Tegelgrootte Y",
                "description": "Tegelhoogte in pixels voor 'size' (standaard 256)."
              },
              "polygons": {
                "label": "Polygonen",
                "description": "Polygoonvectorlaag voor de modus 'polygons' (één tegel per object)."
              },
              "overlap": {
                "label": "Overlap",
                "description": "Pixeloverlap die aan alle zijden aan elke tegel wordt toegevoegd (standaard 0)."
              },
              "format": {
                "label": "Formaat",
                "description": "Extensie/driver van het uitvoerbestand: 'tif' (standaard) of 'png'."
              }
            }
          },
          "stack_profile": {
            "name": "Stapelprofiel",
            "description": "Bemonstert meerdere oppervlakterasters langs dezelfde polylijn en geeft één tabel in lang formaat (LINE_ID, FIRST_DIST, FIRST_Z, SRC_ID, SRC_NAME), zodat de oppervlakken in dwarsdoorsnede op een gedeelde afstandsas kunnen worden vergeleken. Zoals ArcGIS Stack Profile.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerlijnobjecten waarvan een profiel wordt gemaakt."
              },
              "surfaces": {
                "label": "Oppervlakken",
                "description": "Door komma's/puntkomma's gescheiden lijst met paden van oppervlakterasters, die in de opgegeven volgorde worden bemonsterd."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de profieltabel. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "sample_distance": {
                "label": "Bemonsteringsafstand",
                "description": "Afstand tussen stations in kaarteenheden (standaard: de fijnste celgrootte van de invoer)."
              },
              "line_id_field": {
                "label": "Lijn-ID-veld",
                "description": "Optioneel veld dat LINE_ID levert; standaard de objectindex."
              },
              "method": {
                "label": "Methode",
                "description": "Oppervlaktebemonstering: 'bilinear' (standaard) of 'nearest'."
              }
            }
          },
          "storage_capacity": {
            "name": "Bergingscapaciteit",
            "description": "Doorloopt waterspiegelhoogten over een DEM en rapporteert de overstroomde oppervlakte en het bergingsvolume op elk niveau (de peil-oppervlakte-volumecurve) per analysezone of over het hele DEM, zoals ArcGIS Storage Capacity.",
            "params": {
              "dem": {
                "label": "DEM",
                "description": "Invoer-DEM-raster (hoogtes)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het CSV-bestand (zone_id, level, elevation, area, volume)."
              },
              "zones": {
                "label": "Zones",
                "description": "Optionele polygoonlaag; één peil-oppervlakte-volumecurve per polygoon. Indien weggelaten, vormt het hele DEM één zone."
              },
              "zone_id_field": {
                "label": "Zone-ID-veld",
                "description": "Veld dat elke zone in de uitvoer benoemt (standaard: de objectindex)."
              },
              "num_levels": {
                "label": "Aantal niveaus",
                "description": "Aantal hoogtestappen tussen het minimum en maximum van elke zone (standaard 20). Wordt genegeerd als 'increment' is opgegeven."
              },
              "increment": {
                "label": "Verhogen",
                "description": "Vaste hoogtestap tussen niveaus (kaarteenheden). Heeft voorrang op 'num_levels'."
              },
              "min_elevation": {
                "label": "Minimale hoogte",
                "description": "Optionele ondergrens van de hoogte voor de doorloop (standaard: het laagste terrein van elke zone)."
              },
              "max_elevation": {
                "label": "Maximale hoogte",
                "description": "Optionele bovengrens van de hoogte voor de doorloop (standaard: het hoogste terrein van elke zone)."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde DEM-band (standaard 1)."
              }
            }
          },
          "strip_map_index_features": {
            "name": "Stripkaartindexobjecten",
            "description": "Doorloopt elke invoerlijn en geeft een genummerde reeks gedraaide, overlappende paginarechthoeken georiënteerd naar de lokale routepeiling, voor stripkaartatlassen langs een snelweg, rivier, pijpleiding of pad — zoals ArcGIS Strip Map Index Features.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Te indexeren invoervectorlaag met lijnen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de polygoonvector met indexpagina's (driver uit de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "page_length": {
                "label": "Paginalengte",
                "description": "Lengte van elke pagina langs de route, in CRS-eenheden. Vereist."
              },
              "page_width": {
                "label": "Paginabreedte",
                "description": "Breedte van elke pagina dwars op de route, in CRS-eenheden. Vereist."
              },
              "overlap": {
                "label": "Overlap",
                "description": "Fractie [0, 1) van page_length waarmee opeenvolgende pagina's elkaar langs de route overlappen. Standaard 0."
              },
              "orientation": {
                "label": "Oriëntatie",
                "description": "along_line (standaard): draait elke pagina naar de lokale koershoek van de koorde. horizontal/vertical: snapt de rotatie naar de dichtstbijzijnde oost-west-/noord-zuid-as."
              },
              "start_page": {
                "label": "Startpagina",
                "description": "Eerste toe te kennen paginanummer. Standaard 1."
              }
            }
          },
          "subdivide_polygon": {
            "name": "Polygoon onderverdelen",
            "description": "Verdeelt elke polygoon in delen van gelijke oppervlakte (een vast aantal delen, of elk een doeloppervlakte) met rechte parallelle sneden onder een gegeven hoek, zoals ArcGIS Subdivide Polygon.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met polygonen (gebruik een geprojecteerd/oppervlaktegetrouw CRS voor werkelijk gelijke oppervlakten)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorpad voor polygonen (stuurprogramma op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "method": {
                "label": "Methode",
                "description": "'equal_parts' (num_parts stroken van gelijke oppervlakte, standaard) of 'equal_areas' (stroken van target_area, met de rest in de laatste)."
              },
              "num_parts": {
                "label": "Aantal delen",
                "description": "Aantal delen van gelijke oppervlakte (voor method=equal_parts). Standaard 2."
              },
              "target_area": {
                "label": "Doeloppervlakte",
                "description": "Oppervlakte van elk deel in CRS-eenheden (vereist voor method=equal_areas)."
              },
              "angle": {
                "label": "Hoek",
                "description": "Oriëntatie van de snede in graden (0 = verticale sneden / horizontale stroken). Standaard 0."
              }
            }
          },
          "subset_features": {
            "name": "Objecten selecteren (subset)",
            "description": "Splitst een objectlaag willekeurig in een trainingsdeelverzameling en haar complement (testdeelverzameling), op percentage of absoluut aantal, met een geseede deterministische RNG. Optioneel gestratificeerd naar een groepsveld. Zoals ArcGIS Subset Features.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag (elk geometrietype)."
              },
              "output_training": {
                "label": "Uitvoer training",
                "description": "Uitvoerpad voor de trainingssubset. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "output_test": {
                "label": "Uitvoer test",
                "description": "Optioneel uitvoerpad voor de complementaire (test)subset. Indien weggelaten, wordt de testsubset in het geheugen opgeslagen."
              },
              "size": {
                "label": "Grootte",
                "description": "Grootte van de trainingssubset: een percentage (0-100) of een absoluut aantal objecten, volgens 'size_method' (standaard 50)."
              },
              "size_method": {
                "label": "Groottemethode",
                "description": "'percentage' (standaard) of 'absolute'."
              },
              "seed": {
                "label": "Seed",
                "description": "RNG-zaad voor een reproduceerbare splitsing (standaard een vaste constante)."
              },
              "group_field": {
                "label": "Groepeerveld",
                "description": "Optioneel veld om op te stratificeren: elke groep levert een eigen evenredig aandeel in de trainingssubset."
              }
            }
          },
          "subset_multidimensional_raster": {
            "name": "Deelverzameling van multidimensionaal raster",
            "description": "Beperkt een multidimensionale rasterkubus tot een deelverzameling van zijn plakken, op dimensiecoördinaatbereik, expliciete indices of een stap (ArcGIS Subset Multidimensional Raster / Select By Dimension). De kubustools van ronde 18 gebruiken allemaal een hele kubus, dus er was geen manier om een studievenster te analyseren zonder de invoer buiten de catalogus opnieuw te genereren.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Multidimensionaal raster, of een door komma's gescheiden lijst van gecoregistreerde rasters waarvan de banden tot één kubus worden samengevoegd."
              },
              "dimension_values": {
                "label": "Dimensiewaarden",
                "description": "Optionele, strikt oplopende coördinaten per doorsnede (datums, dieptes, golflengten), één per doorsnede. Vereist door 'dimension_range'."
              },
              "dimension": {
                "label": "Dimensie",
                "description": "Naam van de dimensie, alleen gebruikt in de rapportage (standaard 'slice')."
              },
              "dimension_range": {
                "label": "Dimensiebereik",
                "description": "Inclusief coördinatenbereik als 'min,max'. Vereist 'dimension_values'. Sluit 'indices' uit."
              },
              "indices": {
                "label": "Indices",
                "description": "Expliciete 0-gebaseerde doorsnede-indices, bijv. '0,2,5'. Sluit 'dimension_range' uit."
              },
              "step": {
                "label": "Stap",
                "description": "Behoudt elke N-de doorsnede na de overige filters (standaard 1)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerraster met de kubus, één band per behouden doorsnede. Indien weggelaten, wordt het in het geheugen opgeslagen."
              }
            }
          },
          "summarize_categorical_raster": {
            "name": "Categorisch raster samenvatten",
            "description": "Tabelleert het aantal cellen, de oppervlakte en het aandeel van elke klasse in een categorisch raster, één rij per plak voor multiband-/multidimensionale stapels, optioneel beperkt tot een interessegebied (ArcGIS Summarize Categorical Raster). De meegeleverde raster_area schrijft klassetotalen terug in rastercellen in plaats van een tabel en werkt alleen op één band, zodat het niet de klasse-oppervlaktereeks per datum kan produceren die landbedekkingsveranderingsanalyse nodig heeft. De celoppervlakte wordt per rij geïntegreerd voor geografische rasters.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Categorisch invoerraster (enkelbandig of multiband)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de tabel. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              },
              "aoi": {
                "label": "Interessegebied (AOI)",
                "description": "Optionele polygoonlaag die de samenvatting beperkt tot een interessegebied."
              },
              "aoi_id_field": {
                "label": "AOI-ID-veld",
                "description": "Veld op 'aoi' dat elk gebied identificeert; indien opgegeven, wordt de samenvatting per AOI-object gemaakt."
              },
              "area_units": {
                "label": "Oppervlakte-eenheden",
                "description": "Oppervlakte-eenheden: map_units (standaard), hectares of square_kilometers."
              },
              "include_nodata": {
                "label": "NoData opnemen",
                "description": "Indien true wordt no-data als een eigen klasserij gerapporteerd (standaard false)."
              },
              "bands": {
                "label": "Banden",
                "description": "Door komma's gescheiden lijst van 1-gebaseerde banden die worden samengevat (standaard: alle banden)."
              }
            }
          },
          "summarize_nearby": {
            "name": "Nabijheid samenvatten",
            "description": "Buffert invoerobjecten op een of meer rechtlijnige afstanden en vat een tweede laag samen binnen elke buffer: aantal objecten, doorsneden oppervlakte (polygonen), uitgesneden lengte (lijnen) en maatgewogen som/gemiddelde van numerieke velden.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag waarvan de objecten worden gebufferd (punten, lijnen of polygonen), formaat automatisch gedetecteerd (of een handle in het geheugen)."
              },
              "summary_features": {
                "label": "Samenvattingsobjecten",
                "description": "Vectorlaag die binnen elke buffer wordt samengevat (polygonen samengevat op basis van de doorsneden oppervlakte, lijnen op basis van de uitgesneden lengte, punten op basis van het aantal)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de vector (driver op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "distances": {
                "label": "Afstanden",
                "description": "Door komma's gescheiden lijst met bufferafstanden in CRS-eenheden, bijv. \"1000,2000,5000\". Wordt oplopend gesorteerd; duplicaten en niet-positieve waarden worden weggelaten."
              },
              "sum_fields": {
                "label": "Somvelden",
                "description": "Optionele, door komma's gescheiden numerieke velden in de samenvattingslaag die worden geaggregeerd. Elk levert een kolom sum_<field> en mean_<field> op (oppervlaktegewogen voor polygonen, lengtegewogen voor lijnen, ongewogen voor punten)."
              },
              "id_field": {
                "label": "ID-veld",
                "description": "Optioneel veld in de invoerlaag dat elk bronobject in de uitvoer identificeert. Standaard de objectindex van de invoer."
              }
            }
          },
          "summarize_percent_change": {
            "name": "Procentuele verandering samenvatten",
            "description": "Telt incidenten uit een huidige en een vorige periode binnen elk gebiedsobject en rapporteert het tellingsverschil, de procentuele verandering en een veranderingsklasse. De procentuele verandering is null (klasse 'new') waar de vorige telling nul is. Zoals ArcGIS Summarize Percent Change.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Gebiedsobjecten (wijken, districten, rastercellen) waarin wordt samengevat."
              },
              "current_features": {
                "label": "Huidige objecten",
                "description": "Puntobjecten met incidenten voor de huidige periode."
              },
              "previous_features": {
                "label": "Vorige objecten",
                "description": "Puntobjecten met incidenten voor de vorige periode."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad voor de gebieden met veranderingsvelden. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "search_radius": {
                "label": "Zoekstraal",
                "description": "Optionele afstand in kaarteenheden; incidenten binnen deze afstand van een gebied tellen eveneens mee, niet alleen die erbinnen. Let op: een positieve straal laat de invanggebieden overlappen, waardoor een incident door meer dan één gebied kan worden geteld (de gerapporteerde totalen over het geheel blijven ontdubbeld)."
              }
            }
          },
          "summarize_within": {
            "name": "Samenvatten binnen",
            "description": "Vat de attributen van een laag samen binnen een bestaande polygoonlaag, waarbij gedeeltelijk overlappende objecten worden gewogen naar doorsneden oppervlakte of lengte, zoals ArcGIS Summarize Within.",
            "params": {
              "polygons": {
                "label": "Polygonen",
                "description": "Polygoonlaag waarin wordt samengevat. De objecten en attributen ervan blijven behouden."
              },
              "input": {
                "label": "Invoer",
                "description": "Laag die wordt samengevat (punt, lijn of polygoon)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de polygonen. Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              },
              "fields": {
                "label": "Velden",
                "description": "Door komma's gescheiden paren 'field:statistic', bijv. 'pop:sum,income:mean'. Statistieken: sum, mean, min, max, stddev, count."
              },
              "keep_all": {
                "label": "Alles behouden",
                "description": "Behoudt polygonen zonder doorsnijdende objecten (standaard true). Indien false worden lege polygonen weggelaten."
              },
              "shape_sum": {
                "label": "Vormsom",
                "description": "Voegt het gesommeerde aantal / de gesommeerde lengte / oppervlakte van de doorsneden invoergeometrie toe (standaard true)."
              },
              "group_field": {
                "label": "Groepeerveld",
                "description": "Optioneel veld op de samengevatte laag; levert één gegroepeerde samenvattingsrij per afzonderlijke waarde."
              }
            }
          },
          "summary_statistics": {
            "name": "Samenvattende statistieken",
            "description": "GROUP BY in SQL-stijl over een of meer case-velden: berekent voor elke unieke combinatie van case-velden een lijst van (veld, statistiek)-aggregaten (count/sum/mean/min/max/std/first/last) plus een recordtelling per groep. De uitvoer is een zuivere attribuuttabel. Zonder case-veld ontstaat één rij met het eindtotaal (zoals Summary Statistics van ArcGIS; alleen tellen reproduceert Frequency).",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Te aggregeren invoervectorlaag of attribuuttabel."
              },
              "statistics": {
                "label": "Statistieken",
                "description": "Door puntkomma's/komma's gescheiden lijst met paren 'field statistic' (ook 'field:statistic' wordt geaccepteerd), bijv. 'population sum; population mean; elev max'. Statistieken: count, sum, mean, min, max, std, first, last."
              },
              "case_fields": {
                "label": "Case-velden",
                "description": "Optionele, door komma's/puntkomma's gescheiden veldna(a)m(en) voor de groepering (GROUP BY). Indien weggelaten, wordt één samenvattingsrij over de hele tabel gemaakt."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de tabel (driver uit de extensie; GeoParquet of CSV). Indien weggelaten, wordt de tabel in het geheugen opgeslagen. Kolommen: de groeperingsvelden, een recordtelling 'count' en vervolgens één kolom '<field>_<statistic>' per gevraagd paar."
              }
            }
          },
          "sun_shadow_volume": {
            "name": "Zonneschaduwvolume",
            "description": "Extrudeert 3D-volumes langs de zonnevector naar de grond om gesloten schaduwvolumes te produceren voor een gegeven datum en tijd (ArcGIS Sun Shadow Volume). shadow_image, shadow_animation en time_in_daylight werken allemaal op een raster-DSM en geven rasters, en solar_radiation berekent instraling — geen ervan produceert schaduwgeometrie, zodat vragen als 'ligt dit raam in de schaduw' of 'hoeveel van het luchtruim van dit perceel ligt in de schaduw' niet kunnen worden beantwoord. De uitvoer combineert met inside_3d, intersect_3d en union_3d.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "3D-gebouwlichamen of geëxtrudeerde grondvlakken (MultiPolygons als driehoeksmesh met Z)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Gesloten vaste lichamen van het schaduwvolume. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "datetime": {
                "label": "Datum en tijd",
                "description": "Lokale datum en tijd van de zonnestand als 'YYYY-MM-DDTHH:MM' of 'YYYY-MM-DD HH:MM'. Wordt als parameter opgegeven en nooit van een klok gelezen, zodat de resultaten reproduceerbaar zijn."
              },
              "latitude": {
                "label": "Breedtegraad",
                "description": "Breedtegraad in graden, gebruikt voor de zonnegeometrie. Vereist: deze kan niet worden afgeleid zonder een projectie-engine."
              },
              "utc_offset": {
                "label": "UTC-offset",
                "description": "Aantal uren verschil met UTC van de opgegeven lokale tijd (standaard 0)."
              },
              "adjusted_for_dst": {
                "label": "Gecorrigeerd voor zomertijd",
                "description": "Behandelt de opgegeven tijd als aangepast aan de zomertijd en trekt er vóór de zonneberekening een uur van af (standaard false), overeenkomstig ArcGIS."
              },
              "ground_elevation": {
                "label": "Grondhoogte",
                "description": "Constante Z van het maaiveld waarop de schaduw wordt geprojecteerd. Standaard: de eigen minimale Z van elk object."
              },
              "max_length": {
                "label": "Maximale lengte",
                "description": "Bovengrens voor de doorloopafstand in CRS-eenheden, zodat een lage zon geen kilometerslang prisma oplevert. Standaard: onbeperkt."
              }
            }
          },
          "surface_difference": {
            "name": "Oppervlakverschil",
            "description": "Bakent als polygonen af waar het ene oppervlak boven, onder of gelijk aan het andere ligt, elk met klasse, oppervlakte, volume en verschilstatistieken (ArcGIS Surface Difference). cut_fill meet dezelfde grootheden, maar geeft alleen een regiolabelraster en een CSV, zodat zijn regio's geen geometrie hebben om te overlayen, uit te snijden of te joinen; surface_volume en polygon_volume meten ten opzichte van een vlak of binnen polygonen die u al hebt in plaats van ze te ontdekken.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Te classificeren oppervlakteraster."
              },
              "reference": {
                "label": "Referentie",
                "description": "Referentieoppervlak: het pad van een gecoregistreerd raster, of een constante hoogte om met een vlak datum te vergelijken."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpolygoonlaag met de geclassificeerde regio's. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "output_raster": {
                "label": "Uitvoerraster",
                "description": "Uitvoerraster met het verschil met teken (invoer minus referentie). Wordt altijd gemaakt; wordt in het geheugen opgeslagen wanneer geen pad is opgegeven."
              },
              "tolerance": {
                "label": "Tolerantie",
                "description": "Verschillen die binnen deze waarde van nul liggen gelden als samenvallend (standaard 0.0)."
              },
              "min_area": {
                "label": "Minimale oppervlakte",
                "description": "Verwerpt regio's die kleiner zijn dan deze oppervlakte in vierkante kaarteenheden."
              },
              "include_coincident": {
                "label": "Samenvallende opnemen",
                "description": "Voert ook polygonen uit voor de onveranderde klasse (standaard false). Standaard uitgeschakeld, omdat dit in de meeste scènes één enorme achtergrondpolygoon oplevert."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band van het invoeroppervlak (standaard 1)."
              },
              "reference_band": {
                "label": "Referentieband",
                "description": "1-gebaseerde band van het referentieoppervlak (standaard 1)."
              }
            }
          },
          "surface_parameters": {
            "name": "Oppervlakparameters",
            "description": "Helling, expositie of kromming (mean/profile/tangential/plan/gaussian/casorati/contour_geodesic_torsion) uit een DEM via een lokale kwadratische/bikwadratische kleinste-kwadraten-oppervlakfit over een gekozen omgevingsafstand, zoals ArcGIS Surface Parameters — de schaaladaptieve tegenhanger van de meegeleverde vaste 3×3-terreintools.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerraster met hoogte (DEM)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerrasterpad. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "parameter": {
                "label": "Parameter",
                "description": "Welke parameter wordt berekend: slope (standaard), aspect, mean_curvature, profile_curvature, tangential_curvature, plan_curvature, gaussian_curvature, casorati_curvature, contour_geodesic_torsion."
              },
              "fit": {
                "label": "Fitten",
                "description": "Oppervlaktemodel: 'quadratic' (6 termen, standaard) of 'biquadratic' (9 termen)."
              },
              "neighborhood_distance": {
                "label": "Omgevingsafstand",
                "description": "Omgevingsstraal in kaarteenheden (standaard = één celgrootte, d.w.z. een venster van 3×3)."
              },
              "neighborhood_type": {
                "label": "Omgevingstype",
                "description": "'fixed' (standaard) gebruikt overal de volledige straal; 'adaptive' verkleint het venster tot 1 cel naast gegevensgaten/randen."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die wordt gelezen (standaard 1)."
              }
            }
          },
          "surface_volume": {
            "name": "Oppervlakvolume",
            "description": "Integreert een rasteroppervlak ten opzichte van een horizontaal referentievlak en rapporteert 2D-oppervlakte, 3D-oppervlakte en volume voor het deel boven en/of onder het vlak (zoals Surface Volume van ArcGIS). Grondwerk graven/ophogen en reservoircapaciteitsanalyse.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerraster met het hoogteoppervlak."
              },
              "reference_plane": {
                "label": "Referentievlak",
                "description": "Hoogte van het referentievlak waartegen wordt geïntegreerd (standaard 0)."
              },
              "direction": {
                "label": "Richting",
                "description": "Aan welke zijde van het vlak wordt geïntegreerd: 'above', 'below' of 'both' (standaard 'above')."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die wordt gelezen (standaard 1)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van het CSV-bestand voor de resultatentabel. Indien weggelaten, worden de resultaten alleen in het uitvoeringsresultaat geretourneerd."
              }
            }
          },
          "table_to_geometry": {
            "name": "Tabel naar geometrie",
            "description": "Bouwt lijn- of ellipsobjecten uit tabelvelden: begin-/eindcoördinaatparen (XY To Line), oorsprong + peiling + afstand (Bearing Distance To Line) of centrum + hoofd-/nevenas + azimut (Table To Ellipse) — met vlakke, geodetische en loxodroomlijnconstructie.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerattribuuttabel of invoervectorlaag met punten."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de vector (driver op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "mode": {
                "label": "Modus",
                "description": "'xy_to_line', 'bearing_distance' of 'ellipse'."
              },
              "line_type": {
                "label": "Lijntype",
                "description": "'geodesic' (standaard, kortste pad op de WGS84-ellipsoïde), 'rhumb' (constante koershoek) of 'planar' (rechte cartesische segmenten in de eigen eenheden van de invoer)."
              },
              "vertex_spacing": {
                "label": "Hoekpuntafstand",
                "description": "Verdichtingsafstand voor gekromde lijnen (geodesic/rhumb) en bemonsteringsafstand van de ellipsomtrek, in meters voor geodesic/rhumb of in CRS-eenheden voor planar. Standaard: een vast aantal segmenten."
              },
              "polygon_output": {
                "label": "Polygoonuitvoer",
                "description": "Alleen bij mode=ellipse: voert een gevulde Polygon uit in plaats van een gesloten lijnomtrek. Standaard false."
              },
              "start_x": {
                "label": "Start X",
                "description": "mode=xy_to_line: veld dat de X / lengtegraad van het beginpunt bevat."
              },
              "start_y": {
                "label": "Start Y",
                "description": "mode=xy_to_line: veld dat de Y / breedtegraad van het beginpunt bevat."
              },
              "end_x": {
                "label": "Einde X",
                "description": "mode=xy_to_line: veld dat de X / lengtegraad van het eindpunt bevat."
              },
              "end_y": {
                "label": "Einde Y",
                "description": "mode=xy_to_line: veld dat de Y / breedtegraad van het eindpunt bevat."
              },
              "x": {
                "label": "X",
                "description": "mode=bearing_distance/ellipse: veld dat de X / lengtegraad van de oorsprong/het middelpunt bevat."
              },
              "y": {
                "label": "Y",
                "description": "mode=bearing_distance/ellipse: veld dat de Y / breedtegraad van de oorsprong/het middelpunt bevat."
              },
              "bearing": {
                "label": "Peiling",
                "description": "mode=bearing_distance: veld dat de koershoek bevat in graden met de klok mee vanaf het noorden."
              },
              "distance": {
                "label": "Afstand",
                "description": "mode=bearing_distance: veld dat de af te leggen afstand bevat (meters voor geodesic/rhumb, CRS-eenheden voor planar)."
              },
              "major": {
                "label": "Hoofdas",
                "description": "mode=ellipse: veld dat de lengte van de halve lange as bevat (meters voor geodesic/rhumb, CRS-eenheden voor planar)."
              },
              "minor": {
                "label": "Nevenas",
                "description": "mode=ellipse: veld dat de lengte van de halve korte as bevat (dezelfde eenheden als de lange as)."
              },
              "azimuth": {
                "label": "Azimut",
                "description": "mode=ellipse: veld dat de richting van de lange as bevat in graden met de klok mee vanaf het noorden."
              }
            }
          },
          "tabulate_intersection": {
            "name": "Doorsnijding tabelleren",
            "description": "Vector-op-vector zonale samenvatting: verdeelt een klasselaag (polygonen naar oppervlakte, lijnen naar doorsneden lengte of punten naar telling) over zonepolygonen en rapporteert doorsneden maat, percentage van de zone en maatgewogen somvelden.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Polygoonlaag met zones, formaat automatisch gedetecteerd (of een handle in het geheugen)."
              },
              "class_features": {
                "label": "Klasseobjecten",
                "description": "Vectorlaag met klassen die over de zones wordt verdeeld (polygonen samengevat op basis van de oppervlakte, lijnen op basis van de doorsneden lengte, punten op basis van het aantal)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de vector (driver op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "class_field": {
                "label": "Klasseveld",
                "description": "Optioneel categorisch veld in de klasselaag; de resultaten worden gegroepeerd per zone x deze waarde. Laat dit weg om alle klasseobjecten als één klasse te behandelen."
              },
              "sum_fields": {
                "label": "Somvelden",
                "description": "Optionele, door komma's gescheiden numerieke velden in de klasselaag die over elke zone worden verdeeld (oppervlaktegewogen voor polygonen, lengtegewogen voor lijnen, gesommeerd voor punten)."
              },
              "zone_field": {
                "label": "Zoneveld",
                "description": "Optioneel veld dat elke zone in de uitvoer identificeert. Standaard de objectindex van de zone."
              }
            }
          },
          "thin_road_network": {
            "name": "Wegennetwerk uitdunnen",
            "description": "Generaliseert een wegennetwerk voor kleinschalige weergave: verbergt korte wegen van lage hiërarchie met behoud van connectiviteit, en markeert elke weg als zichtbaar/uitgedund (niet-destructief) zoals ArcGIS Thin Road Network.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag met wegen (lijnen), formaat automatisch gedetecteerd (of een handle in het geheugen)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de vector (driver op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "min_length": {
                "label": "Minimale lengte",
                "description": "Wegen die korter zijn dan deze waarde (CRS-eenheden) komen in aanmerking om uit te dunnen. Langere wegen blijven altijd behouden."
              },
              "hierarchy_field": {
                "label": "Hiërarchieveld",
                "description": "Optioneel numeriek veld met de wegklasse; een lagere waarde = belangrijker (blijft langer behouden). Kandidaten worden uitgedund te beginnen met het hoogste klassenummer."
              },
              "visibility_field": {
                "label": "Zichtbaarheidsveld",
                "description": "Naam van het uitvoerveld met de zichtbaarheidsmarkering (1 = behouden, 0 = uitgedund). Standaard 'visible'."
              },
              "keep_only": {
                "label": "Alleen behouden",
                "description": "Indien true worden alleen de zichtbare wegen uitgevoerd in plaats van ze allemaal te markeren. Standaard false (niet-destructief)."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Afstand waarbinnen wegeindpunten als dezelfde kruising worden behandeld. Standaard 1e-6."
              }
            }
          },
          "tile_grid_polygons": {
            "name": "Tegelrasterpolygonen",
            "description": "Geeft webkaarttegelgrenzen als polygonen voor een zoomniveau (of bereik) en extent, elk met z/x/y en de quadkey (ArcGIS Map Server Cache Tiling Scheme To Polygons, Create Vector Tile Index, Generate Tile Cache Tiling Scheme). De meegeleverde rechthoekige/hexagonale rastertools bouwen willekeurige rasters in het invoer-CRS en kunnen niet samenvallen met de WebMercator-quadtree die de PMTiles- en raster_to_tiles-tools gebruiken.",
            "params": {
              "zoom": {
                "label": "Zoomniveau",
                "description": "Zoomniveau. Gebruik dit samen met 'max_zoom' om een piramide van niveaus uit te voeren."
              },
              "max_zoom": {
                "label": "Maximaal zoomniveau",
                "description": "Optioneel hoogste zoomniveau; indien opgegeven wordt elk niveau van 'zoom' tot en met 'max_zoom' uitgevoerd."
              },
              "extent": {
                "label": "Bereik",
                "description": "Optionele raster- of vectorlaag waarvan de begrenzing het rooster uitsnijdt. Zonder deze laag wordt de hele wereld op dat zoomniveau gebruikt (afhankelijk van 'max_tiles')."
              },
              "bbox": {
                "label": "Begrenzingsvak",
                "description": "Optionele expliciete omvang als 'min_lon,min_lat,max_lon,max_lat' in graden. Heeft voorrang op 'extent'."
              },
              "scheme": {
                "label": "Schema",
                "description": "'xyz' (standaard, Google/OSM, y telt af vanaf het noorden) of 'tms' (y telt op vanaf het zuiden)."
              },
              "output_crs": {
                "label": "Uitvoer-CRS",
                "description": "'EPSG:3857' (standaard, vierkante tegels) of 'EPSG:4326' (lon/lat-vierhoeken)."
              },
              "max_tiles": {
                "label": "Maximaal aantal tegels",
                "description": "Harde bovengrens voor het aantal tegels (standaard 1000000); overschrijding levert een fout op waarin het berekende aantal wordt genoemd."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpolygoonlaag. Indien weggelaten, wordt het in het geheugen opgeslagen."
              }
            }
          },
          "time_series_clustering": {
            "name": "Tijdreeksclustering",
            "description": "Clustert de cellen van een H3-ruimte-tijdkubus op de gelijkenis van hun tijdreeksen (waarde, z-genormaliseerd profiel of correlatie) met deterministische k-medoids, zodat plaatsen die zich vergelijkbaar ontwikkelen worden gegroepeerd, zoals ArcGIS Time Series Clustering.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerpuntlaag in EPSG:4326 (lon/lat) met een tijdstempelveld."
              },
              "time_field": {
                "label": "Tijdveld",
                "description": "Tijdstempelveld (numeriek of ISO-8601-datum/-datumtijd)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoer-H3-polygoonlaag met cluster_id/is_medoid. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "num_clusters": {
                "label": "Aantal clusters",
                "description": "Aantal clusters k (standaard 4)."
              },
              "characteristic": {
                "label": "Karakteristiek",
                "description": "Afstandsmaat voor de tijdreeks: 'value' (ruw), 'profile' (z-genormaliseerd, standaard) of 'correlation' (1 − r)."
              },
              "time_step": {
                "label": "Tijdstap",
                "description": "Breedte van een tijdstap: een gewoon getal (numeriek time_field) of een duur zoals '1w', '7d', '12h'. Standaard '1w'."
              },
              "value_field": {
                "label": "Waardeveld",
                "description": "Optioneel numeriek veld dat per bin wordt gesommeerd. Standaard: het aantal punten per bin."
              },
              "resolution": {
                "label": "Resolutie",
                "description": "H3-resolutie van 0 (grofst) tot 15 (fijnst); standaard 7 (cellen van ongeveer 5 km²)."
              },
              "seed": {
                "label": "Seed",
                "description": "Willekeurig zaad voor een reproduceerbare initialisatie van de medoïden (standaard 1)."
              }
            }
          },
          "time_series_cross_correlation": {
            "name": "Tijdreekskruiscorrelatie",
            "description": "Vertraagde kruiscorrelatie per cel tussen twee uitgelijnde ruimte-tijd-rasterstapels (zoals Time Series Cross Correlation / Multidimensional Raster Correlation van ArcGIS): voor elke cel optioneel trend/seizoenseffect verwijderen, vervolgens reeks A correleren met reeks B over min_lag..=max_lag en de beste lag met zijn Pearson-correlatie rapporteren, plus optioneel de lag-0-correlatie en een Pyper-Peterman-pseudo-p-waarde op basis van de effectieve steekproefgrootte. De tweevariabele, lagbewuste aanvulling op de enkelreeks-kubustools generate_trend_raster / change_point_detection — niets meegeleverds relateert twee variabelen door de tijd.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Stapel A: een multiband-raster (één band per tijdstap) OF een door komma's gescheiden lijst met paden van gecoregistreerde enkelbandige rasters in chronologische volgorde."
              },
              "secondary": {
                "label": "Secundair",
                "description": "Stapel B: dezelfde vorm en lengte als 'input' (multiband-raster of door komma's gescheiden lijst van enkelbandige rasters)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerraster met de beste lag (gehele lag die |correlatie| maximaliseert). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "corr_output": {
                "label": "Correlatie-uitvoer",
                "description": "Optioneel uitvoerraster van de Pearson-correlatie (met teken) bij de beste lag."
              },
              "corr0_output": {
                "label": "Correlatie0-uitvoer",
                "description": "Optioneel uitvoerraster van de correlatie bij lag 0 (gelijktijdig)."
              },
              "pvalue_output": {
                "label": "P-waarde-uitvoer",
                "description": "Optioneel uitvoerraster van een pseudo-tweezijdige p-waarde bij de beste lag (effectieve steekproefgrootte volgens Pyper-Peterman + Fisher z)."
              },
              "min_lag": {
                "label": "Minimale lag",
                "description": "Minimale lag in tijdstappen (standaard -6). A[t] wordt gekoppeld aan B[t+lag]."
              },
              "max_lag": {
                "label": "Maximale lag",
                "description": "Maximale lag in tijdstappen (standaard 6). Moet >= min_lag zijn."
              },
              "detrend": {
                "label": "Trend verwijderen",
                "description": "Indien true, wordt per reeks een lineaire OLS-trend afgetrokken vóór het correleren (standaard false)."
              },
              "deseasonalize": {
                "label": "Seizoenseffect verwijderen",
                "description": "Indien true, wordt per reeks een additieve seizoenscyclus met periode 'season_length' afgetrokken vóór het correleren (standaard false)."
              },
              "season_length": {
                "label": "Seizoenslengte",
                "description": "Seizoensperiode (tijdstappen) die wordt gebruikt wanneer 'deseasonalize' true is (standaard 12)."
              },
              "min_valid": {
                "label": "Minimaal aantal geldige",
                "description": "Minimaal aantal geldige overlappende paren dat vereist is om bij een lag te correleren (standaard 5)."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die wordt gelezen wanneer een stapel als door komma's gescheiden lijst van enkelbandige rasters wordt opgegeven (standaard 1). Wordt genegeerd voor multiband-stapels."
              }
            }
          },
          "time_series_forecast": {
            "name": "Tijdreeksvoorspelling",
            "description": "Voorspelling per locatie op een H3-ruimte-tijdkubus (zoals ArcGIS Exponential Smoothing / Curve Fit Forecast): voorspelt de reeks van elke cel vooruit via Holt's exponentiële gladstrijking of polynoomcurvefits, waarbij per cel het model met de laagste hold-out-RMSE wordt gekozen, met voorspellingen voor de volgende/laatste stap en een halve breedte van het 90%-betrouwbaarheidsinterval. De temporele voorspelling die de meegeleverde ruimtelijke trend_surface niet kan doen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerpuntlaag met gebeurtenissen met tijdstempels (lon/lat)."
              },
              "time_field": {
                "label": "Tijdveld",
                "description": "Veld dat de tijd van elk punt bevat: een getal of een ISO-8601-tijdstempel."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoer-H3-polygoonlaag met voorspellingsattributen. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "value_field": {
                "label": "Waardeveld",
                "description": "Numeriek veld dat per bin wordt geaggregeerd (standaard: het aantal punten)."
              },
              "steps": {
                "label": "Stappen",
                "description": "Aantal tijdstappen dat vooruit wordt voorspeld (standaard 3)."
              },
              "model": {
                "label": "Model",
                "description": "'auto' (laagste hold-out-RMSE; standaard), 'exp_smoothing', 'linear' of 'parabolic'."
              },
              "holdout": {
                "label": "Holdout-aandeel",
                "description": "Aantal tijdstappen dat wordt achtergehouden om het model te valideren/selecteren (standaard 3)."
              },
              "time_step": {
                "label": "Tijdstap",
                "description": "Breedte van een tijdstap in de eenheden van time_field (standaard 1)."
              },
              "resolution": {
                "label": "Resolutie",
                "description": "H3-resolutie 0..15 (standaard 7)."
              }
            }
          },
          "time_series_smoothing": {
            "name": "Tijdreeks gladstrijken",
            "description": "Strijkt een in-sample tijdreeks per locatie glad (zoals ArcGIS Time Series Smoothing): groepeert objecten op id_field, sorteert elke groep op time_field en voegt een gladgestreken waarde toe via een achterwaarts/gecentreerd/voorwaarts bewegend gemiddelde of een lokaal-lineaire doorgang met adaptieve bandbreedte (LOESS). Geometrie en alle oorspronkelijke attributen blijven behouden. Vult time_series_forecast aan, dat vooruit projecteert in plaats van de waargenomen reeks glad te strijken.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerobjectlaag met van tijdstempels voorziene waarnemingen."
              },
              "value_field": {
                "label": "Waardeveld",
                "description": "Numeriek veld waarvan de reeks wordt afgevlakt."
              },
              "time_field": {
                "label": "Tijdveld",
                "description": "Veld dat elke reeks ordent: een getal of een ISO-8601-tijdstempel."
              },
              "id_field": {
                "label": "ID-veld",
                "description": "Veld dat elke locatie/reeks identificeert. Indien weggelaten, vormen alle objecten één reeks."
              },
              "method": {
                "label": "Methode",
                "description": "'moving_average' (standaard) of 'local_linear' (LOESS met adaptieve bandbreedte)."
              },
              "window": {
                "label": "Venster",
                "description": "moving_average: aantal punten in het middelingsvenster (standaard 3)."
              },
              "bandwidth": {
                "label": "Bandbreedte",
                "description": "local_linear: aantal in de tijd dichtstbijzijnde punten dat per lokale fit wordt gebruikt (standaard 5)."
              },
              "alignment": {
                "label": "Uitlijning",
                "description": "Vensterplaatsing van moving_average: 'backward', 'centered' (standaard) of 'forward'."
              },
              "output_field": {
                "label": "Uitvoerveld",
                "description": "Naam van het toegevoegde afgevlakte veld (standaard 'smoothed')."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de laag. Indien weggelaten, wordt het in het geheugen opgeslagen."
              }
            }
          },
          "topo_to_raster": {
            "name": "Topo naar raster",
            "description": "Interpoleert een hydrologisch correct DEM uit contourlijnen, hoogtepunten en optionele waterlooplijnen met een minimale-krommings- (thin-plate-)relaxatie met afdwinging van drainage — zoals ArcGIS Topo To Raster (ANUDEM). Anders dan de meegeleverde IDW/TIN/spline-interpolatoren maakt het geen terrassen van contouren en verwijdert het onechte gesloten depressies.",
            "params": {
              "contours": {
                "label": "Contouren",
                "description": "Invoervectorlaag met hoogtelijnen (de hoogte wordt gelezen uit elevation_field). Ten minste een van contours/points is vereist."
              },
              "points": {
                "label": "Punten",
                "description": "Invoervectorlaag met hoogtepunten (de hoogte wordt gelezen uit elevation_field)."
              },
              "streams": {
                "label": "Waterlopen",
                "description": "Optionele vectorlaag met waterlooplijnen die wordt gebruikt om de afwatering af te dwingen (vóór het verwijderen van depressies in het oppervlak gebrand)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van het DEM-raster (driver uit de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "elevation_field": {
                "label": "Hoogteveld",
                "description": "Naam van het numerieke hoogteveld op de hoogtelijn- en puntlagen. Standaard: automatisch detecteren (HEIGHT/ELEV/ELEVATION/Z, anders het eerste numerieke veld)."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Uitvoercelgrootte in CRS-eenheden. Standaard: zo gekozen dat de langste rasteras ongeveer 400 cellen telt."
              },
              "tension": {
                "label": "Spanning",
                "description": "Oppervlaktestijfheid in [0,1]: 0 = zuivere dunne plaat (gladst), 1 = strak membraan. Standaard 0.35."
              },
              "iterations": {
                "label": "Iteraties",
                "description": "Maximaal aantal SOR-iteraties (standaard 2000). De iteratie stopt vroegtijdig zodra de maximale celverandering onder de tolerantie zakt."
              },
              "tolerance": {
                "label": "Tolerantie",
                "description": "Convergentietolerantie: stoppen wanneer de grootste celverandering in een iteratie hieronder ligt (hoogte-eenheden van het CRS). Standaard 0.01."
              },
              "enforce_drainage": {
                "label": "Drainage afdwingen",
                "description": "Verwijdert na de interpolatie onechte interne depressies, zodat het DEM naar de randen afwatert (standaard true)."
              },
              "stream_burn": {
                "label": "Waterlopen inbranden",
                "description": "Diepte (hoogte-eenheden) waarmee waterloopcellen worden verlaagd vóór het verwijderen van depressies, om de afstroming erlangs te leiden. Standaard 0 (auto = 1% van het reliëf wanneer waterlopen worden aangeleverd)."
              }
            }
          },
          "trace_proximity_events": {
            "name": "Nabijheidsgebeurtenissen traceren",
            "description": "Vindt intervallen waarin twee bewegende tracks gedurende ten minste een minimale duur binnen een afstand van elkaar waren (nabijheidsgebeurtenissen), en traceert optioneel transitieve stroomafwaartse contacten vanaf zaadentiteiten, zoals ArcGIS Trace Proximity Events.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Puntlaag met tijdstempels (gebruik een geprojecteerd CRS; afstanden zijn in kaarteenheden)."
              },
              "track_field": {
                "label": "Trackveld",
                "description": "Veld dat elke bewegende entiteit / elk spoor identificeert."
              },
              "time_field": {
                "label": "Tijdveld",
                "description": "Tijdstempelveld (numerieke seconden of ISO-8601)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerlijnlaag met nabijheidsgebeurtenissen. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "search_distance": {
                "label": "Zoekafstand",
                "description": "Maximale afstand waarbij twee sporen als 'in nabijheid' gelden (kaarteenheden)."
              },
              "min_duration": {
                "label": "Minimale duur",
                "description": "Minimale tijd in nabijheid om als gebeurtenis te tellen: seconden of een duur zoals '5m', '1h' (standaard 0)."
              },
              "entities": {
                "label": "Entiteiten",
                "description": "Optionele, door komma's gescheiden zaad-spoor-ID's van waaruit vervolgcontacten worden getraceerd (contactonderzoek)."
              },
              "depth": {
                "label": "Diepte",
                "description": "Maximaal aantal traceergeneraties vanaf de zaden (standaard onbeperkt)."
              }
            }
          },
          "transform_features": {
            "name": "Objecten transformeren",
            "description": "Past een affiene transformatie (verschuiven, draaien rond een anker, schalen per as, spiegelen) toe op elke geometrie in een vectorlaag.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoervectorbestand, formaat wordt automatisch gedetecteerd (of een handle in het geheugen)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de vector (driver op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "dx": {
                "label": "Dx",
                "description": "Verschuiving die na schalen/spiegelen/roteren op X wordt toegepast, in CRS-eenheden. Standaard 0."
              },
              "dy": {
                "label": "Dy",
                "description": "Verschuiving die na schalen/spiegelen/roteren op Y wordt toegepast, in CRS-eenheden. Standaard 0."
              },
              "angle": {
                "label": "Hoek",
                "description": "Rotatie tegen de klok in rond het ankerpunt, in graden. Standaard 0."
              },
              "scale_x": {
                "label": "Schaal X",
                "description": "Schaalfactor rond het ankerpunt langs X. Standaard 1."
              },
              "scale_y": {
                "label": "Schaal Y",
                "description": "Schaalfactor rond het ankerpunt langs Y. Standaard 1."
              },
              "mirror_axis": {
                "label": "Spiegelas",
                "description": "Spiegelen door het ankerpunt: NONE (standaard), X (Y omklappen over de horizontale as) of Y (X omklappen over de verticale as)."
              },
              "anchor": {
                "label": "Anker",
                "description": "Draaipunt voor schalen/spiegelen/roteren: CENTROID (middelpunt van de bbox, standaard), ORIGIN (0,0) of XY (gebruik anchor_x/anchor_y)."
              },
              "anchor_x": {
                "label": "Anker X",
                "description": "X-coördinaat van het ankerpunt; vereist wanneer anchor=XY."
              },
              "anchor_y": {
                "label": "Anker Y",
                "description": "Y-coördinaat van het ankerpunt; vereist wanneer anchor=XY."
              }
            }
          },
          "transform_fields": {
            "name": "Velden transformeren",
            "description": "Standaardiseert, transformeert en codeert attribuutvelden (zoals ArcGIS Standardize/Transform/Encode Field): z-score, min-max, robuust, log/log1p/sqrt/boxcox/inverse, binning op gelijk interval/kwantiel/standaardafwijking en one-hot-codering.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag (of tabel) met de te transformeren velden."
              },
              "fields": {
                "label": "Velden",
                "description": "Door komma's gescheiden namen van de te transformeren velden; op elk wordt dezelfde transformatie toegepast."
              },
              "transform": {
                "label": "Transformatie",
                "description": "Toe te passen transformatie: zscore, minmax, robust, log, log1p, sqrt, boxcox, inverse, bin, onehot."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoervectorlaag met de toegevoegde getransformeerde velden. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "bins": {
                "label": "Klassen (bins)",
                "description": "Aantal klassen voor 'bin' (standaard 5)."
              },
              "bin_method": {
                "label": "Binmethode",
                "description": "Classificatiemethode voor 'bin': equal_interval (standaard), quantile of std_dev."
              },
              "boxcox_lambda": {
                "label": "Box-Cox-lambda",
                "description": "Vaste lambda voor 'boxcox'; indien weggelaten, wordt deze via maximum likelihood gefit (gulden-snede-zoekmethode)."
              },
              "suffix": {
                "label": "Achtervoegsel",
                "description": "Achtervoegsel voor de naam van het uitvoerveld (de standaard hangt af van de transformatie, bijv. '_z' voor zscore)."
              },
              "drop_input": {
                "label": "Invoer weglaten",
                "description": "Indien true, worden de oorspronkelijke velden na het transformeren uit de uitvoer verwijderd (standaard false)."
              }
            }
          },
          "transform_route_events": {
            "name": "Routegebeurtenissen transformeren",
            "description": "Herrefereert puntgebeurtenissen gemeten ten opzichte van een bronroutesysteem naar een doelroutesysteem: herstelt de XY van elke gebeurtenis uit zijn bronroute en maat, en verplaatst deze vervolgens naar de dichtstbijzijnde doelroute binnen een clustertolerantie, met uitvoer van de doelroute-id en maat — zoals ArcGIS Transform Route Events.",
            "params": {
              "source_events": {
                "label": "Brongebeurtenissen",
                "description": "Invoerpuntlaag met gebeurtenissen. Elk object draagt een route-identificatie (route_id_field) en een maat (measure_field)."
              },
              "source_routes": {
                "label": "Bronroutes",
                "description": "Bronroutesysteem: lijnlaag waarvan de objecten via route_id_field worden gesleuteld. Maten zijn de afstand vanaf het eerste hoekpunt van elke route."
              },
              "target_routes": {
                "label": "Doelroutes",
                "description": "Doelroutesysteem: lijnlaag waarnaar gebeurtenissen worden verplaatst. Route-identificaties komen uit target_id_field."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de puntvector (driver uit de extensie). Indien weggelaten, wordt het resultaat in het geheugen opgeslagen."
              },
              "route_id_field": {
                "label": "Route-ID-veld",
                "description": "Veld dat de route-identificatie benoemt in source_events en source_routes (standaard 'route_id'). Ontbrekend veld -> de objectindex van de bronroute wordt gebruikt."
              },
              "measure_field": {
                "label": "Maatveld",
                "description": "Numeriek veld in source_events dat de maat van het bronsysteem bevat (standaard 'measure')."
              },
              "target_id_field": {
                "label": "Doel-ID-veld",
                "description": "Veld dat de route-identificatie benoemt in target_routes (standaard: hetzelfde als route_id_field). Ontbrekend veld -> de objectindex van de doelroute wordt gebruikt."
              },
              "cluster_tolerance": {
                "label": "Clustertolerantie",
                "description": "Maximale XY-afstand (CRS-eenheden) van de teruggevonden gebeurtenislocatie tot een doelroute waarbinnen de gebeurtenis wordt overgedragen. 0 of weggelaten betekent geen limiet (altijd naar de dichtstbijzijnde doelroute snappen)."
              }
            }
          },
          "transpose_fields": {
            "name": "Velden transponeren",
            "description": "Herstructureert een brede attribuuttabel naar lang formaat: elke opgegeven waardekolom wordt een eigen rij, gelabeld met de kolom waaruit deze afkomstig is (ArcGIS Transpose Fields). pivot_table werkt alleen van lang naar breed, zodat tabellen met één kolom per periode niet konden worden ingevoerd in de tijdreekstools die één rij per waarneming nodig hebben.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoervectorlaag of -tabel."
              },
              "transpose_fields": {
                "label": "Velden transponeren",
                "description": "Door komma's of puntkomma's gescheiden waardekolommen die worden ontpivoteerd."
              },
              "value_field": {
                "label": "Waardeveld",
                "description": "Naam van de uitvoerkolom die de celwaarde bevat (standaard 'VALUE')."
              },
              "transposed_field": {
                "label": "Getransponeerd veld",
                "description": "Naam van de uitvoerkolom die de naam van de bronkolom bevat (standaard 'FIELD')."
              },
              "field_labels": {
                "label": "Veldlabels",
                "description": "Optionele labels die in 'transposed_field' worden geschreven in plaats van de ruwe kolomnamen, bijv. '2000,2010,2020'. Moet dezelfde lengte hebben als 'transpose_fields'."
              },
              "retain_fields": {
                "label": "Velden behouden",
                "description": "Attributen die naar elke uitvoerrij worden gekopieerd. Standaard alle niet-getransponeerde velden."
              },
              "drop_nulls": {
                "label": "Null-waarden weglaten",
                "description": "Uitvoerrijen waarvan de waarde null is overslaan (standaard false)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerlaag. Indien weggelaten, wordt het in het geheugen opgeslagen."
              }
            }
          },
          "trim_line": {
            "name": "Lijn trimmen",
            "description": "Verwijdert korte loshangende lijnsegmenten (overschrijdingen en uitlopers) korter dan een lengtetolerantie, met behoud van echte kruisingen en lange lijnen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoerlijnvectorbestand, formaat automatisch gedetecteerd (of een handle in het geheugen)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de vector (driver op basis van de extensie). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "dangle_length": {
                "label": "Loshangende lengte",
                "description": "Lengtetolerantie in CRS-eenheden. Een los uiteinde dat korter is dan deze waarde wordt bijgesneden; langere losse uiteinden blijven behouden. Moet positief zijn."
              },
              "keep_short": {
                "label": "Korte behouden",
                "description": "Indien true (standaard) blijven korte segmenten die aan beide uiteinden niet verbonden zijn (geïsoleerd) behouden; indien false worden ze eveneens verwijderd. Segmenten die aan precies één uiteinde los hangen, worden altijd bijgesneden wanneer ze kort zijn."
              },
              "snap_tolerance": {
                "label": "Snaptolerantie",
                "description": "Eindpunten binnen deze afstand (CRS-eenheden) worden als hetzelfde knooppunt behandeld. Standaard 1e-6."
              }
            }
          },
          "union_3d": {
            "name": "3D-vereniging",
            "description": "Berekent het gecombineerde volume van overlappende gesloten 3D-volumes zonder hun doorsnijdingen dubbel te tellen, plus overlapvolumes per paar (ArcGIS Union 3D). Geen van beide registers heeft een 3D-overlay, zodat het optellen van buffer_3d-capsules of minimum_bounding_volume-omhullenden nu elke overlap dubbel telt; polygon_volume en surface_volume meten alleen ten opzichte van een referentievlak. Volumes per volume zijn exact (sommatie van getekende tetraëders); de vereniging wordt geschat via voxelbezetting op een gerapporteerde resolutie.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Gesloten 3D-objecten als vaste lichamen (MultiPolygons als driehoeksmesh met Z, zoals buffer_3d en minimum_bounding_volume die leveren)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de tabel met volumes per groep. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "group_field": {
                "label": "Groepeerveld",
                "description": "Optioneel veld; vaste lichamen worden per groepswaarde samengevoegd in plaats van over de hele laag."
              },
              "output_overlap_table": {
                "label": "Uitvoer overlaptabel",
                "description": "Optioneel pad voor de overlapvolumes per paar. Indien weggelaten, wordt het in het geheugen opgeslagen (en toch geretourneerd)."
              },
              "resolution": {
                "label": "Resolutie",
                "description": "Aantal voxelmonsters per as dat wordt gebruikt om het verenigingsvolume te schatten, 4 tot 512 (standaard 96). Hoger is nauwkeuriger en trager."
              }
            }
          },
          "unwrap_phase": {
            "name": "Fase ontvouwen",
            "description": "Converteert gewikkelde interferometrische fase in (-pi, pi] naar een continu absoluut veld via gewogen kleinste kwadraten, opgelost met gepreconditioneerde geconjugeerde gradiënten, met optionele coherentieweging en maskering (ArcGIS Unwrap Phase). Niets in beide registers ontvouwt fase — raster_calculator kan de globale oplossing niet uitdrukken en de meegeleverde specklefilters strijken glad in plaats van te ontvouwen — zodat de fase-uitvoer van sar_coherence en flatten_interferogram momenteel geen continu eindpunt hebben.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Raster met gewikkelde fase in radialen, of een tweebands I/Q-interferogram."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Raster met ontwikkelde continue fase. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "method": {
                "label": "Methode",
                "description": "'least_squares_pcg' (standaard), overeenkomend met de methode die ArcGIS ondersteunt."
              },
              "coherence": {
                "label": "Coherentie",
                "description": "Optioneel gecoregistreerd coherentieraster dat als oplossingsgewicht per verbinding wordt gebruikt, zodat pixels met lage coherentie de oplossing minder beïnvloeden."
              },
              "coherence_threshold": {
                "label": "Coherentiedrempel",
                "description": "Maskeert pixels waarvan de coherentie hieronder ligt (standaard 0.3). Wordt genegeerd wanneer geen coherentieraster is opgegeven. Maskering die de geldige pixels in niet-verbonden componenten opsplitst, laat elke component behalve die van de referentiepixel met een eigen willekeurige additieve constante achter."
              },
              "max_iterations": {
                "label": "Maximaal aantal iteraties",
                "description": "Maximaal aantal PCG-iteraties (standaard 500)."
              },
              "tolerance": {
                "label": "Tolerantie",
                "description": "Relatief residu waarbij het oplossen stopt (standaard 1e-8)."
              },
              "reference_row": {
                "label": "Referentierij",
                "description": "Rij van de pixel die op nul wordt vastgezet en zo de additieve constante van de oplossing vastlegt. Standaard: de eerste geldige pixel."
              },
              "reference_col": {
                "label": "Referentiekolom",
                "description": "Kolom van de vastgezette pixel. Standaard: de eerste geldige pixel."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die de fase bevat. Laat deze weg voor een enkelbandig faseraster of een tweebands I/Q-interferogram (dat dan automatisch wordt gedetecteerd); geef deze op om de reële fase uit een specifieke band van een multiband-stapel te lezen. Een raster met meer dan twee banden VEREIST deze parameter, omdat drie of meer banden geen I/Q-paar vormen en gokken een plausibele maar onjuiste fase zou opleveren."
              }
            }
          },
          "validate_flow_direction": {
            "name": "Stroomrichting valideren",
            "description": "Rapporteert de cellen die een stroomrichtingsraster onbruikbaar maken — codes die geen D8-richtingen zijn, binnencellen zonder uitlaat, stroming naar NoData, stroming over de rand en cellen op een circulair stroompad — als een puntlaag met problemen (ArcGIS Validate Flow Direction). De meegeleverde hydrologiesuite gebruikt overal stroomrichtingsrasters (d8_flow_accumulation, watershed, basins, trace_downslope_flowpaths), maar niets valideert er een, zodat een raster dat kapot is door herbemonstering, herclassificatie of uitsnijden een plausibel verkeerd antwoord oplevert in plaats van een fout, en een routeringslus kan vastlopen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Te controleren stroomrichtingsraster (pointer)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpuntlaag, één punt per probleemcel. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "flow_direction_type": {
                "label": "Stroomrichtingstype",
                "description": "'d8' (standaard) voor enkelvoudige machten-van-twee-codes, of 'mfd' waarbij een waarde de som van meerdere richtingen kan zijn."
              },
              "report_edge_outflow": {
                "label": "Randuitstroom rapporteren",
                "description": "Rapporteert cellen waarvan de afstroming het raster verlaat (standaard false). Normaal op een echte begrenzing, een werkelijk defect binnen een uitgesneden gebied."
              },
              "check_circular": {
                "label": "Circulair controleren",
                "description": "Detecteert circulaire stroompaden (standaard true)."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die de richtingen bevat (standaard 1)."
              }
            }
          },
          "vector_convert": {
            "name": "Vector converteren",
            "description": "Converteert een vectordataset naar een ander formaat (de uitvoerextensie bepaalt de driver).",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoervectorbestand (het formaat wordt automatisch gedetecteerd) of een handle in het geheugen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector; de driver wordt afgeleid uit de extensie (.geojson, .fgb, .shp, .gpkg, .parquet, ...). Indien weggelaten, wordt de laag in het geheugen opgeslagen."
              }
            }
          },
          "vector_to_h3": {
            "name": "Vector naar H3-bins",
            "description": "Verdeelt een vectorlaag in H3-cellen van het discrete globale raster en telt objecten per cel.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoervectorbestand (moet geografisch lon/lat zijn, EPSG:4326) of een handle in het geheugen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van de vector; de driver wordt afgeleid uit de extensie (.geojson, .fgb, .parquet, ...). Indien weggelaten, wordt de laag in het geheugen opgeslagen."
              },
              "resolution": {
                "label": "Resolutie",
                "description": "H3-resolutie van 0 (grofst) tot 15 (fijnst); standaard 8 (cellen van ongeveer 0,7 km²)."
              }
            }
          },
          "vector_to_pmtiles": {
            "name": "Vector naar PMTiles",
            "description": "Verpakt een vectorlaag in één PMTiles-archief (Mapbox Vector Tile-piramide).",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoervectorbestand (GeoJSON, Shapefile, GeoPackage, FlatGeobuf, GeoParquet, ...)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Pad van het uitvoer-PMTiles-bestand (bijv. /work/roads.pmtiles)."
              },
              "min_zoom": {
                "label": "Minimaal zoomniveau",
                "description": "Minimaal zoomniveau (standaard 0)."
              },
              "max_zoom": {
                "label": "Maximaal zoomniveau",
                "description": "Maximaal zoomniveau (standaard 14, maximaal 18)."
              },
              "layer_name": {
                "label": "Laagnaam",
                "description": "Naam van de laag binnen de tegels, gebruikt bij het stylen (standaard: de naam van de invoerlaag)."
              },
              "simplify": {
                "label": "Vereenvoudigen",
                "description": "Vereenvoudigt geometrieën per zoomniveau (standaard true)."
              },
              "drop_rate": {
                "label": "Uitvalpercentage",
                "description": "Snelheid waarmee objecten bij lage zoomniveaus worden weggelaten, zoals in tippecanoe (standaard: niets weglaten)."
              }
            }
          },
          "voxel_isosurface": {
            "name": "Voxel-iso-oppervlak",
            "description": "Extraheert een getrianguleerd iso-oppervlak op een of meer drempelwaarden uit een 3D-voxelveld via marching tetrahedra (ArcGIS Export Voxel Isosurface). De hele contoureringssuite in beide registers is 2D — lijnen uit een vlak; dit is de volumetrische analoog, die de uitvoer van idw_3d of een multidimensionaal raster omzet in renderbare geometrie. Geeft de driehoeksmesh-conventie die buffer_3d en minimum_bounding_volume gebruiken, zodat de resultaten rechtstreeks in inside_3d kunnen.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Voxelveld als multiband-raster: band k is de Z-doorsnede op z_min + k * z_spacing."
              },
              "values": {
                "label": "Waarden",
                "description": "Drempelwaarde(n): een getal, een JSON-array van getallen of een door komma's gescheiden tekenreeks. Eén oppervlak per waarde."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad voor de driehoeksmesh-oppervlakken. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "z_min": {
                "label": "Z-minimum",
                "description": "Z-coördinaat van de eerste doorsnede (standaard 0)."
              },
              "z_spacing": {
                "label": "Z-tussenafstand",
                "description": "Verticale afstand tussen doorsneden (standaard 1)."
              },
              "close_boundaries": {
                "label": "Grenzen sluiten",
                "description": "Sluit oppervlakken af waar ze de rand van het volume raken, zodat het resultaat een gesloten vast lichaam begrenst (standaard true). Dit wordt gerealiseerd door een extra schil onder de iso-waarde te doorlopen, waardoor de afsluiting aan het oppervlak wordt gelast; ze ligt tussen het begrenzingsvlak en één cel daarbuiten. Alleen de BUITENSTE zijden worden hiermee afgesloten: cellen die aan interne no-data grenzen worden overgeslagen, zodat een no-data-holte die het geëxtraheerde oppervlak snijdt nog steeds een open rand overlaat (een holte die volledig binnen of buiten de contour ligt raakt de mesh nooit)."
              },
              "smooth": {
                "label": "Gladstrijken",
                "description": "Aantal Laplaciaanse afvlakkingsiteraties dat op de geëxtraheerde mesh wordt toegepast (standaard 0)."
              }
            }
          },
          "warp_raster": {
            "name": "Raster warpen",
            "description": "Georefereert een raster uit paspunten (zoals ArcGIS Warp): fit een polynoom van orde 1/2/3 uit bronpixel → wereldcoördinaat-GCP-paren en herbemonstert naar een nieuw gegeorefereerd raster (nearest/bilineair), met rapportage van residuen per GCP en RMS-fout. De rasterhelft van het conflatieverhaal dat de vectorgebaseerde rubbersheet_features al dekt.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerraster (het pixelraster ervan vormt de broncoördinatenruimte)."
              },
              "gcps": {
                "label": "Paspunten (GCP's)",
                "description": "Paspunten als 'col,row,x,y'-viertallen gescheiden door ';' (>= 3 voor orde 1, 6 voor orde 2, 10 voor orde 3)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Georefereerd uitvoerraster. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "transform": {
                "label": "Transformatie",
                "description": "Polynoomorde: 'poly1' (affien; standaard), 'poly2' of 'poly3'."
              },
              "resampling": {
                "label": "Herbemonstering",
                "description": "'nearest' (standaard) of 'bilinear'."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Uitvoercelgrootte in wereldeenheden (standaard: de invoerbreedte afgebeeld op de doelomvang)."
              },
              "epsg": {
                "label": "EPSG",
                "description": "EPSG-code waarmee het CRS van de uitvoer wordt gemarkeerd (optioneel)."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die wordt vervormd (standaard 1)."
              }
            }
          },
          "weighted_voronoi": {
            "name": "Gewogen Voronoi",
            "description": "Gewogen Voronoi-allocatieraster (markt-/dominantiegebieden): wijst elke cel toe aan de locatie met de kleinste gewogen afstand — multiplicatief (d/w, Apollonius), additief (d-w) of macht (d²-w²) — zoals ArcGIS Generate Weighted Voronoi. De versie met ongelijke locaties van het meegeleverde ongewogen voronoi_diagram.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Invoerpuntlaag met locaties."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerraster met de toewijzing (1-gebaseerde locatie-index per cel). Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "weight_field": {
                "label": "Gewichtsveld",
                "description": "Numeriek veld dat het gewicht/de aantrekkelijkheid van elke locatie geeft (standaard: alle locaties gewicht 1)."
              },
              "weight_type": {
                "label": "Gewichtstype",
                "description": "'multiplicative' (d/w; standaard), 'additive' (d-w) of 'power' (d²-w²)."
              },
              "cell_size": {
                "label": "Celgrootte",
                "description": "Uitvoercelgrootte in CRS-eenheden (standaard: omvang / 400)."
              },
              "margin": {
                "label": "Marge",
                "description": "Fractie van de omvang van de locaties waarmee het raster wordt opgevuld (standaard 0.1)."
              },
              "epsg": {
                "label": "EPSG",
                "description": "EPSG waarmee de uitvoer wordt gemarkeerd (standaard: uit de invoerlaag)."
              }
            }
          },
          "write_geoparquet": {
            "name": "GeoParquet schrijven",
            "description": "Converteert een vectordataset (GeoJSON, Shapefile, FlatGeobuf, GeoPackage, ...) naar GeoParquet, standaard Hilbert-gesorteerd en ZSTD-gecomprimeerd.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad van het invoervectorbestand (het formaat wordt automatisch gedetecteerd) of een handle in het geheugen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Pad van het uitvoer-GeoParquet-bestand (bijv. /work/data.parquet)."
              },
              "compression": {
                "label": "Compressie",
                "description": "Kolomcompressie: zstd (standaard), snappy, gzip of uncompressed."
              },
              "hilbert_sort": {
                "label": "Hilbert-sortering",
                "description": "Sorteert objecten langs een Hilbert-curve voor ruimtelijke lokaliteit (standaard true)."
              }
            }
          },
          "write_pmtiles": {
            "name": "Raster naar PMTiles",
            "description": "Rendert een raster naar één PMTiles-archief (Web Mercator PNG-tegelpiramide).",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Pad naar het invoerrasterbestand. Moet een bron-CRS bevatten (EPSG of WKT)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Pad van het uitvoer-PMTiles-bestand (bijv. /work/dem.pmtiles)."
              },
              "min_zoom": {
                "label": "Minimaal zoomniveau",
                "description": "Minimaal zoomniveau (standaard: één oorspronkelijk zoomniveau dat overeenkomt met de rasterresolutie)."
              },
              "max_zoom": {
                "label": "Maximaal zoomniveau",
                "description": "Maximaal zoomniveau (standaard: hetzelfde als min_zoom)."
              },
              "band": {
                "label": "Band",
                "description": "1-gebaseerde band die wordt gerenderd (standaard 1)."
              },
              "colormap": {
                "label": "Kleurenkaart",
                "description": "Kleurenschaal: viridis (standaard), magma, turbo, terrain of grayscale."
              },
              "method": {
                "label": "Methode",
                "description": "Herbemonsteringsmethode: bilinear (standaard), nearest, cubic."
              },
              "min": {
                "label": "Min",
                "description": "Waarde die op het lage uiteinde van de kleurenschaal wordt afgebeeld (standaard: het minimum van de band)."
              },
              "max": {
                "label": "Max",
                "description": "Waarde die op het hoge uiteinde van de kleurenschaal wordt afgebeeld (standaard: het maximum van de band)."
              }
            }
          },
          "zonal_characterization": {
            "name": "Zonale karakterisering",
            "description": "Berekent statistieken voor meerdere waarderasters over één zoneraster in één doorgang, met een statistiek per raster en willekeurige percentielen, zoals ArcGIS Zonal Characterization.",
            "params": {
              "zones": {
                "label": "Zones",
                "description": "Zoneraster; elke afzonderlijke waarde definieert een zone."
              },
              "rasters": {
                "label": "Rasters",
                "description": "Door komma's gescheiden 'path:statistic[:name]'-vermeldingen, bijv. 'dem.tif:mean,ndvi.tif:median'. Waarderasters gebruiken band 1. Statistieken: mean, sum, min, max, range, stddev, median, majority, minority, variety, count, percentile."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Optioneel uitvoerpad van de statistiektabel. Indien weggelaten, wordt het in het geheugen opgeslagen."
              },
              "percentile": {
                "label": "Percentiel",
                "description": "Percentiel (0-100) dat wordt toegepast op elk raster waarvan de statistiek 'percentile' is (standaard 50)."
              },
              "zone_band": {
                "label": "Zoneband",
                "description": "1-gebaseerde band die uit het zoneraster wordt gelezen (standaard 1)."
              },
              "ignore_nodata": {
                "label": "NoData negeren",
                "description": "Slaat no-data-cellen in de waarderasters over (standaard true). Indien false maakt elke no-data in een zone de statistiek van die zone null."
              }
            }
          },
          "zonal_fill": {
            "name": "Zonaal opvullen",
            "description": "Vult elke zone van een categorisch raster met de minimumwaarde van een gewichtsraster langs de grens van die zone (zoals ArcGIS Zonal Fill) — een bouwsteen voor beperkte oppervlakken die in de meegeleverde suite ontbreekt (fill is stromingsgebaseerd, zonal_statistics vat alleen samen).",
            "params": {
              "zones": {
                "label": "Zones",
                "description": "Categorisch zoneraster (elke afzonderlijke gehele waarde is één zone)."
              },
              "weight": {
                "label": "Gewicht",
                "description": "Gecoregistreerd gewichtsraster waarvan het randminimum elke zone vult."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerraster. Indien weggelaten, wordt het in het geheugen opgeslagen."
              }
            }
          },
          "zonal_geometry": {
            "name": "Zonale geometrie",
            "description": "Geometrische maten per zone uit een categorisch zoneraster (zoals ArcGIS Zonal Geometry): oppervlakte, omtrek, dikte, zwaartepunt en hoofd-/nevenas + oriëntatie van de standaarddeviatie-ellips — de zonevorm-tegenhanger die de meegeleverde waardegebaseerde zonal_statistics en zonal_histogram niet bieden.",
            "params": {
              "zones": {
                "label": "Zones",
                "description": "Categorisch zoneraster (elke afzonderlijke gehele waarde is één zone)."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerraster (rastermodus) of CSV-pad (as_table-modus). Indien weggelaten, wordt het in het geheugen opgeslagen / alleen in het resultaat geretourneerd."
              },
              "measure": {
                "label": "Meting",
                "description": "Maat in rastermodus: 'area' (standaard), 'perimeter', 'thickness', 'centroid_x', 'centroid_y', 'major_axis', 'minor_axis' of 'orientation'."
              },
              "as_table": {
                "label": "Als tabel",
                "description": "Indien true wordt één rij per zone met alle maten uitgevoerd in plaats van een raster per cel (standaard false)."
              }
            }
          },
          "zonal_histogram": {
            "name": "Zonaal histogram",
            "description": "Tabelleert de verdeling van de cellen van een waarderaster binnen elke zone: klassetellingen (categorisch) of gebinde frequenties (continu), als een kruistabel zones x klassen.",
            "params": {
              "zones": {
                "label": "Zones",
                "description": "Pad van het zonerasterbestand (gehele/categorische zone-ID's)."
              },
              "value": {
                "label": "Waarde",
                "description": "Pad van het waarderasterbestand; moet hetzelfde raster als 'zones' delen."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het CSV-bestand: één rij per zone, één kolom per klasse/bin."
              },
              "mode": {
                "label": "Modus",
                "description": "'classes' (standaard) behandelt elke afgeronde waarde als een eigen klasse, voor gehele/categorische waarderasters. 'bins' verdeelt continue waarden in bins van gelijke breedte."
              },
              "bins": {
                "label": "Klassen (bins)",
                "description": "Aantal bins van gelijke breedte voor de modus 'bins'. Standaard 10."
              },
              "percent": {
                "label": "Percentage",
                "description": "Voert van elke klasse het percentage van de geldige cellen van de zone uit in plaats van ruwe celaantallen. Standaard false."
              },
              "zone_band": {
                "label": "Zoneband",
                "description": "1-gebaseerde band die uit 'zones' wordt gelezen. Standaard 1."
              },
              "value_band": {
                "label": "Waardeband",
                "description": "1-gebaseerde band die uit 'value' wordt gelezen. Standaard 1."
              },
              "long_output": {
                "label": "Lange uitvoer",
                "description": "Optioneel CSV-pad voor de variant in lang formaat (zone,class,count,percent)."
              }
            }
          },
          "extract_cog_subset": {
            "name": "COG-subset extraheren",
            "description": "Extraheert een bbox-subset uit een lokale of HTTP Cloud Optimized GeoTIFF.",
            "params": {
              "input": {
                "label": "Invoer",
                "description": "Lokaal COG-bestand. Geef ofwel input ofwel url op."
              },
              "url": {
                "label": "URL",
                "description": "HTTP(S)-COG-URL. Geef ofwel url ofwel input op; HTTP-bronnen gebruiken byte-range-verzoeken."
              },
              "bbox": {
                "label": "Begrenzingsvak",
                "description": "Bbox als minX,minY,maxX,maxY in bbox_crs."
              },
              "bbox_crs": {
                "label": "CRS van begrenzingsvak",
                "description": "EPSG-code van de bbox-coördinaten."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het COG-bestand."
              },
              "level": {
                "label": "Niveau",
                "description": "Te lezen COG-overzichtsniveau; 0 is de volledige resolutie."
              },
              "resolution": {
                "label": "Resolutie",
                "description": "Beoogde pixelgrootte van de uitvoer. Gebruikt de eenheden van output_crs wanneer output_crs is ingesteld; anders die van bbox_crs. Selecteert het dichtstbijzijnde COG-overzicht wanneer level wordt weggelaten."
              },
              "output_crs": {
                "label": "Uitvoer-CRS",
                "description": "Optionele EPSG-code voor de uitvoer. Indien ingesteld, wordt de subset naar dit CRS geherprojecteerd. Voor bron-CRS'en die niet als EPSG-metadata kunnen worden weggeschreven, wordt standaard bbox_crs gebruikt."
              },
              "nodata": {
                "label": "NoData",
                "description": "Optionele nodata-waarde voor de uitvoer. Wordt gebruikt als opvulwaarde bij herprojectie en weggeschreven als nodata-metadata van de uitvoer."
              }
            }
          },
          "extract_wms_subset": {
            "name": "WMS-subset extraheren",
            "description": "Vraagt een bbox-subset op bij een WMS GetMap-eindpunt en schrijft deze als een Deflate-COG.",
            "params": {
              "url": {
                "label": "URL",
                "description": "URL van het WMS-eindpunt."
              },
              "layers": {
                "label": "Lagen",
                "description": "WMS-laagnaam of -namen, door komma's gescheiden."
              },
              "styles": {
                "label": "Stijlen",
                "description": "WMS-stijlnaam of -namen, door komma's gescheiden. Standaard leeg."
              },
              "bbox": {
                "label": "Begrenzingsvak",
                "description": "Bbox als minX,minY,maxX,maxY in bbox_crs."
              },
              "bbox_crs": {
                "label": "CRS van begrenzingsvak",
                "description": "EPSG-code van de bbox-coördinaten."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het COG-bestand."
              },
              "resolution": {
                "label": "Resolutie",
                "description": "Beoogde pixelgrootte van de uitvoer in eenheden van output_crs wanneer output_crs is ingesteld; anders in eenheden van bbox_crs."
              },
              "width": {
                "label": "Breedte",
                "description": "Aangevraagde uitvoerbreedte in pixels. Wordt gebruikt wanneer resolution wordt weggelaten."
              },
              "height": {
                "label": "Hoogte",
                "description": "Aangevraagde uitvoerhoogte in pixels. Wordt gebruikt wanneer resolution wordt weggelaten."
              },
              "output_crs": {
                "label": "Uitvoer-CRS",
                "description": "Optionele EPSG-code voor de uitvoer/aanvraag. Standaard bbox_crs."
              },
              "format": {
                "label": "Formaat",
                "description": "WMS-beeldformaat. Standaard image/geotiff."
              },
              "version": {
                "label": "Versie",
                "description": "WMS-versie. Standaard 1.1.1."
              },
              "nodata": {
                "label": "NoData",
                "description": "Optionele nodata-waarde voor de uitvoer."
              }
            }
          },
          "extract_xyz_tile_subset": {
            "name": "XYZ-tegelsubset extraheren",
            "description": "Haalt XYZ-rastertegels op voor een bbox, mozaïekt ze en schrijft een Deflate-RGB-COG.",
            "params": {
              "url": {
                "label": "URL",
                "description": "URL-sjabloon voor XYZ-tegels, bijv. https://.../{z}/{x}/{y}.png."
              },
              "zoom": {
                "label": "Zoomniveau",
                "description": "XYZ-zoomniveau."
              },
              "bbox": {
                "label": "Begrenzingsvak",
                "description": "Bbox als minX,minY,maxX,maxY in bbox_crs."
              },
              "bbox_crs": {
                "label": "CRS van begrenzingsvak",
                "description": "EPSG-code van de bbox-coördinaten."
              },
              "output": {
                "label": "Uitvoer",
                "description": "Uitvoerpad van het COG-bestand."
              },
              "resolution": {
                "label": "Resolutie",
                "description": "Beoogde pixelgrootte van de uitvoer in eenheden van output_crs. Standaard de oorspronkelijke tegelresolutie."
              },
              "width": {
                "label": "Breedte",
                "description": "Uitvoerbreedte in pixels. Wordt gebruikt wanneer resolution wordt weggelaten."
              },
              "height": {
                "label": "Hoogte",
                "description": "Uitvoerhoogte in pixels. Wordt gebruikt wanneer resolution wordt weggelaten."
              },
              "output_crs": {
                "label": "Uitvoer-CRS",
                "description": "Optionele EPSG-code voor de uitvoer. Standaard bbox_crs."
              },
              "tile_size": {
                "label": "Tegelgrootte",
                "description": "Tegelgrootte in pixels. Standaard 256."
              },
              "subdomains": {
                "label": "Subdomeinen",
                "description": "Optionele subdomeinletters voor {s}, bijv. abc."
              },
              "nodata": {
                "label": "NoData",
                "description": "Optionele nodata-waarde voor de uitvoer die wordt gebruikt voor ontbrekende/transparante pixels."
              }
            }
          }
        }
      },
      "whitebox": {
        "categories": {
          "conversion": "Conversie",
          "conversionGeometryTopology": "Conversie - Geometrie en topologie",
          "conversionRasterVectorConversion": "Conversie - Raster-/vectorconversie",
          "conversionVectorTableIO": "Conversie - Vector- en tabel-I/O",
          "hydrology": "Hydrologie",
          "hydrologyDepressionsStorage": "Hydrologie - Depressies en berging",
          "hydrologyFlowRouting": "Hydrologie - Afstromingsroutering",
          "hydrologyHydrologicIndices": "Hydrologie - Hydrologische indices",
          "hydrologyStreamsLongitudinalAnalysis": "Hydrologie - Waterlopen - Longitudinale analyse",
          "hydrologyStreamsNetworkExtraction": "Hydrologie - Waterlopen - Netwerkextractie",
          "hydrologyStreamsOrderingMetrics": "Hydrologie - Waterlopen - Ordeningsmaten",
          "hydrologyWatershedsBasins": "Hydrologie - Stroomgebieden",
          "lidarAnalysisMetrics": "LiDAR - Analysematen",
          "lidarFilteringClassification": "LiDAR - Filtering en classificatie",
          "lidarIOManagement": "LiDAR - I/O en beheer",
          "lidarInterpolationGridding": "LiDAR - Interpolatie en rastering",
          "projectionAndGeoreferencing": "Projectie en georeferentie",
          "raster": "Raster",
          "rasterDistanceCost": "Raster - Afstand en kosten",
          "rasterLocalNeighborhood": "Raster - Lokale omgeving",
          "rasterOverlayMath": "Raster - Overlay-rekenkunde",
          "rasterReclassifyMask": "Raster - Herclassificeren en maskeren",
          "rasterSpatialStatistics": "Raster - Ruimtelijke statistiek",
          "remoteSensingChangeDetection": "Remote sensing - Veranderingsdetectie",
          "remoteSensingClassification": "Remote sensing - Classificatie",
          "remoteSensingEdgeFeatureDetection": "Remote sensing - Rand- en kenmerkdetectie",
          "remoteSensingEnhancementContrast": "Remote sensing - Verbetering en contrast",
          "remoteSensingFilters": "Remote sensing - Filters",
          "remoteSensingObia": "Remote sensing - OBIA",
          "remoteSensingRadiometricCorrection": "Remote sensing - Radiometrische correctie",
          "remoteSensingSar": "Remote sensing - SAR",
          "remoteSensingSpectralAnalytics": "Remote sensing - Spectrale analyse",
          "remoteSensingThermalEmissivity": "Remote sensing - Thermisch en emissiviteit",
          "terrain": "Terrein",
          "terrainDerivatives": "Terrein - Afgeleiden",
          "terrainLandformIndices": "Terrein - Landvormindices",
          "terrainMultiscaleSignatures": "Terrein - Multischaal-signaturen",
          "terrainRoughnessTexture": "Terrein - Ruwheid en textuur",
          "terrainVisibility": "Terrein - Zichtbaarheid",
          "terrainWorkflowProducts": "Terrein - Workflowproducten",
          "vector": "Vector",
          "vectorAttributeAnalysis": "Vector - Attribuutanalyse",
          "vectorGeometryProcessing": "Vector - Geometrieverwerking",
          "vectorLinearReferencing": "Vector - Lineaire referentie",
          "vectorNetworkAnalysis": "Vector - Netwerkanalyse",
          "vectorOnlineData": "Vector - Onlinegegevens",
          "vectorOverlayAnalysis": "Vector - Overlay-analyse",
          "vectorSamplingGridding": "Vector - Steekproef en rastering",
          "vectorShapeMetrics": "Vector - Vormmaten",
          "vectorSpatialStatistics": "Vector - Ruimtelijke statistiek"
        },
        "menuTool": {
          "calculate_transit_service_frequency": "Frequentie van OV-diensten berekenen",
          "excel_to_table": "Excel naar tabel",
          "extract_scanned_features": "Gescande objecten extraheren",
          "features_to_gpx": "Objecten naar GPX",
          "features_to_gtfs": "Objecten naar GTFS",
          "gpx_to_features": "GPX naar objecten",
          "gtfs_to_features": "GTFS naar objecten",
          "h3_to_vector": "H3-cellen naar polygonen",
          "h3_polyfill": "H3-polyfill",
          "kml_to_features": "KML naar objecten",
          "pmtiles_extract": "PMTiles extraheren",
          "raster_to_h3": "Raster naar H3-bins",
          "write_pmtiles": "Raster naar PMTiles",
          "raster_to_tiles": "Raster naar XYZ-tegels",
          "read_geoparquet": "GeoParquet lezen",
          "vector_convert": "Vector converteren",
          "vector_to_h3": "Vector naar H3-bins",
          "vector_to_pmtiles": "Vector naar PMTiles",
          "write_geoparquet": "GeoParquet schrijven",
          "fix_dangling_arcs": "Lijnen naar polygonen",
          "lines_to_polygons": "Meerdelig naar enkeldelig",
          "multipart_to_singlepart": "Polygonen naar lijnen",
          "polygons_to_lines": "Polygoongaten verwijderen",
          "remove_polygon_holes": "Enkeldelig naar meerdelig",
          "singlepart_to_multipart": "Topologieregels automatisch herstellen",
          "topology_rule_autofix": "Topologieregels valideren",
          "topology_rule_validate": "Topologievalidatierapport",
          "topology_validation_report": "NoData naar nul converteren",
          "convert_nodata_to_zero": "NoData-waarde wijzigen",
          "modify_nodata_value": "Nieuw raster op basis van raster",
          "new_raster_from_base_raster": "Nieuw raster op basis van vector",
          "new_raster_from_base_vector": "Raster naar vectorlijnen",
          "raster_to_vector_lines": "Raster naar vectorpunten",
          "raster_to_vector_points": "Raster naar vectorpolygonen",
          "raster_to_vector_polygons": "Rasterpolygoongaten verwijderen",
          "remove_raster_polygon_holes": "NoData-waarde instellen",
          "set_nodata_value": "Vectorlijnen naar raster",
          "vector_lines_to_raster": "Vectorpunten naar raster",
          "vector_points_to_raster": "Vectorpolygonen naar raster",
          "vector_polygons_to_raster": "Lokale Moran's I (LISA) voor raster",
          "add_point_coordinates_to_table": "Vector opschonen",
          "clean_vector": "CSV-punten naar vector",
          "csv_points_to_vector": "Tabel exporteren naar CSV",
          "export_table_to_csv": "Tabellen joinen",
          "join_tables": "Tabel samenvoegen met CSV",
          "merge_table_with_csv": "Vectoren samenvoegen",
          "merge_vectors": "Attribuuttabel opnieuw initialiseren",
          "reinitialize_attribute_table": "Samenvattende vectorstatistieken",
          "vector_summary_statistics": "Loshangende bogen repareren",
          "delineate_depressions": "Depressies afbakenen",
          "delineate_mounts": "Verhevenheden afbakenen",
          "enforce_river_monotonicity": "Riviermonotonie afdwingen",
          "extract_sinks": "Sinks extraheren",
          "fill_spill_merge": "Fill-Spill-Merge",
          "topo_to_raster": "Topo naar raster",
          "breach_depressions_least_cost": "Depressies doorbreken (minimale kosten)",
          "breach_single_cell_pits": "Enkelcelputten doorbreken",
          "burn_streams": "Waterlopen inbranden",
          "burn_streams_at_roads": "Waterlopen inbranden bij wegen",
          "depth_in_sink": "Diepte in sink",
          "fill_burn": "Vullen en inbranden",
          "fill_depressions": "Depressies vullen",
          "fill_depressions_planchon_and_darboux": "Depressies vullen (Planchon en Darboux)",
          "fill_depressions_wang_and_liu": "Depressies vullen (Wang en Liu)",
          "fill_pits": "Putten vullen",
          "flatten_lakes": "Meren afvlakken",
          "impoundment_size_index": "Stuwmeergrootte-index",
          "insert_dams": "Dammen invoegen",
          "raise_walls": "Wanden verhogen",
          "sink": "Sink",
          "stochastic_depression_analysis": "Stochastische depressieanalyse",
          "topological_breach_burn": "Bovenstroomse depressieberging",
          "upslope_depression_storage": "Bekkens",
          "average_flowpath_slope": "Gemiddelde stroompadhelling",
          "average_upslope_flowpath_length": "Gemiddelde bovenstroomse stroompadlengte",
          "d8_flow_accum": "D8-stroomaccumulatie",
          "d8_mass_flux": "D8-massaflux",
          "d8_pointer": "D8-stroomrichting",
          "dinf_flow_accum": "D-inf-stroomaccumulatie",
          "dinf_mass_flux": "D-inf-massaflux",
          "dinf_pointer": "D-inf-stroomrichting",
          "downslope_flowpath_length": "Benedenstroomse stroompadlengte",
          "fd8_flow_accum": "FD8-stroomaccumulatie",
          "fd8_pointer": "FD8-stroomrichting",
          "flow_accum_full_workflow": "Volledige stroomaccumulatieworkflow",
          "flow_length_diff": "Stroomlengteverschil",
          "max_upslope_flowpath_length": "Maximale bovenstroomse stroompadlengte",
          "max_upslope_value": "Maximale bovenstroomse waarde",
          "mdinf_flow_accum": "MD-inf-stroomaccumulatie",
          "minimal_dispersion_flow_algorithm": "Minimale-dispersie-stroomalgoritme",
          "num_inflowing_neighbours": "Aantal instromende buurcellen",
          "qin_flow_accumulation": "Qin-stroomaccumulatie",
          "quinn_flow_accumulation": "Quinn-stroomaccumulatie",
          "rho8_flow_accum": "Rho8-stroomaccumulatie",
          "rho8_pointer": "Rho8-stroomrichting",
          "trace_downslope_flowpaths": "Benedenstroomse stroompaden traceren",
          "depth_to_water": "Afstand tot uitlaat",
          "distance_to_outlet": "Benedenstroomse afstand tot waterloop",
          "downslope_distance_to_stream": "Benedenstroomse index",
          "downslope_index": "Randcontaminatie",
          "edge_contamination": "Hoogte relatief tot min/max van stroomgebied",
          "elev_relative_to_watershed_min_max": "Hoogte boven waterloop",
          "elevation_above_stream": "Hoogte boven waterloop (euclidisch)",
          "elevation_above_stream_euclidean": "Cellen zonder afstroming vinden",
          "find_noflow_cells": "Parallelle afstroming vinden",
          "find_parallel_flow": "Hydrologische connectiviteit",
          "hydrologic_connectivity": "Relatieve stroomkrachtindex",
          "relative_stream_power_index": "Sedimenttransportindex",
          "sediment_transport_index": "Vochtigheidsindex",
          "wetness_index": "Waterlopen extraheren",
          "farthest_channel_head": "Hoofdstroom vinden",
          "find_main_stem": "Lengte van bovenstroomse kanalen",
          "length_of_upstream_channels": "Lengteprofiel",
          "long_profile": "Lengteprofiel uit punten",
          "long_profile_from_points": "Hack-waterlooporde",
          "extract_streams": "Valleien extraheren",
          "extract_valleys": "Vectorwaterlopen snoeien",
          "prune_vector_streams": "Rasterwaterlopen naar vector",
          "raster_streams_to_vector": "Waterlopen rasteriseren",
          "rasterize_streams": "Korte waterlopen verwijderen",
          "remove_short_streams": "Topologie van vectorwaterlopen repareren",
          "repair_stream_vector_topology": "Riviermiddellijnen",
          "river_centerlines": "Verste kanaalkop",
          "hack_stream_order": "Horton-ratio's",
          "horton_ratios": "Horton-waterlooporde",
          "horton_stream_order": "Shreve-waterloopmagnitude",
          "shreve_stream_magnitude": "Strahler-ordebekkens",
          "strahler_order_basins": "Strahler-waterlooporde",
          "strahler_stream_order": "Waterlooplinkklasse",
          "stream_link_class": "Waterlooplink-identificatie",
          "stream_link_identifier": "Waterlooplinklengte",
          "stream_link_length": "Waterlooplinkhelling",
          "stream_link_slope": "Continue waterloophelling",
          "stream_slope_continuous": "Topologische waterlooporde",
          "topological_stream_order": "Zijrivier-identificatie",
          "tributary_identifier": "Analyse van vectorwaterloopnetwerk",
          "vector_stream_network_analysis": "Puntcoördinaten toevoegen aan tabel",
          "basins": "Overstromingsvolgorde",
          "flood_order": "Hellingen (hillslopes)",
          "hillslopes": "Isobekkens",
          "isobasins": "Uitstroompunten snappen (Jenson)",
          "jenson_snap_pour_points": "Langste stroompad",
          "longest_flowpath": "Maximale taklengte",
          "max_branch_length": "Uitstroompunten snappen",
          "snap_pour_points": "Deelstroomgebieden",
          "subbasins": "Bekkens ontnesten",
          "unnest_basins": "Stroomgebied",
          "watershed": "Stroomgebied uit rasteruitstroompunten",
          "watershed_from_raster_pour_points": "Diepte tot water",
          "assign_projection_lidar": "Projectie toekennen (LiDAR)",
          "colourize_based_on_class": "Inkleuren op basis van klasse",
          "colourize_based_on_point_returns": "Inkleuren op basis van puntreturns",
          "find_flightline_edge_points": "Randpunten van vluchtlijnen vinden",
          "individual_tree_detection": "Detectie van individuele bomen",
          "lidar_eigenvalue_features": "LiDAR-eigenwaardekenmerken",
          "lidar_histogram": "LiDAR-histogram",
          "lidar_info": "LiDAR-info",
          "lidar_kappa": "LiDAR-kappa",
          "lidar_point_density": "LiDAR-puntdichtheid",
          "lidar_point_return_analysis": "LiDAR-puntreturnanalyse",
          "lidar_point_stats": "LiDAR-puntstatistieken",
          "lidar_ransac_planes": "LiDAR-RANSAC-vlakken",
          "lidar_rooftop_analysis": "LiDAR-dakanalyse",
          "normal_vectors": "Normaalvectoren",
          "classify_buildings_in_lidar": "Gebouwen classificeren in LiDAR",
          "classify_lidar": "LiDAR classificeren",
          "classify_overlap_points": "Overlappende punten classificeren",
          "clip_lidar_to_polygon": "LiDAR uitsnijden op polygoon",
          "erase_polygon_from_lidar": "Polygoon wissen uit LiDAR",
          "filter_lidar": "LiDAR filteren",
          "filter_lidar_by_percentile": "LiDAR filteren op percentiel",
          "filter_lidar_by_reference_surface": "LiDAR filteren op referentieoppervlak",
          "filter_lidar_classes": "LiDAR-klassen filteren",
          "filter_lidar_noise": "LiDAR-ruis filteren",
          "filter_lidar_scan_angles": "LiDAR filteren op scanhoek",
          "height_above_ground": "Hoogte boven maaiveld",
          "improved_ground_point_filter": "Verbeterd grondpuntfilter",
          "individual_tree_segmentation": "Segmentatie van individuele bomen",
          "lidar_classify_subset": "LiDAR-subset classificeren",
          "lidar_elevation_slice": "LiDAR-hoogtedoorsnede",
          "lidar_remove_outliers": "LiDAR-uitschieters verwijderen",
          "lidar_segmentation": "LiDAR-segmentatie",
          "lidar_segmentation_based_filter": "LiDAR-filter op basis van segmentatie",
          "modify_lidar": "LiDAR wijzigen",
          "normalize_lidar": "LiDAR normaliseren",
          "remove_duplicates": "Duplicaten verwijderen",
          "ascii_to_las": "ASCII naar LAS",
          "las_to_ascii": "LAS naar ASCII",
          "las_to_shapefile": "LAS naar Shapefile",
          "lidar_colourize": "LiDAR inkleuren",
          "lidar_join": "LiDAR samenvoegen",
          "lidar_shift": "LiDAR verschuiven",
          "lidar_tile": "LiDAR tegelen",
          "lidar_tophat_transform": "LiDAR-top-hat-transformatie",
          "recover_flightline_info": "Vluchtlijninformatie herstellen",
          "select_tiles_by_polygon": "Tegels selecteren op polygoon",
          "sort_lidar": "LiDAR sorteren",
          "split_lidar": "LiDAR splitsen",
          "flightline_overlap": "Vluchtlijnoverlap",
          "lidar_block_maximum": "LiDAR-blokmaximum",
          "lidar_block_minimum": "LiDAR-blokminimum",
          "lidar_construct_vector_tin": "Vector-TIN opbouwen uit LiDAR",
          "lidar_contour": "LiDAR-contouren",
          "lidar_digital_surface_model": "Digitaal oppervlaktemodel uit LiDAR",
          "lidar_hex_bin": "LiDAR-hexagonale binning",
          "lidar_hillshade": "LiDAR-schaduwreliëf",
          "lidar_idw_interpolation": "LiDAR-IDW-interpolatie",
          "lidar_nearest_neighbour_gridding": "LiDAR-rastering op nearest neighbour",
          "lidar_radial_basis_function_interpolation": "LiDAR-interpolatie met radiale basisfuncties",
          "lidar_sibson_interpolation": "LiDAR-Sibson-interpolatie",
          "lidar_thin": "LiDAR uitdunnen",
          "lidar_thin_high_density": "LiDAR uitdunnen (hoge dichtheid)",
          "lidar_tile_footprint": "LiDAR-tegelomtrek",
          "lidar_tin_gridding": "LiDAR-TIN-rastering",
          "build_network_topology": "Netwerktopologie opbouwen",
          "closest_facility_network": "Dichtstbijzijnde voorziening (netwerk)",
          "generate_network_nodes": "Netwerkknopen genereren",
          "k_shortest_paths_network": "K kortste paden (netwerk)",
          "location_allocation_network": "Locatie-allocatie (netwerk)",
          "map_matching_v1": "Map matching V1",
          "multimodal_od_cost_matrix": "Multimodale HB-kostenmatrix",
          "multimodal_routes_from_od": "Multimodale routes uit HB-paren",
          "multimodal_shortest_path": "Multimodaal kortste pad",
          "network_accessibility_metrics": "Netwerktoegankelijkheidsmaten",
          "network_centrality_metrics": "Netwerkcentraliteitsmaten",
          "network_connected_components": "Samenhangende netwerkcomponenten",
          "network_node_degree": "Netwerkknoopgraad",
          "network_od_cost_matrix": "HB-kostenmatrix (netwerk)",
          "network_routes_from_od": "Routes uit HB-paren (netwerk)",
          "network_service_area": "Verzorgingsgebied (netwerk)",
          "network_topology_audit": "Netwerktopologie-audit",
          "od_sensitivity_analysis": "HB-gevoeligheidsanalyse",
          "shortest_path_network": "Kortste pad (netwerk)",
          "snap_points_to_network": "Punten snappen naar netwerk",
          "split_lines_at_intersections": "Lijnen splitsen op kruisingen",
          "transfer_attributes": "Attributen overdragen",
          "travelling_salesman_problem": "Handelsreizigersprobleem",
          "vehicle_routing_cvrp": "Voertuigroutering (CVRP)",
          "vehicle_routing_pickup_delivery": "Voertuigroutering (ophalen en afleveren)",
          "vehicle_routing_vrptw": "Voertuigroutering (VRPTW)",
          "georeference_raster_from_control_points": "Raster georefereren met paspunten",
          "orthorectification": "Orthorectificatie",
          "reproject_lidar": "LiDAR herprojecteren",
          "reproject_vector": "Vector herprojecteren",
          "aggregate_multidimensional_raster": "Multidimensionaal raster aggregeren",
          "analyze_changes_ccdc": "Veranderingen analyseren met CCDC",
          "apply_radiometric_calibration": "Radiometrische kalibratie toepassen",
          "assign_projection_raster": "Projectie toekennen (raster)",
          "band_collection_statistics": "Bandcollectiestatistieken",
          "block_statistics": "Blokstatistieken",
          "boundary_clean": "Grenzen opschonen",
          "cell_position_statistics": "Celpositiestatistieken",
          "cell_statistics": "Celstatistieken",
          "classification_accuracy_assessment": "Beoordeling van classificatienauwkeurigheid",
          "combine": "Combineren",
          "composite_bands": "Banden samenstellen",
          "compute_sar_indices": "SAR-indices berekenen",
          "contour_with_barriers": "Contouren met barrières",
          "convert_sar_units": "SAR-eenheden converteren",
          "coregister_rasters": "Rasters coregistreren",
          "corridor": "Corridor",
          "cost_back_link": "Kosten-terugkoppeling",
          "cut_fill": "Graven en ophogen",
          "darcy_flow": "Darcy-stroming",
          "dem_filter": "DEM-filter",
          "detect_image_anomalies": "Beeldanomalieën detecteren",
          "diffusion_interpolation_with_barriers": "Diffusie-interpolatie met barrières",
          "dimensional_moving_statistics": "Dimensionale bewegende statistieken",
          "empirical_bayesian_kriging": "Empirische bayesiaanse kriging",
          "euclidean_direction": "Euclidische richting",
          "expand_shrink": "Uitbreiden / krimpen",
          "extract_cog_subset": "COG-subset extraheren",
          "extract_ocean_winds": "Oceaanwinden extraheren",
          "extract_spectra_from_image": "Spectra extraheren uit beeld",
          "extract_wms_subset": "WMS-subset extraheren",
          "extract_xyz_tile_subset": "XYZ-tegelsubset extraheren",
          "find_argument_statistics": "Argumentstatistieken vinden",
          "flatten_interferogram": "Interferogram afvlakken",
          "focal_flow": "Focale stroming",
          "focal_statistics": "Focale statistieken",
          "frequency_comparison": "Frequentievergelijking",
          "fuzzy_overlay": "Fuzzy overlay",
          "gaussian_geostatistical_simulations": "Gaussiaanse geostatistische simulaties",
          "multidimensional_anomaly": "Multidimensionale anomalie genereren",
          "generate_trend_raster": "Trendraster genereren",
          "goldstein_phase_filter": "Goldstein-fasefilter",
          "idw_3d": "3D-IDW",
          "interpolate_from_spatiotemporal_points": "Interpoleren uit ruimtelijk-temporele punten",
          "interpolate_with_barriers": "Interpoleren met barrières",
          "kernel_density_ratio": "Kerneldichtheidsratio",
          "kernel_interpolation_with_barriers": "Kernelinterpolatie met barrières",
          "landtrendr": "LandTrendr",
          "las_height_metrics": "LAS-hoogtematen",
          "line_density": "Lijndichtheid",
          "line_statistics": "Lijnstatistieken",
          "local_polynomial_interpolation": "Lokale polynoominterpolatie",
          "locate_regions": "Regio's lokaliseren",
          "matched_filter_target_detection": "Matched-filter-doeldetectie (CEM/ACE)",
          "maximum_likelihood_classification": "Maximum-likelihood-classificatie",
          "merge_multidimensional_rasters": "Multidimensionale rasters samenvoegen",
          "multicriteria_overlay": "Multicriteria-overlay",
          "multidimensional_principal_components": "Multidimensionale hoofdcomponenten",
          "multidimensional_raster_correlation": "Multidimensionale rastercorrelatie",
          "multilook": "Multilook",
          "multitemporal_coherence": "Multitemporele coherentie",
          "observer_points": "Waarnemerspunten",
          "optimal_interpolation": "Optimale interpolatie",
          "path_distance": "Padafstand",
          "percentile_contours": "Percentielcontouren",
          "point_statistics": "Puntstatistieken",
          "porous_puff": "Poreuze pluim",
          "predict_using_trend_raster": "Voorspellen met trendraster",
          "presence_only_prediction": "Presence-only-voorspelling",
          "pycnophylactic_interpolation": "Pycnofylactische interpolatie",
          "radiometric_terrain_flattening": "Radiometrische terreinafvlakking",
          "raster_normalize": "Raster normaliseren",
          "regression_kriging": "Regressiekriging",
          "remove_thermal_noise": "Thermische ruis verwijderen",
          "render_raster_png": "Raster renderen naar PNG",
          "reproject_raster": "Raster herprojecteren",
          "rescale_by_function": "Herschalen met functie",
          "sar_coherence": "SAR-coherentie",
          "slice_raster": "Raster in plakken snijden",
          "solar_radiation": "Zonnestraling",
          "space_time_kernel_density": "Ruimte-tijd-kerneldichtheid",
          "spatial_association_between_zones": "Ruimtelijke associatie tussen zones",
          "spectral_index": "Spectrale index",
          "split_raster": "Raster splitsen",
          "storage_capacity": "Bergingscapaciteit",
          "subset_multidimensional_raster": "Deelverzameling van multidimensionaal raster",
          "summarize_categorical_raster": "Categorisch raster samenvatten",
          "surface_parameters": "Oppervlakparameters",
          "surface_volume": "Oppervlakvolume",
          "time_series_cross_correlation": "Tijdreekskruiscorrelatie",
          "unwrap_phase": "Fase ontvouwen",
          "warp_raster": "Raster warpen",
          "weighted_voronoi": "Gewogen Voronoi",
          "zonal_characterization": "Zonale karakterisering",
          "zonal_fill": "Zonaal opvullen",
          "zonal_geometry": "Zonale geometrie",
          "zonal_histogram": "Zonaal histogram",
          "abs": "Absolute waarde",
          "aggregate_raster": "Raster aggregeren",
          "anova": "ANOVA",
          "arccos": "Arccos",
          "arcosh": "Arcosh",
          "arcsin": "Arcsin",
          "arctan": "Arctan",
          "arsinh": "Arsinh",
          "artanh": "Artanh",
          "atan2": "Atan2",
          "block_maximum": "Blokmaximum",
          "block_minimum": "Blokminimum",
          "boundary_shape_complexity": "Grensvormcomplexiteit",
          "ceil": "Afronden naar boven",
          "centroid_raster": "Zwaartepunt (raster)",
          "clip_raster_to_polygon": "Raster uitsnijden op polygoon",
          "clump": "Clusteren (clump)",
          "cos": "Cos",
          "cosh": "Cosh",
          "create_plane": "Vlak maken",
          "crispness_index": "Scherpte-index",
          "cross_tabulation": "Kruistabel",
          "cumulative_distribution": "Cumulatieve verdeling",
          "dbscan": "DBSCAN",
          "decrement": "Verlagen",
          "edge_proportion": "Randaandeel",
          "equal_to": "Gelijk aan",
          "erase_polygon_from_raster": "Polygoon wissen uit raster",
          "exp": "Exp",
          "exp2": "Exp2",
          "fft_random_field": "FFT-willekeurig veld",
          "filter_raster_features_by_area": "Rasterobjecten filteren op oppervlakte",
          "find_patch_edge_cells": "Patchrandcellen vinden",
          "floor": "Afronden naar beneden",
          "greater_than": "Groter dan",
          "greater_than_or_equal_to": "Groter dan of gelijk aan",
          "heat_map": "Heatmap",
          "idw_interpolation": "IDW-interpolatie",
          "image_autocorrelation": "Beeldautocorrelatie",
          "image_correlation": "Beeldcorrelatie",
          "image_regression": "Beeldregressie",
          "increment": "Verhogen",
          "inplace_add": "In-place optellen",
          "inplace_divide": "In-place delen",
          "inplace_multiply": "In-place vermenigvuldigen",
          "inplace_subtract": "In-place aftrekken",
          "integer_division": "Geheeltallige deling",
          "inverse_pca": "Inverse PCA",
          "is_nodata": "Is NoData",
          "kappa_index": "Kappa-index",
          "ks_normality_test": "KS-normaliteitstoets",
          "less_than": "Kleiner dan",
          "less_than_or_equal_to": "Kleiner dan of gelijk aan",
          "list_unique_values_raster": "Unieke waarden weergeven (raster)",
          "ln": "Ln",
          "log10": "Log10",
          "log2": "Log2",
          "map_features": "Objecten karteren",
          "max": "Max",
          "min": "Min",
          "modified_shepard_interpolation": "Gewijzigde Shepard-interpolatie",
          "narrowness_index": "Smalheidsindex",
          "negate": "Negeren (teken omkeren)",
          "nibble": "Knabbelen (nibble)",
          "not_equal_to": "Niet gelijk aan",
          "ordinary_cokriging": "Ordinary cokriging-interpolatie",
          "paired_sample_t_test": "Gepaarde t-toets",
          "phi_coefficient": "Phi-coëfficiënt",
          "principal_component_analysis": "Hoofdcomponentenanalyse",
          "print_geotiff_tags": "GeoTIFF-tags weergeven",
          "quantiles": "Kwantielen",
          "radial_basis_function_interpolation": "Interpolatie met radiale basisfuncties",
          "radius_of_gyration": "Gyratiestraal",
          "random_field": "Willekeurig veld",
          "random_forest_classification_fit": "Random-forest-classificatie (fitten)",
          "random_forest_classification_predict": "Random-forest-classificatie (voorspellen)",
          "random_forest_regression_fit": "Random-forest-regressie (fitten)",
          "random_forest_regression_predict": "Random-forest-regressie (voorspellen)",
          "random_sample": "Willekeurige steekproef",
          "raster_area": "Rasteroppervlakte",
          "raster_calculator": "Rastercalculator",
          "raster_cell_assignment": "Rastercel-toewijzing",
          "raster_histogram": "Rasterhistogram",
          "raster_perimeter": "Rasteromtrek",
          "raster_summary_stats": "Samenvattende rasterstatistieken",
          "reciprocal": "Reciproque",
          "rescale_value_range": "Waardebereik herschalen",
          "root_mean_square_error": "Wortel van gemiddelde kwadratische fout",
          "round": "Afronden",
          "shape_complexity_index_raster": "Vormcomplexiteitsindex (raster)",
          "sieve": "Zeven (sieve)",
          "sin": "Sin",
          "sinh": "Sinh",
          "sqrt": "Sqrt",
          "square": "Kwadraat",
          "tan": "Tan",
          "tanh": "Tanh",
          "tin_interpolation": "TIN-interpolatie",
          "to_degrees": "Naar graden",
          "to_radians": "Naar radialen",
          "trend_surface": "Trendoppervlak",
          "trend_surface_vector_points": "Trendoppervlak (vectorpunten)",
          "truncate": "Afkappen",
          "turning_bands_simulation": "Turning-bands-simulatie",
          "two_sample_ks_test": "Tweesteekproeven-KS-toets",
          "wilcoxon_signed_rank_test": "Wilcoxon-rangtekentoets",
          "z_scores": "Z-scores",
          "zonal_statistics": "Zonale statistiek",
          "buffer_raster": "Raster bufferen",
          "cost_allocation": "Kostenallocatie",
          "cost_distance": "Kostenafstand",
          "cost_pathway": "Kostenpad",
          "euclidean_allocation": "Euclidische allocatie",
          "euclidean_distance": "Euclidische afstand",
          "image_correlation_neighbourhood_analysis": "Beeldcorrelatie-omgevingsanalyse",
          "natural_neighbour_interpolation": "Natural-neighbour-interpolatie",
          "nearest_neighbour_interpolation": "Nearest-neighbour-interpolatie",
          "add": "Gemiddelde-overlay",
          "average_overlay": "Booleaans AND",
          "bool_and": "Booleaans AND",
          "bool_not": "Booleaans NOT",
          "bool_or": "Booleaans OR",
          "bool_xor": "Booleaans XOR",
          "count_if": "Tellen indien",
          "divide": "Delen",
          "highest_position": "Hoogste positie",
          "lowest_position": "Laagste positie",
          "max_absolute_overlay": "Maximale absolute overlay",
          "max_overlay": "Maximum-overlay",
          "min_absolute_overlay": "Minimale absolute overlay",
          "min_overlay": "Minimum-overlay",
          "modulo": "Modulo",
          "multiply": "Vermenigvuldigen",
          "multiply_overlay": "Vermenigvuldigings-overlay",
          "percent_equal_to": "Percentage gelijk aan",
          "percent_greater_than": "Percentage groter dan",
          "percent_less_than": "Percentage kleiner dan",
          "pick_from_list": "Kiezen uit lijst",
          "power": "Macht",
          "standard_deviation_overlay": "Standaardafwijkings-overlay",
          "subtract": "Aftrekken",
          "sum_overlay": "Som-overlay",
          "update_nodata_cells": "NoData-cellen bijwerken",
          "weighted_overlay": "Gewogen overlay",
          "weighted_sum": "Gewogen som",
          "conditional_evaluation": "Voorwaardelijke evaluatie",
          "reclass": "Herclassificeren",
          "reclass_equal_interval": "Herclassificeren met gelijke intervallen",
          "geographically_weighted_regression_raster": "Inhomogeen intensiteitsraster",
          "getis_ord_gi_star_raster": "Ordinary kriging",
          "inhomogeneous_intensity_raster": "Optellen",
          "local_kriging": "Simple kriging",
          "local_morans_i_lisa_raster": "Getis-Ord Gi* voor raster",
          "ordinary_kriging": "Lokale kriging",
          "simple_kriging": "Universal kriging",
          "spacetime_kriging": "Ruimtelijke-lag-regressie (raster)",
          "spatial_error_regression_raster": "Geografisch gewogen regressie (raster)",
          "spatial_lag_regression_raster": "Ruimtelijke-foutregressie (raster)",
          "universal_kriging": "Ruimte-tijd-kriging",
          "change_vector_analysis": "Veranderingsvectoranalyse",
          "image_difference_change_detection": "Veranderingsdetectie via beeldverschil",
          "pca_based_change_detection": "Veranderingsdetectie op basis van PCA",
          "post_classification_change": "Verandering na classificatie",
          "write_function_memory_insertion": "Write-function-memory-insertie",
          "evaluate_training_sites": "Trainingsgebieden evalueren",
          "fuzzy_knn_classification": "Fuzzy KNN-classificatie",
          "generalize_classified_raster": "Geclassificeerd raster generaliseren",
          "generalize_with_similarity": "Generaliseren op basis van gelijkenis",
          "k_means_clustering": "K-means-clustering",
          "knn_classification": "KNN-classificatie",
          "knn_regression": "KNN-regressie",
          "logistic_regression": "Logistische regressie",
          "min_dist_classification": "Minimale-afstandsclassificatie",
          "modified_k_means_clustering": "Aangepaste K-means-clustering",
          "nnd_classification": "NND-classificatie",
          "otsu_thresholding": "Otsu-drempelbepaling",
          "parallelepiped_classification": "Parallellepipedumclassificatie",
          "random_forest_classification": "Random-forest-classificatie",
          "random_forest_regression": "Random-forest-regressie",
          "svm_classification": "SVM-classificatie",
          "svm_regression": "SVM-regressie",
          "canny_edge_detection": "Canny-randdetectie",
          "corner_detection": "Hoekdetectie",
          "laplacian_filter": "Laplace-filter",
          "laplacian_of_gaussians_filter": "Laplacian-of-Gaussian-filter",
          "prewitt_filter": "Prewitt-filter",
          "roberts_cross_filter": "Roberts-cross-filter",
          "sobel_filter": "Sobel-filter",
          "balance_contrast_enhancement": "Gebalanceerde contrastverbetering",
          "create_colour_composite": "Kleurencomposiet maken",
          "direct_decorrelation_stretch": "Directe decorrelatiestretch",
          "false_colour_composite": "Valse-kleurencomposiet",
          "gamma_correction": "Gammacorrectie",
          "gaussian_contrast_stretch": "Gaussiaanse contraststretch",
          "histogram_equalization": "Histogramegalisatie",
          "histogram_matching": "Histogrammatching",
          "histogram_matching_two_images": "Histogrammatching van twee beelden",
          "ihs_to_rgb": "IHS naar RGB",
          "min_max_contrast_stretch": "Min-max-contraststretch",
          "mosaic": "Mozaïek",
          "mosaic_with_feathering": "Mozaïek met feathering",
          "normalized_difference_index": "Genormaliseerde verschilindex",
          "panchromatic_sharpening": "Panchromatische verscherping",
          "percentage_contrast_stretch": "Percentagecontraststretch",
          "piecewise_contrast_stretch": "Stuksgewijze contraststretch",
          "resample": "Herbemonsteren",
          "rgb_to_ihs": "RGB naar IHS",
          "sigmoidal_contrast_stretch": "Sigmoïdale contraststretch",
          "split_colour_composite": "Kleurencomposiet splitsen",
          "standard_deviation_contrast_stretch": "Standaardafwijkingscontraststretch",
          "true_colour_composite": "Ware-kleurencomposiet",
          "adaptive_filter": "Adaptief filter",
          "anisotropic_diffusion_filter": "Anisotroop diffusiefilter",
          "bilateral_filter": "Bilateraal filter",
          "closing": "Sluiting (closing)",
          "conservative_smoothing_filter": "Conservatief gladstrijkfilter",
          "diff_of_gaussians_filter": "Difference-of-Gaussians-filter",
          "diversity_filter": "Diversiteitsfilter",
          "edge_preserving_mean_filter": "Randbehoudend gemiddeldefilter",
          "emboss_filter": "Reliëffilter (emboss)",
          "fast_almost_gaussian_filter": "Snel quasi-gaussiaans filter",
          "flip_image": "Beeld spiegelen",
          "frangi_filter": "Frangi-filter",
          "gabor_filter_bank": "Gabor-filterbank",
          "gaussian_filter": "Gaussiaans filter",
          "glcm_texture": "GLCM-textuur",
          "guided_filter": "Geleid filter (guided filter)",
          "high_pass_bilateral_filter": "Hoogdoorlaat-bilateraal filter",
          "high_pass_filter": "Hoogdoorlaatfilter",
          "high_pass_median_filter": "Hoogdoorlaat-mediaanfilter",
          "integral_image_transform": "Integraalbeeldtransformatie",
          "k_nearest_mean_filter": "K-nearest-mean-filter",
          "kuwahara_filter": "Kuwahara-filter",
          "lee_filter": "Lee-filter",
          "lidar_ground_point_filter": "LiDAR-grondpuntfilter",
          "line_detection_filter": "Lijndetectiefilter",
          "line_thinning": "Lijnverdunning",
          "majority_filter": "Meerderheidsfilter",
          "maximum_filter": "Maximumfilter",
          "mean_filter": "Gemiddeldefilter",
          "median_filter": "Mediaanfilter",
          "minimum_filter": "Minimumfilter",
          "non_local_means_filter": "Non-local-means-filter",
          "olympic_filter": "Olympisch filter",
          "opening": "Opening",
          "percentile_filter": "Percentielfilter",
          "range_filter": "Bereikfilter",
          "remove_spurs": "Uitlopers verwijderen",
          "savitzky_golay_2d_filter": "Savitzky-Golay-2D-filter",
          "scharr_filter": "Scharr-filter",
          "standard_deviation_filter": "Standaardafwijkingsfilter",
          "thicken_raster_line": "Rasterlijn verdikken",
          "tophat_transform": "Top-hat-transformatie",
          "total_filter": "Totaalfilter",
          "unsharp_masking": "Onscherp maskeren (unsharp masking)",
          "user_defined_weights_filter": "Filter met gebruikersgedefinieerde gewichten",
          "wiener_filter": "Wiener-filter",
          "build_object_hierarchy_multiscale": "Multischaal objecthiërarchie opbouwen",
          "classify_objects_ensemble_pro": "Objecten classificeren met ensemble (Pro)",
          "classify_objects_random_forest": "Objecten classificeren met random forest",
          "classify_objects_rules_basic": "Objecten classificeren met basisregels",
          "classify_objects_rules_hierarchical": "Objecten classificeren met hiërarchische regels",
          "classify_objects_svm": "Objecten classificeren met SVM",
          "evaluate_object_classification_accuracy": "Nauwkeurigheid van objectclassificatie evalueren",
          "evaluate_segmentation_quality_pro": "Segmentatiekwaliteit evalueren (Pro)",
          "image_segmentation": "Beeldsegmentatie",
          "image_slider": "Beeldschuifvergelijking",
          "image_stack_profile": "Beeldstapelprofiel",
          "obia_audit_report_pro": "OBIA-auditrapport (Pro)",
          "obia_batch_orchestrator_pro": "OBIA-batchorkestrator (Pro)",
          "obia_pipeline_basic": "OBIA-basispijplijn",
          "object_class_probability_maps": "Objectklasse-waarschijnlijkheidskaarten",
          "object_features_context_neighbors": "Objectkenmerken - contextbuurobjecten",
          "object_features_shape_basic": "Objectkenmerken - vorm (basis)",
          "object_features_spectral_basic": "Objectkenmerken - spectraal (basis)",
          "object_features_texture_glcm_basic": "Objectkenmerken - GLCM-textuur (basis)",
          "object_features_topology_relations": "Objectkenmerken - topologische relaties",
          "object_uncertainty_diagnostics_pro": "Objectonzekerheidsdiagnostiek (Pro)",
          "objects_boundary_refinement_pro": "Objectgrensverfijning (Pro)",
          "objects_enforce_min_mapping_unit": "Minimale karteringseenheid voor objecten afdwingen",
          "polygons_to_segments": "Polygonen naar segmenten",
          "propagate_labels_across_hierarchy": "Labels door hiërarchie propageren",
          "segment_graph_felzenszwalb": "Graafsegmentatie (Felzenszwalb)",
          "segment_multiresolution_hierarchical": "Hiërarchische multiresolutiesegmentatie",
          "segment_scale_parameter_optimizer": "Optimalisatie van segmentatieschaalparameter",
          "segment_slic_superpixels": "SLIC-superpixelsegmentatie",
          "segment_watershed_markers": "Watershed-segmentatie met markers",
          "segments_merge_small_regions": "Kleine segmentregio's samenvoegen",
          "segments_split_low_cohesion": "Segmenten met lage cohesie splitsen",
          "segments_to_polygons": "Segmenten naar polygonen",
          "brdf_normalization": "BRDF-normalisatie",
          "correct_vignetting": "Vignettering corrigeren",
          "dark_object_subtraction": "Dark object subtraction",
          "dn_to_toa_reflectance": "DN naar TOA-reflectantie",
          "terrain_corrected_optical_analytics": "Terreingecorrigeerde optische analyse",
          "cloude_pottier_decomposition": "Cloude-Pottier-decompositie",
          "enhanced_lee_filter": "Verbeterd Lee-filter",
          "freeman_durden_decomposition": "Freeman-Durden-decompositie",
          "frost_filter": "Frost-filter",
          "gamma_map_filter": "Gamma-MAP-filter",
          "h_alpha_wisart_classification": "H-Alpha-Wishart-classificatie",
          "kuan_filter": "Kuan-filter",
          "refined_lee_filter": "Verfijnd Lee-filter",
          "wisart_iterative_clustering": "Iteratieve Wishart-clustering",
          "yamaguchi_4component_decomposition": "Yamaguchi-4-componentendecompositie",
          "continuum_removal": "Continuümverwijdering",
          "linear_spectral_unmixing": "Lineaire spectrale ontmenging",
          "minimum_noise_fraction": "Minimum Noise Fraction",
          "spectral_angle_mapper": "Spectral Angle Mapper",
          "spectral_library_matching": "Spectrale bibliotheekmatching",
          "land_surface_temperature_single_channel": "Landoppervlaktetemperatuur (enkel kanaal)",
          "land_surface_temperature_split_window": "Landoppervlaktetemperatuur (split-window)",
          "ndvi_based_emissivity": "Emissiviteit op basis van NDVI",
          "assess_route": "Route beoordelen",
          "breakline_mapping": "Breuklijnkartering",
          "convergence_index": "Convergentie-index",
          "dem_void_filling": "DEM-gaten opvullen",
          "deviation_from_mean_elevation": "Afwijking van gemiddelde hoogte",
          "difference_from_mean_elevation": "Verschil met gemiddelde hoogte",
          "directional_relief": "Directioneel reliëf",
          "elev_above_pit": "Hoogte boven put",
          "elev_above_pit_dist": "Hoogte boven put (afstand)",
          "elevation_percentile": "Hoogtepercentiel",
          "embankment_mapping": "Dijkkartering",
          "exposure_towards_wind_flux": "Blootstelling aan windflux",
          "feature_preserving_smoothing": "Kenmerkbehoudend gladstrijken",
          "feature_preserving_smoothing_multiscale": "Kenmerkbehoudend gladstrijken (multischaal)",
          "fetch_analysis": "Strijklengteanalyse",
          "fill_missing_data": "Ontbrekende gegevens opvullen",
          "find_ridges": "Ruggen vinden",
          "hillshade": "Schaduwreliëf",
          "hypsometrically_tinted_hillshade": "Hypsometrisch getint schaduwreliëf",
          "local_hypsometric_analysis": "Lokale hypsometrische analyse",
          "low_points_on_headwater_divides": "Lage punten op bovenloopwaterscheidingen",
          "map_off_terrain_objects": "Objecten boven terrein karteren",
          "max_downslope_elev_change": "Maximale benedenstroomse hoogteverandering",
          "max_upslope_elev_change": "Maximale bovenstroomse hoogteverandering",
          "min_downslope_elev_change": "Minimale benedenstroomse hoogteverandering",
          "multidirectional_hillshade": "Multidirectioneel schaduwreliëf",
          "num_downslope_neighbours": "Aantal benedenstroomse buurcellen",
          "num_upslope_neighbours": "Aantal bovenstroomse buurcellen",
          "profile": "Profiel",
          "remove_off_terrain_objects": "Objecten boven terrein verwijderen",
          "ridge_and_valley_vectors": "Rug- en valleivectoren",
          "slope_vs_aspect_plot": "Helling-expositiediagram",
          "slope_vs_elev_plot": "Helling-hoogtediagram",
          "smooth_vegetation_residual": "Vegetatieresidu gladstrijken",
          "surface_area_ratio": "Oppervlakteratio",
          "topographic_hachures": "Topografische arceringen",
          "accumulation_curvature": "Accumulatiekromming",
          "aspect": "Expositie",
          "casorati_curvature": "Casorati-kromming",
          "curvedness": "Krommingsgraad",
          "difference_curvature": "Verschilkromming",
          "gaussian_curvature": "Gaussiaanse kromming",
          "generating_function": "Genererende functie",
          "horizontal_excess_curvature": "Horizontale exceskromming",
          "maximal_curvature": "Maximale kromming",
          "mean_curvature": "Gemiddelde kromming",
          "minimal_curvature": "Minimale kromming",
          "plan_curvature": "Plankromming",
          "principal_curvature_direction": "Hoofdkrommingsrichting",
          "profile_curvature": "Profielkromming",
          "relative_aspect": "Relatieve expositie",
          "ring_curvature": "Ringkromming",
          "rotor": "Rotor",
          "shape_index": "Vormindex",
          "slope": "Helling",
          "tangential_curvature": "Tangentiële kromming",
          "total_curvature": "Totale kromming",
          "unsphericity": "Onbolvormigheid",
          "vertical_excess_curvature": "Verticale exceskromming",
          "elev_relative_to_min_max": "Hoogte relatief tot min/max",
          "geomorphons": "Geomorphons",
          "hypsometric_analysis": "Hypsometrische analyse",
          "multiscale_topographic_position_class": "Multischaal topografische positieklasse",
          "pennock_landform_classification": "Pennock-landvormclassificatie",
          "percent_elev_range": "Percentage hoogtebereik",
          "relative_topographic_position": "Relatieve topografische positie",
          "max_anisotropy_dev": "Maximale anisotropieafwijking",
          "max_anisotropy_dev_signature": "Signatuur van maximale anisotropieafwijking",
          "max_difference_from_mean": "Maximaal verschil met gemiddelde",
          "max_elev_dev_signature": "Signatuur van maximale hoogteafwijking",
          "max_elevation_deviation": "Maximale hoogteafwijking",
          "multiscale_curvatures": "Multischaal krommingen",
          "multiscale_elevated_index": "Multischaal verhoogde-liggingsindex",
          "multiscale_elevation_percentile": "Multischaal hoogtepercentiel",
          "multiscale_low_lying_index": "Multischaal laaggelegen-index",
          "multiscale_roughness": "Multischaal ruwheid",
          "multiscale_roughness_signature": "Signatuur van multischaal ruwheid",
          "multiscale_std_dev_normals": "Multischaal standaardafwijking van normalen",
          "multiscale_std_dev_normals_signature": "Signatuur van multischaal standaardafwijking van normalen",
          "multiscale_topographic_position_image": "Multischaal topografisch positiebeeld",
          "topographic_position_animation": "Topografische positieanimatie",
          "average_normal_vector_angular_deviation": "Gemiddelde hoekafwijking van normaalvectoren",
          "circular_variance_of_aspect": "Circulaire variantie van expositie",
          "edge_density": "Randdichtheid",
          "ruggedness_index": "Ruwheidsindex",
          "spherical_std_dev_of_normals": "Sferische standaardafwijking van normalen",
          "standard_deviation_of_slope": "Standaardafwijking van helling",
          "average_horizon_distance": "Gemiddelde horizonafstand",
          "horizon_angle": "Horizonhoek",
          "horizon_area": "Horizonoppervlakte",
          "openness": "Openheid",
          "shadow_animation": "Schaduwanimatie",
          "shadow_image": "Schaduwbeeld",
          "sky_view_factor": "Sky view factor",
          "skyline_analysis": "Skyline-analyse",
          "time_in_daylight": "Tijd in daglicht",
          "viewshed": "Zichtveld",
          "visibility_index": "Zichtbaarheidsindex",
          "topo_render": "Topografische rendering",
          "add_surface_information": "Oppervlakte-informatie toevoegen",
          "add_z_information": "Z-informatie toevoegen",
          "adjust_3d_z": "3D-Z aanpassen",
          "adjust_stream_to_raster": "Waterloop aanpassen aan raster",
          "aggregate_points": "Punten aggregeren",
          "aggregate_polygons": "Polygonen aggregeren",
          "align_features": "Objecten uitlijnen",
          "apportion_polygon": "Polygoon verdelen",
          "areal_interpolation": "Oppervlakte-interpolatie",
          "assign_projection_vector": "Projectie toekennen (vector)",
          "attribute_uncertainty": "Attribuutonzekerheid",
          "bivariate_spatial_association": "Bivariate ruimtelijke associatie",
          "buffer_3d": "3D-buffer",
          "build_balanced_zones": "Gebalanceerde zones opbouwen",
          "build_seamlines": "Naadlijnen opbouwen",
          "calculate_adjacent_fields": "Aangrenzende velden berekenen",
          "calculate_central_meridian_and_parallels": "Centrale meridiaan en parallellen berekenen",
          "calculate_composite_index": "Samengestelde index berekenen",
          "calculate_distance_band": "Afstandsband berekenen",
          "calculate_end_time": "Eindtijd berekenen",
          "calculate_grid_convergence_angle": "Rasterconvergentiehoek berekenen",
          "calculate_missing_z_values": "Ontbrekende Z-waarden berekenen",
          "calculate_motion_statistics": "Bewegingsstatistieken berekenen",
          "calculate_polygon_main_angle": "Hoofdhoek van polygoon berekenen",
          "calculate_rates": "Percentages berekenen",
          "calculate_transformation_errors": "Transformatiefouten berekenen",
          "calculate_utm_zone": "UTM-zone berekenen",
          "cartogram": "Cartogram",
          "causal_inference_analysis": "Causale-inferentieanalyse",
          "cell_records_to_sectors": "Celrecords naar sectoren",
          "central_feature": "Centraal object / lineair richtingsgemiddelde",
          "change_point_detection": "Veranderpuntdetectie",
          "collapse_dual_lines_to_centerline": "Dubbele lijnen samenvoegen tot middellijn",
          "collapse_hydro_polygon": "Hydropolygoon samenvoegen",
          "collapse_road_detail": "Wegdetail samenvoegen",
          "collect_events": "Gebeurtenissen verzamelen",
          "colocation_analysis": "Colocatieanalyse",
          "color_polygons": "Polygonen kleuren",
          "compare_spatial_weights": "Ruimtelijke gewichten vergelijken",
          "compute_accuracy_for_object_detection": "Nauwkeurigheid voor objectdetectie berekenen",
          "construct_sight_lines": "Zichtlijnen construeren",
          "contiguous_cartogram": "Aaneengesloten cartogram",
          "contour_list": "Contourlijst",
          "convert_coordinate_notation": "Coördinatennotatie converteren",
          "cost_connectivity": "Kostenconnectiviteit",
          "count_overlapping_features": "Overlappende objecten tellen",
          "create_accuracy_assessment_points": "Nauwkeurigheidsbeoordelingspunten maken",
          "create_cartographic_partitions": "Cartografische partities maken",
          "create_overpass": "Viaduct maken",
          "create_routes": "Routes maken",
          "create_spatial_sampling_locations": "Ruimtelijke bemonsteringslocaties maken",
          "create_spatially_balanced_points": "Ruimtelijk gebalanceerde punten maken",
          "create_underpass": "Onderdoorgang maken",
          "cul_de_sac_masks": "Maskers voor doodlopende wegen",
          "delineate_built_up_areas": "Bebouwde gebieden afbakenen",
          "dendrogram": "Dendrogram",
          "densify_sampling_network": "Bemonsteringsnetwerk verdichten",
          "detect_bright_ocean_objects": "Heldere oceaanobjecten detecteren",
          "detect_dark_ocean_areas": "Donkere oceaangebieden detecteren",
          "detect_feature_changes": "Objectveranderingen detecteren",
          "detect_graphic_conflict": "Grafische conflicten detecteren",
          "detect_incidents": "Incidenten detecteren",
          "dice": "In blokjes snijden (dice)",
          "difference_3d": "3D-verschil",
          "dimension_reduction": "Dimensiereductie",
          "directional_distribution": "Richtingsverdeling",
          "directional_trend": "Richtingstrend",
          "disperse_markers": "Markers spreiden",
          "dissolve_route_events": "Routegebeurtenissen samenvoegen",
          "edgematch_features": "Objecten randmatchen",
          "eighty_twenty_analysis": "80/20-analyse",
          "eliminate_polygon_part": "Polygoondeel elimineren",
          "eliminate_polygons": "Polygonen elimineren",
          "emerging_hot_spot_analysis": "Opkomende-hotspotanalyse",
          "enclose_multipatch": "Multipatch omsluiten",
          "estimate_time_to_event": "Tijd tot gebeurtenis schatten",
          "evaluate_bin_sizes": "Bingroottes evalueren",
          "evaluate_variable_influence": "Variabele-invloed evalueren",
          "exploratory_interpolation": "Verkennende interpolatie",
          "exploratory_regression": "Verkennende regressie",
          "extract_locations_from_text": "Locaties extraheren uit tekst",
          "extract_water_sar": "Water extraheren (SAR)",
          "extrude_between": "Extruderen tussen",
          "feature_outline_masks": "Objectomtrekmaskers",
          "feature_to_line": "Object naar lijn",
          "feature_vertices_to_points": "Objecthoekpunten naar punten",
          "features_to_kml": "Objecten naar KML",
          "fence_diagram": "Hekdiagram",
          "fill_missing_values": "Ontbrekende waarden opvullen",
          "find_dwell_locations": "Verblijflocaties vinden",
          "find_identical": "Identieke vinden",
          "find_meeting_locations": "Ontmoetingslocaties vinden",
          "find_space_time_matches": "Ruimte-tijd-overeenkomsten vinden",
          "flip_line": "Lijn omkeren",
          "forest_based_forecast": "Forest-based voorspelling",
          "generalized_linear_regression": "Gegeneraliseerde lineaire regressie",
          "generate_breach_lines": "Doorbraaklijnen genereren",
          "generate_near_table": "Nabijheidstabel genereren",
          "generate_network_swm": "Netwerk-SWM genereren",
          "generate_od_links": "Herkomst-bestemmingslinks genereren",
          "generate_points_along_3d_lines": "Punten genereren langs 3D-lijnen",
          "generate_spatial_weights_matrix": "Ruimtelijke gewichtenmatrix genereren",
          "generate_subset_polygons": "Deelverzamelingspolygonen genereren",
          "generate_transects_along_lines": "Transecten genereren langs lijnen",
          "geodetic_densify": "Geodetisch verdichten",
          "geographically_weighted_regression": "Geografisch gewogen regressie",
          "geotagged_photos_to_points": "Gegeotagde foto's naar punten",
          "graphic_buffer": "Grafische buffer",
          "grid_index_features": "Rasterindexobjecten",
          "group_by_proximity": "Groeperen op nabijheid",
          "hdbscan": "HDBSCAN-clustering",
          "getis_ord_general_g": "Hoog/laag-clustering (Getis-Ord General G)",
          "hot_spot_analysis_comparison": "Vergelijking van hotspotanalyses",
          "identify_narrow_polygons": "Smalle polygonen identificeren",
          "incremental_spatial_autocorrelation": "Incrementele ruimtelijke autocorrelatie",
          "inside_3d": "Binnen 3D",
          "integrate": "Integreren",
          "interpolate_shape": "Vorm interpoleren",
          "intersect_3d": "3D-doorsnijden",
          "intersect_3d_line_with_surface": "3D-lijn doorsnijden met oppervlak",
          "intersecting_layers_masks": "Maskers van doorsnijdende lagen",
          "intervisibility": "Onderlinge zichtbaarheid",
          "is_closed_3d": "Is gesloten (3D)",
          "line_of_sight": "Zichtlijn",
          "local_bivariate_relationships": "Lokale bivariate relaties",
          "local_outlier_analysis": "Lokale uitschieteranalyse",
          "locate_lines_along_routes": "Lijnen lokaliseren langs routes",
          "median_center": "Mediaan centrum",
          "merge_divided_roads": "Gescheiden wegen samenvoegen",
          "merge_lines_by_pseudo_node": "Lijnen samenvoegen bij pseudoknoop",
          "minimum_bounding_volume": "Minimaal omsluitend volume",
          "multipatch_footprint": "Multipatch-omtrek",
          "multipatch_to_mesh": "Multipatch naar mesh",
          "multiple_ring_buffer": "Buffer met meerdere ringen",
          "mgwr": "Multischaal geografisch gewogen regressie",
          "multivariate_clustering": "Multivariate clustering",
          "near_3d": "3D-nabijheid",
          "neighborhood_summary_statistics": "Samenvattende omgevingsstatistieken",
          "non_maximum_suppression": "Non-maximum suppression",
          "optics_clustering": "OPTICS-clustering",
          "optimal_corridor_connections": "Optimale corridorverbindingen",
          "optimal_path_as_line": "Optimaal pad als lijn",
          "optimized_hot_spot_analysis": "Geoptimaliseerde hotspotanalyse",
          "optimized_outlier_analysis": "Geoptimaliseerde uitschieteranalyse",
          "pairwise_comparison_weights": "Gewichten door paarsgewijze vergelijking",
          "pivot_table": "Draaitabel",
          "points_to_line": "Punten naar lijn",
          "points_to_path": "Punten naar pad",
          "polygon_neighbors": "Polygoonburen",
          "polygon_volume": "Polygoonvolume",
          "propagate_displacement": "Verplaatsing propageren",
          "raster_domain": "Rasterdomein",
          "raster_to_weighted_points": "Raster naar gewogen punten",
          "reclassify_field": "Veld herclassificeren",
          "reconstruct_tracks": "Tracks reconstrueren",
          "reduce_point_density": "Puntdichtheid verminderen",
          "regularize_adjacent_building_footprint": "Aangrenzende gebouwomtrekken regulariseren",
          "regularize_building_footprints": "Gebouwomtrekken regulariseren",
          "remove_overlap_multiple": "Overlap verwijderen (meerdere)",
          "render_vector_png": "Vector renderen naar PNG",
          "repair_geometry": "Geometrie repareren",
          "resolve_building_conflicts": "Gebouwconflicten oplossen",
          "resolve_road_conflicts": "Wegconflicten oplossen",
          "ripleys_k": "Ripley's K",
          "rubbersheet_features": "Objecten rubbersheeten",
          "semivariogram_sensitivity": "Semivariogramgevoeligheid",
          "similarity_search": "Gelijkenis zoeken",
          "simplify_3d_line": "3D-lijn vereenvoudigen",
          "simplify_building": "Gebouw vereenvoudigen",
          "simplify_by_circular_arcs": "Vereenvoudigen met cirkelbogen",
          "simplify_by_tangent_segments": "Vereenvoudigen met raaksegmenten",
          "simplify_shared_edges": "Gedeelde randen vereenvoudigen",
          "smooth_natural_features": "Natuurlijke objecten gladstrijken",
          "smooth_shared_edges": "Gedeelde randen gladstrijken",
          "snap_tracks": "Tracks snappen",
          "sort_features": "Objecten sorteren",
          "spatial_eigenvector_filtering": "Ruimtelijke eigenvectorfiltering (MESF)",
          "spatial_outlier_detection": "Ruimtelijke uitschieterdetectie",
          "spatially_constrained_multivariate_clustering": "Ruimtelijk beperkte multivariate clustering",
          "split_by_attributes": "Splitsen op attributen",
          "split_by_features": "Splitsen op objecten",
          "split_line_at_point": "Lijn splitsen bij punt",
          "stack_profile": "Stapelprofiel",
          "strip_map_index_features": "Stripkaartindexobjecten",
          "subdivide_polygon": "Polygoon onderverdelen",
          "subset_features": "Objecten selecteren (subset)",
          "summarize_nearby": "Nabijheid samenvatten",
          "summarize_percent_change": "Procentuele verandering samenvatten",
          "summarize_within": "Samenvatten binnen",
          "summary_statistics": "Samenvattende statistieken",
          "sun_shadow_volume": "Zonneschaduwvolume",
          "surface_difference": "Oppervlakverschil",
          "table_to_geometry": "Tabel naar geometrie",
          "tabulate_intersection": "Doorsnijding tabelleren",
          "thin_road_network": "Wegennetwerk uitdunnen",
          "tile_grid_polygons": "Tegelrasterpolygonen",
          "time_series_clustering": "Tijdreeksclustering",
          "time_series_forecast": "Tijdreeksvoorspelling",
          "time_series_smoothing": "Tijdreeks gladstrijken",
          "trace_proximity_events": "Nabijheidsgebeurtenissen traceren",
          "transform_features": "Objecten transformeren",
          "transform_fields": "Velden transformeren",
          "transform_route_events": "Routegebeurtenissen transformeren",
          "transpose_fields": "Velden transponeren",
          "trim_line": "Lijn trimmen",
          "union_3d": "3D-vereniging",
          "validate_flow_direction": "Stroomrichting valideren",
          "voxel_isosurface": "Voxel-iso-oppervlak",
          "buffer_vector": "Vector bufferen",
          "directional_variogram": "Directionele variogramanalyse",
          "estimate_variogram": "Variogram schatten",
          "fit_variogram": "Variogrammodel fitten",
          "add_field": "Veld toevoegen",
          "add_geometry_attributes": "Geometrie-attributen toevoegen",
          "attribute_correlation": "Attribuutcorrelatie",
          "attribute_histogram": "Attribuuthistogram",
          "attribute_scattergram": "Attribuutspreidingsdiagram",
          "delete_field": "Veld verwijderen",
          "extract_by_attribute": "Extraheren op attribuut",
          "field_calculator": "Veldcalculator",
          "filter_vector_features_by_area": "Vectorobjecten filteren op oppervlakte",
          "list_unique_values": "Unieke waarden weergeven",
          "rename_field": "Veld hernoemen",
          "centroid_vector": "Zwaartepunt (vector)",
          "concave_hull": "Concave omhullende",
          "densify_features": "Objecten verdichten",
          "eliminate_coincident_points": "Samenvallende punten elimineren",
          "extend_vector_lines": "Vectorlijnen verlengen",
          "merge_line_segments": "Lijnsegmenten samenvoegen",
          "minimum_bounding_box": "Minimaal omsluitend rechthoek",
          "minimum_bounding_circle": "Minimaal omsluitende cirkel",
          "minimum_bounding_envelope": "Minimaal omsluitende envelop",
          "minimum_convex_hull": "Minimale convexe omhullende",
          "polygonize": "Polygoniseren",
          "representative_point_vector": "Representatief punt (vector)",
          "simplify_features": "Objecten vereenvoudigen",
          "smooth_vectors": "Vectoren gladstrijken",
          "snap_endnodes": "Eindknopen snappen",
          "split_vector_lines": "Vectorlijnen splitsen",
          "split_with_lines": "Splitsen met lijnen",
          "locate_points_along_routes": "Punten lokaliseren langs routes",
          "points_along_lines": "Punten langs lijnen",
          "route_calibrate": "Route kalibreren",
          "route_event_lines_from_layer": "Routegebeurtenislijnen uit laag",
          "route_event_lines_from_table": "Routegebeurtenislijnen uit tabel",
          "route_event_merge": "Routegebeurtenissen samenvoegen",
          "route_event_overlay": "Routegebeurtenissen overlayen",
          "route_event_points_from_layer": "Routegebeurtenispunten uit laag",
          "route_event_points_from_table": "Routegebeurtenispunten uit tabel",
          "route_event_split": "Routegebeurtenissen splitsen",
          "route_measure_qa": "Kwaliteitscontrole routemetingen",
          "route_recalibrate": "Route herkalibreren",
          "snap_events_to_routes": "Gebeurtenissen snappen naar routes",
          "download_osm_vector": "OSM-vector downloaden",
          "clip": "Uitsnijden",
          "difference": "Verschil",
          "dissolve": "Samenvoegen (dissolve)",
          "erase": "Wissen",
          "identity": "Identiteit",
          "intersect": "Doorsnijden",
          "line_intersections": "Lijnkruisingen",
          "line_polygon_clip": "Lijn-polygoon-uitsnede",
          "near": "Nabijheid",
          "select_by_location": "Selecteren op locatie",
          "spatial_join": "Ruimtelijke join",
          "symmetrical_difference": "Symmetrisch verschil",
          "union": "Vereniging",
          "update": "Bijwerken",
          "construct_vector_tin": "Vector-TIN opbouwen",
          "contours_from_points": "Contouren uit punten",
          "contours_from_raster": "Contouren uit raster",
          "extract_nodes": "Knopen extraheren",
          "extract_raster_values_at_points": "Rasterwaarden extraheren bij punten",
          "find_lowest_or_highest_points": "Laagste of hoogste punten vinden",
          "hexagonal_grid_from_raster_base": "Hexagonaal raster op basis van raster",
          "hexagonal_grid_from_vector_base": "Hexagonaal raster op basis van vector",
          "layer_footprint_raster": "Laagomtrek (raster)",
          "layer_footprint_vector": "Laagomtrek (vector)",
          "medoid": "Medoïde",
          "random_points_in_polygon": "Willekeurige punten in polygoon",
          "rectangular_grid_from_raster_base": "Rechthoekig raster op basis van raster",
          "rectangular_grid_from_vector_base": "Rechthoekig raster op basis van vector",
          "vector_hex_binning": "Hexagonale binning (vector)",
          "voronoi_diagram": "Voronoi-diagram",
          "compactness_ratio": "Compactheidsratio",
          "deviation_from_regional_direction": "Afwijking van regionale richting",
          "elongation_ratio": "Elongatieratio",
          "hole_proportion": "Aandeel gaten",
          "linearity_index": "Lineariteitsindex",
          "narrowness_index_vector": "Smalheidsindex (vector)",
          "patch_orientation": "Patchoriëntatie",
          "perimeter_area_ratio": "Omtrek-oppervlakteratio",
          "polygon_area": "Polygoonoppervlakte",
          "polygon_long_axis": "Lange as van polygoon",
          "polygon_perimeter": "Polygoonomtrek",
          "polygon_short_axis": "Korte as van polygoon",
          "related_circumscribing_circle": "Gerelateerde omgeschreven cirkel",
          "shape_complexity_index_vector": "Vormcomplexiteitsindex (vector)",
          "envelope_test": "Enveloptoets",
          "getis_ord_gi_star": "Getis-Ord Gi*",
          "global_morans_i": "Globale Moran's I",
          "hotspot_vs_process": "Hotspot versus proces",
          "inhomogeneous_baseline": "Inhomogene basislijn",
          "local_morans_i_lisa": "Lokale Moran's I (LISA)",
          "nearest_neighbour_index": "Nearest-neighbour-index",
          "point_pattern_envelope": "Puntpatroonenvelop",
          "point_process_residuals": "Puntprocesresiduen",
          "point_process_residuals_comparison": "Vergelijking van puntprocesresiduen",
          "quadrat_count_test": "Kwadranttellingstoets",
          "ripleys_k_function": "Ripley's K-functie",
          "ripleys_k_test": "Ripley's K-toets",
          "spatial_error_regression": "Ruimtelijke-foutregressie",
          "spatial_lag_regression": "Ruimtelijke-lag-regressie"
        },
        "menuSubcategory": {
          "geolibre_wasm": "GeoLibre (WASM)",
          "geometry_topology": "Geometrie en topologie",
          "raster_vector_conversion": "Raster-/vectorconversie",
          "vector_table_i_o": "Vector- en tabel-I/O",
          "depressions_storage": "Depressies en berging",
          "flow_routing": "Afstromingsroutering",
          "hydrologic_indices": "Hydrologische indices",
          "streams_longitudinal_analysis": "Waterlopen - Longitudinale analyse",
          "streams_network_extraction": "Waterlopen - Netwerkextractie",
          "streams_ordering_metrics": "Waterlopen - Ordeningsmaten",
          "watersheds_basins": "Stroomgebieden",
          "analysis_metrics": "Analysematen",
          "filtering_classification": "Filtering en classificatie",
          "i_o_management": "I/O en beheer",
          "interpolation_gridding": "Interpolatie en rastering",
          "network_analysis": "Netwerkanalyse",
          "general": "Algemeen",
          "distance_cost": "Afstand en kosten",
          "local_neighborhood": "Lokale omgeving",
          "overlay_math": "Overlay-rekenkunde",
          "reclassify_mask": "Herclassificeren en maskeren",
          "spatial_statistics": "Ruimtelijke statistiek",
          "change_detection": "Veranderingsdetectie",
          "classification": "Classificatie",
          "edge_feature_detection": "Rand- en kenmerkdetectie",
          "enhancement_contrast": "Verbetering en contrast",
          "filters": "Filters",
          "obia": "OBIA",
          "radiometric_correction": "Radiometrische correctie",
          "sar": "SAR",
          "spectral_analytics": "Spectrale analyse",
          "thermal_emissivity": "Thermisch en emissiviteit",
          "derivatives": "Afgeleiden",
          "landform_indices": "Landvormindices",
          "multiscale_signatures": "Multischaal-signaturen",
          "roughness_texture": "Ruwheid en textuur",
          "visibility": "Zichtbaarheid",
          "workflow_products": "Workflowproducten",
          "attribute_analysis": "Attribuutanalyse",
          "geometry_processing": "Geometrieverwerking",
          "linear_referencing": "Lineaire referentie",
          "online_data": "Onlinegegevens",
          "overlay_analysis": "Overlay-analyse",
          "sampling_gridding": "Steekproef en rastering",
          "shape_metrics": "Vormmaten"
        }
      }
    }
  }
}
