{
  "_id": "6a1fe89cb401979e7343d9f3",
  "Package": "wkpool",
  "Title": "Vertex Pool Topology for Well-Known Geometry",
  "Version": "0.3.0",
  "Authors@R": "person(\"Michael\", \"Sumner\", , \"mdsumner@gmail.com\", role = c(\"aut\", \"cre\"))",
  "Description": "Establishes and maintains vertex pool topology for\ngeometry handled by 'wk'. Segments are the atomic unit,\nvertices are shared via integer references into a pool.\nTopology is made discoverable via coincident vertex detection\nwhile not requiring modification of the input data. Topological\ndata models follow principles described in Worboys and Duckham\n(2004, ISBN:978-0415283755). The edge-based topology geometry\ndecomposed into vertices and directed edge pairs is a\nsimplification of the quad-edge case in Guibas & Stolfi (1985)\n<doi:10.1145/282918.282923>.",
  "License": "MIT + file LICENSE",
  "URL": "https://github.com/hypertidy/wkpool",
  "BugReports": "https://github.com/hypertidy/wkpool/issues",
  "Encoding": "UTF-8",
  "Roxygen": "list(markdown = TRUE)",
  "RoxygenNote": "7.3.3",
  "VignetteBuilder": "knitr",
  "Config/testthat/edition": "3",
  "Language": "en-GB",
  "Repository": "https://hypertidy.r-universe.dev",
  "Date/Publication": "2026-03-05 22:10:10 UTC",
  "RemoteUrl": "https://github.com/hypertidy/wkpool",
  "RemoteRef": "HEAD",
  "RemoteSha": "6545b1264197692c6f264ade76cd1fe9eed3581e",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-06-03 08:35:26 UTC",
    "User": "root"
  },
  "Author": "Michael Sumner [aut, cre]",
  "Maintainer": "Michael Sumner <mdsumner@gmail.com>",
  "MD5sum": "91dc2e2c60fd01d6c812ccb2ac6174fb",
  "_user": "hypertidy",
  "_type": "src",
  "_file": "wkpool_0.3.0.tar.gz",
  "_fileid": "3f14dee0e1a7ae3025c0492b6a1e7dac830def1d3b3743886c6f22017664a9de",
  "_filesize": 214436,
  "_sha256": "3f14dee0e1a7ae3025c0492b6a1e7dac830def1d3b3743886c6f22017664a9de",
  "_created": "2026-06-03T08:35:26.000Z",
  "_published": "2026-06-03T08:41:00.451Z",
  "_distro": "noble",
  "_jobs": [
    {
      "job": 79254159739,
      "time": 106,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7379645340"
    },
    {
      "job": 79254159407,
      "time": 126,
      "config": "linux-release-x86_64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7379651188"
    },
    {
      "job": 79254159374,
      "time": 100,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "7379659611"
    },
    {
      "job": 79254159466,
      "time": 101,
      "config": "macos-release-arm64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7379707236"
    },
    {
      "job": 79253652620,
      "time": 182,
      "config": "source",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7379607491"
    },
    {
      "job": 79254159439,
      "time": 114,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7379647644"
    },
    {
      "job": 79254159483,
      "time": 92,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7379640631"
    },
    {
      "job": 79254159505,
      "time": 77,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "7379635464"
    },
    {
      "job": 79254159457,
      "time": 74,
      "config": "windows-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7379634870"
    }
  ],
  "_buildurl": "https://github.com/r-universe/hypertidy/actions/runs/26873211544",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_upstream": "https://github.com/hypertidy/wkpool",
  "_commit": {
    "id": "6545b1264197692c6f264ade76cd1fe9eed3581e",
    "author": "Michael Sumner <mdsumner@gmail.com>",
    "committer": "Michael Sumner <mdsumner@gmail.com>",
    "message": "bump\n",
    "time": 1772748610
  },
  "_maintainer": {
    "name": "Michael Sumner",
    "email": "mdsumner@gmail.com",
    "login": "mdsumner",
    "mastodon": "@mdsumner@rstats.me",
    "bluesky": "@mdsumner.bsky.social",
    "description": "no names have an anonymous function",
    "uuid": 4107631
  },
  "_registered": true,
  "_dependencies": [
    {
      "package": "vctrs",
      "role": "Imports"
    },
    {
      "package": "wk",
      "version": ">= 0.9.4",
      "role": "Imports"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "RTriangle",
      "role": "Suggests"
    },
    {
      "package": "spelling",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "traipse",
      "role": "Suggests"
    }
  ],
  "_owner": "hypertidy",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2025-52",
      "n": 8
    },
    {
      "week": "2026-08",
      "n": 1
    },
    {
      "week": "2026-09",
      "n": 10
    },
    {
      "week": "2026-10",
      "n": 1
    }
  ],
  "_tags": [
    {
      "name": "v0.3.0",
      "date": "2026-02-28"
    }
  ],
  "_stars": 6,
  "_contributors": [
    {
      "user": "mdsumner",
      "count": 20,
      "uuid": 4107631
    }
  ],
  "_userbio": {
    "uuid": 29297592,
    "type": "organization",
    "name": "hypertidy",
    "description": "[ ... ]"
  },
  "_downloads": {
    "count": 460,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/wkpool"
  },
  "_devurl": "https://github.com/hypertidy/wkpool",
  "_searchresults": 6,
  "_rbuild": "4.6.0",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "extra/wkpool.html",
    "manual.pdf"
  ],
  "_homeurl": "https://github.com/hypertidy/wkpool",
  "_realowner": "hypertidy",
  "_cranurl": true,
  "_releases": [
    {
      "version": "0.3.0",
      "date": "2026-03-05"
    }
  ],
  "_exports": [
    "arc_node_summary",
    "arcs_to_wkb",
    "arcs_to_wkt",
    "as_arcs",
    "as_pslg",
    "classify_cycles",
    "cycle_signed_area",
    "cycles_to_wkb",
    "cycles_to_wkt",
    "establish_topology",
    "find_arcs",
    "find_cycles",
    "find_internal_boundaries",
    "find_neighbours",
    "find_nodes",
    "find_shared_edges",
    "hole_points",
    "merge_coincident",
    "pool_combine",
    "pool_compact",
    "pool_feature",
    "pool_segments",
    "pool_vertices",
    "reverse_cycle",
    "segments_to_wkb",
    "segments_to_wkt",
    "topology_report",
    "vertex_degree"
  ],
  "_help": [
    {
      "page": "arc_node_summary",
      "title": "Summarize arc-node structure",
      "topics": [
        "arc_node_summary"
      ]
    },
    {
      "page": "arcs_to_wkt",
      "title": "Convert arcs to WKT linestrings",
      "topics": [
        "arcs_to_wkb",
        "arcs_to_wkt"
      ]
    },
    {
      "page": "as_arcs",
      "title": "Convert arcs to a wkpool of arc segments",
      "topics": [
        "as_arcs"
      ]
    },
    {
      "page": "as_pslg",
      "title": "Convert wkpool to RTriangle pslg format",
      "topics": [
        "as_pslg"
      ]
    },
    {
      "page": "classify_cycles",
      "title": "Classify cycles as outer rings or holes based on winding",
      "topics": [
        "classify_cycles"
      ]
    },
    {
      "page": "cycle_signed_area",
      "title": "Calculate signed area of a cycle",
      "topics": [
        "cycle_signed_area"
      ]
    },
    {
      "page": "cycles_to_wkt",
      "title": "Convert cycles to WKT polygons",
      "topics": [
        "cycles_to_wkb",
        "cycles_to_wkt"
      ]
    },
    {
      "page": "establish_topology",
      "title": "Establish topology from any wk-handleable geometry",
      "topics": [
        "establish_topology"
      ]
    },
    {
      "page": "find_arcs",
      "title": "Find arcs (maximal segment sequences between nodes)",
      "topics": [
        "find_arcs"
      ]
    },
    {
      "page": "find_cycles",
      "title": "Find closed cycles (rings) in segment graph",
      "topics": [
        "find_cycles"
      ]
    },
    {
      "page": "find_internal_boundaries",
      "title": "Find internal boundaries (edges shared by exactly 2 features, opposite direction)",
      "topics": [
        "find_internal_boundaries"
      ]
    },
    {
      "page": "find_neighbours",
      "title": "Build adjacency from shared edges",
      "topics": [
        "find_neighbours"
      ]
    },
    {
      "page": "find_nodes",
      "title": "Find nodes (vertices where degree != 2)",
      "topics": [
        "find_nodes"
      ]
    },
    {
      "page": "find_shared_edges",
      "title": "Find shared edges between features",
      "topics": [
        "find_shared_edges"
      ]
    },
    {
      "page": "hole_points",
      "title": "Get hole points for constrained triangulation",
      "topics": [
        "hole_points"
      ]
    },
    {
      "page": "merge_coincident",
      "title": "Merge coincident vertices in a pool",
      "topics": [
        "merge_coincident"
      ]
    },
    {
      "page": "plot.wkpool",
      "title": "Plot a wkpool object",
      "topics": [
        "plot.wkpool"
      ]
    },
    {
      "page": "pool_combine",
      "title": "Combine wkpool objects",
      "topics": [
        "pool_combine"
      ]
    },
    {
      "page": "pool_compact",
      "title": "Compact a pool by removing unreferenced vertices",
      "topics": [
        "pool_compact"
      ]
    },
    {
      "page": "reverse_cycle",
      "title": "Reverse a cycle's winding direction",
      "topics": [
        "reverse_cycle"
      ]
    },
    {
      "page": "segments_to_wkt",
      "title": "Convert wkpool segments to WKT",
      "topics": [
        "segments_to_wkb",
        "segments_to_wkt"
      ]
    },
    {
      "page": "topology_report",
      "title": "Report topology diagnostics",
      "topics": [
        "topology_report"
      ]
    },
    {
      "page": "vec_c",
      "title": "Combine many wkpool vectors into one vector",
      "topics": [
        "vec_c",
        "vec_c.wkpool"
      ]
    },
    {
      "page": "vertex_degree",
      "title": "Calculate vertex degree (number of segments touching each vertex)",
      "topics": [
        "vertex_degree"
      ]
    },
    {
      "page": "wkpool-accessors",
      "title": "Access components of a wkpool object",
      "topics": [
        "pool_feature",
        "pool_segments",
        "pool_vertices",
        "wkpool-accessors"
      ]
    }
  ],
  "_readme": "https://github.com/hypertidy/wkpool/raw/HEAD/README.md",
  "_rundeps": [
    "cli",
    "glue",
    "lifecycle",
    "rlang",
    "vctrs",
    "wk"
  ],
  "_vignettes": [
    {
      "source": "wkpool-vignette-segments.Rmd",
      "filename": "wkpool-vignette-segments.html",
      "title": "Segments: the atoms of geometry",
      "engine": "knitr::rmarkdown",
      "headings": [
        "What is a segment?",
        "The cost of sealed geometry",
        "What becomes easy",
        "The full topology",
        "Cycles and winding",
        "The round trip",
        "Integration: triangulation",
        "Segments in movement data",
        "Why this matters now",
        "The lineage",
        "Further reading"
      ],
      "created": "2026-02-28 10:23:40",
      "modified": "2026-02-28 22:56:41",
      "commits": 4
    },
    {
      "source": "wkpool.Rmd",
      "filename": "wkpool.html",
      "title": "wkpool: Topology-based Geometry Handling",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Why topology?",
        "Basic workflow",
        "Establish topology",
        "Inspect the raw state",
        "Access the pool components",
        "Merge coincident vertices",
        "Adjacency discovery",
        "Shared edges",
        "Internal boundaries",
        "Neighbour graph",
        "Ring and cycle analysis",
        "Find closed cycles",
        "Classify by winding",
        "Arc-node topology",
        "Round-trip to WKT",
        "Triangulation integration",
        "RTriangle (PSLG)",
        "Subsetting and combining",
        "Visualization",
        "Related Work",
        "Core topology/vertex-pool (hypertidy ecosystem)",
        "Mesh/triangulation",
        "Adjacency (computed, not stored)"
      ],
      "created": "2026-02-28 09:45:23",
      "modified": "2026-02-28 22:56:41",
      "commits": 2
    }
  ],
  "_score": 5.380211241711606,
  "_indexed": true,
  "_nocasepkg": "wkpool",
  "_universes": [
    "hypertidy",
    "mdsumner"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.3.0",
      "date": "2026-06-03T08:37:17.000Z",
      "distro": "noble",
      "commit": "6545b1264197692c6f264ade76cd1fe9eed3581e",
      "fileid": "7068b198d8c523c0c8f527b8f3bef6a9e9f72f8407e6177aa5fe90eb9f8110ac",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/hypertidy/actions/runs/26873211544"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "0.3.0",
      "date": "2026-06-03T08:37:31.000Z",
      "distro": "noble",
      "commit": "6545b1264197692c6f264ade76cd1fe9eed3581e",
      "fileid": "cdf7f1b25d6bca72848ea8af2261a914c36e2b10fa65c8063e51b1f74d48398e",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/hypertidy/actions/runs/26873211544"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.3.0",
      "date": "2026-06-03T08:38:01.000Z",
      "commit": "6545b1264197692c6f264ade76cd1fe9eed3581e",
      "fileid": "d5dd1ba7b6f4fdd4b7d5ca2daba7b4d029c9e2a6800bbfa0f2d1e7b7d3ad0543",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/hypertidy/actions/runs/26873211544"
    },
    {
      "r": "4.6.0",
      "os": "mac",
      "version": "0.3.0",
      "date": "2026-06-03T08:40:22.000Z",
      "commit": "6545b1264197692c6f264ade76cd1fe9eed3581e",
      "fileid": "f74c123503cad10d810b8f69b742981ac6ede648d533f33417f2f06d631c996e",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/hypertidy/actions/runs/26873211544"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.3.0",
      "date": "2026-06-03T08:37:39.000Z",
      "commit": "6545b1264197692c6f264ade76cd1fe9eed3581e",
      "fileid": "4827a4620bd2b085de6b42416f442435b547dae1fe23012b2155aa335ca31962",
      "status": "success",
      "buildurl": "https://github.com/r-universe/hypertidy/actions/runs/26873211544"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.3.0",
      "date": "2026-06-03T08:36:55.000Z",
      "commit": "6545b1264197692c6f264ade76cd1fe9eed3581e",
      "fileid": "c321c09e0e4be58a4863312bd11b6ccb00550422a31fb0c086365d98ed8889f3",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/hypertidy/actions/runs/26873211544"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.3.0",
      "date": "2026-06-03T08:36:40.000Z",
      "commit": "6545b1264197692c6f264ade76cd1fe9eed3581e",
      "fileid": "090f3afd0522b8d9c2453021b575543e8daec94adf34f33117aaa7815caddc76",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/hypertidy/actions/runs/26873211544"
    },
    {
      "r": "4.6.0",
      "os": "win",
      "version": "0.3.0",
      "date": "2026-06-03T08:36:38.000Z",
      "commit": "6545b1264197692c6f264ade76cd1fe9eed3581e",
      "fileid": "ddb440a64f188935eb7d5ed59aa2a3a10e61452abbe8f31b55d0ac7bdf4e360d",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/hypertidy/actions/runs/26873211544"
    }
  ]
}