## ----setup, include = FALSE---------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  fig.width = 7,
  fig.height = 4.5
)

## ----example-data-------------------------------------------------------------
library(spatpersist)

polygons <- example_units()
sf::st_drop_geometry(polygons)

## ----create-------------------------------------------------------------------
result <- persist_ids(
  polygons,
  time = "year",
  threshold = 0.75,
  metric = "share_old"
)

sf::st_drop_geometry(result)[
  , c(
    "year",
    "name",
    "spatial_id",
    "spatial_version_id",
    "lineage_id",
    "parent_id",
    "transition_type"
  )
]

## ----conservative-matching----------------------------------------------------
conservative <- persist_ids(
  polygons,
  time = "year",
  metric = "iou",
  threshold = 0.75,
  match_rule = "mutual_best",
  ambiguity_tolerance = 0.05,
  ambiguity_action = "new"
)

## ----diagnostics--------------------------------------------------------------
transitions <- id_transitions(result)
transitions[
  , c(
    "old_spatial_id",
    "new_spatial_id",
    "share_old",
    "share_new",
    "iou",
    "eligible",
    "mutual_best",
    "ambiguous",
    "selected",
    "lineage_link"
  )
]

## ----summaries----------------------------------------------------------------
id_lineages(result, time = "year")

## ----plot-lineage-------------------------------------------------------------
plot_lineage(
  result,
  time = "year",
  lineage_id = "LID000004"
)

## ----validate-----------------------------------------------------------------
issues <- validate_ids(result, time = "year")
issues

## ----registry-----------------------------------------------------------------
rerun <- persist_ids(
  polygons,
  time = "year",
  registry = result
)

all(rerun$registry_matched)
identical(rerun$spatial_id, result$spatial_id)

