Segmenting linestring into points of equal distance

R
sf
geospatial
rspatial
Author

Philippe Massicotte

Published

September 26, 2023

This will be a quick one, but I thought it was worth sharing (at least for future me). I was recently trying to segment a line into points of equal distances. I must say that I spent too much time with the st_segmentize() function. I found that I would simply achieve this using st_line_sample(). Let me show you how.

When your brain is super well synchronized with your camera’s retadator.
Photo by Anthony Cantin on Unsplash

First, I will read a KML file containing the path of the CCGS Amundsen. I will then transform the data into a polar projection.

library(sf)
sf_use_s2(TRUE)

path <- st_read("https://data.amundsen.ulaval.ca/NAV_Amundsen.kml") |>
  st_transform(3413)
#> Reading layer `
#> D:\Remote_data\NAV_Amundsen.kml
#> ' from data source 
#>   `https://data.amundsen.ulaval.ca/NAV_Amundsen.kml' using driver `LIBKML'
#> Simple feature collection with 1 feature and 11 fields
#> Geometry type: LINESTRING
#> Dimension:     XYZ
#> Bounding box:  xmin: 6.59 ymin: -71.20211 xmax: 7.97 ymax: -71.2021
#> z_range:       zmin: 1 zmax: 1
#> Geodetic CRS:  WGS 84

# We can see that the path is a linestring
path
#> Simple feature collection with 1 feature and 11 fields
#> Geometry type: LINESTRING
#> Dimension:     XYZ
#> Bounding box:  xmin: 58000050 ymin: -45986760 xmax: 59090720 ymax: -44576580
#> z_range:       zmin: 1 zmax: 1
#> Projected CRS: WGS 84 / NSIDC Sea Ice Polar Stereographic North
#>          Name description timestamp begin  end  altitudeMode tessellate extrude
#> 1 \nge_plot\n        \n\n      <NA>  <NA> <NA> clampToGround          1       0
#>   visibility drawOrder icon                       geometry
#> 1          1        NA <NA> LINESTRING Z (58391203 -454...

st_length(path)
#> 14029682 [m]

Just for fun, let’s visualize it.

path |>
  ggplot() +
  geom_sf()

Now is the fun part I discovered. You can use the density argument of the st_line_sample() function to convert a LINESTRING into points of equal distances, let’s say 50 kilometres. Note that the new geometry is MULTIPOINT.

pts <- st_line_sample(path, density = units::as_units(50, "km"))

pts
#> Geometry set for 1 feature 
#> Geometry type: MULTIPOINT
#> Dimension:     XYZ
#> Bounding box:  xmin: 58006120 ymin: -45978910 xmax: 59090720 ymax: -44576580
#> z_range:       zmin: 1 zmax: 1
#> Projected CRS: WGS 84 / NSIDC Sea Ice Polar Stereographic North

pts |>
  ggplot() +
  geom_sf()

We can verify that we have roughly 50 km between each point.

pts |>
  st_cast("POINT") |>
  st_as_sf() |>
  mutate(dist = st_distance(x, lag(x), by_element = TRUE))
#> Simple feature collection with 281 features and 1 field
#> Geometry type: POINT
#> Dimension:     XYZ
#> Bounding box:  xmin: 58006120 ymin: -45978910 xmax: 59090720 ymax: -44576580
#> Projected CRS: WGS 84 / NSIDC Sea Ice Polar Stereographic North
#> First 10 features:
#>                                 x         dist
#> 1  POINT Z (58406541 -45469359 1)       NA [m]
#> 2  POINT Z (58437199 -45429958 1) 49923.68 [m]
#> 3  POINT Z (58425633 -45444830 1) 18840.63 [m]
#> 4  POINT Z (58394962 -45484226 1) 49927.69 [m]
#> 5  POINT Z (58364268 -45523604 1) 49927.69 [m]
#> 6  POINT Z (58333544 -45562959 1) 49927.66 [m]
#> 7  POINT Z (58302758 -45602266 1) 49927.69 [m]
#> 8  POINT Z (58271973 -45641573 1) 49927.69 [m]
#> 9  POINT Z (58241188 -45680880 1) 49927.69 [m]
#> 10 POINT Z (58210402 -45720187 1) 49927.69 [m]
Session info
#> ─ Session info ───────────────────────────────────────────────────────────────────────────────────────────────────────
#>  setting  value
#>  version  R version 4.4.0 (2024-04-24)
#>  os       Linux Mint 21.3
#>  system   x86_64, linux-gnu
#>  ui       X11
#>  language en_CA:en
#>  collate  en_CA.UTF-8
#>  ctype    en_CA.UTF-8
#>  tz       America/Montreal
#>  date     2024-05-03
#>  pandoc   2.9.2.1 @ /usr/bin/ (via rmarkdown)
#> 
#> ─ Packages ───────────────────────────────────────────────────────────────────────────────────────────────────────────
#>  ! package     * version date (UTC) lib source
#>  P cachem        1.0.8   2023-05-01 [?] RSPM
#>  P class         7.3-22  2023-05-03 [?] CRAN (R 4.3.1)
#>  P classInt      0.4-10  2023-09-05 [?] RSPM
#>  P cli           3.6.2   2023-12-11 [?] RSPM
#>  P colorspace    2.1-0   2023-01-23 [?] RSPM
#>  P DBI           1.2.2   2024-02-16 [?] RSPM
#>  P devtools      2.4.5   2022-10-11 [?] RSPM (R 4.4.0)
#>  P digest        0.6.35  2024-03-11 [?] RSPM
#>  P dplyr       * 1.1.4   2023-11-17 [?] RSPM
#>  P e1071         1.7-14  2023-12-06 [?] RSPM
#>  P ellipsis      0.3.2   2021-04-29 [?] RSPM
#>  P evaluate      0.23    2023-11-01 [?] RSPM
#>  P extrafont     0.19    2023-01-18 [?] RSPM
#>  P extrafontdb   1.0     2012-06-11 [?] RSPM
#>  P fansi         1.0.6   2023-12-08 [?] RSPM
#>  P farver        2.1.1   2022-07-06 [?] RSPM
#>  P fastmap       1.1.1   2023-02-24 [?] RSPM
#>  P forcats     * 1.0.0   2023-01-29 [?] RSPM
#>  P fs            1.6.4   2024-04-25 [?] CRAN (R 4.4.0)
#>  P generics      0.1.3   2022-07-05 [?] RSPM
#>  P ggplot2     * 3.5.1   2024-04-23 [?] RSPM
#>  P ggpmthemes  * 0.0.2   2024-04-25 [?] Github (pmassicotte/ggpmthemes@993d61e)
#>  P glue          1.7.0   2024-01-09 [?] RSPM
#>  P gtable        0.3.5   2024-04-22 [?] RSPM
#>  P hms           1.1.3   2023-03-21 [?] RSPM
#>  P htmltools     0.5.8.1 2024-04-04 [?] RSPM
#>  P htmlwidgets   1.6.4   2023-12-06 [?] RSPM
#>  P httpuv        1.6.15  2024-03-26 [?] RSPM
#>  P jsonlite      1.8.8   2023-12-04 [?] RSPM
#>  P KernSmooth    2.23-22 2023-07-10 [?] CRAN (R 4.3.1)
#>  P knitr         1.46    2024-04-06 [?] RSPM
#>  P later         1.3.2   2023-12-06 [?] RSPM
#>  P lifecycle     1.0.4   2023-11-07 [?] RSPM
#>  P lubridate   * 1.9.3   2023-09-27 [?] RSPM
#>  P magrittr      2.0.3   2022-03-30 [?] RSPM
#>  P memoise       2.0.1   2021-11-26 [?] RSPM
#>  P mime          0.12    2021-09-28 [?] RSPM
#>  P miniUI        0.1.1.1 2018-05-18 [?] RSPM (R 4.4.0)
#>  P munsell       0.5.1   2024-04-01 [?] RSPM
#>  P pillar        1.9.0   2023-03-22 [?] RSPM
#>  P pkgbuild      1.4.4   2024-03-17 [?] RSPM (R 4.4.0)
#>  P pkgconfig     2.0.3   2019-09-22 [?] RSPM
#>  P pkgload       1.3.4   2024-01-16 [?] RSPM (R 4.4.0)
#>  P processx      3.8.4   2024-03-16 [?] RSPM
#>  P profvis       0.3.8   2023-05-02 [?] RSPM (R 4.4.0)
#>  P promises      1.3.0   2024-04-05 [?] RSPM
#>  P proxy         0.4-27  2022-06-09 [?] RSPM
#>  P ps            1.7.6   2024-01-18 [?] RSPM
#>  P purrr       * 1.0.2   2023-08-10 [?] RSPM
#>  P quarto      * 1.4     2024-03-06 [?] RSPM
#>  P R.cache       0.16.0  2022-07-21 [?] RSPM
#>  P R.methodsS3   1.8.2   2022-06-13 [?] RSPM
#>  P R.oo          1.26.0  2024-01-24 [?] RSPM
#>  P R.utils       2.12.3  2023-11-18 [?] RSPM
#>  P R6            2.5.1   2021-08-19 [?] RSPM
#>  P Rcpp          1.0.12  2024-01-09 [?] RSPM
#>  P readr       * 2.1.5   2024-01-10 [?] RSPM
#>  P remotes       2.5.0   2024-03-17 [?] RSPM (R 4.4.0)
#>  P renv          1.0.7   2024-04-11 [?] RSPM (R 4.4.0)
#>  P rlang         1.1.3   2024-01-10 [?] RSPM
#>  P rmarkdown     2.26    2024-03-05 [?] RSPM
#>  P rstudioapi    0.16.0  2024-03-24 [?] RSPM
#>  P Rttf2pt1      1.3.12  2023-01-22 [?] RSPM
#>  P scales        1.3.0   2023-11-28 [?] RSPM
#>  P sessioninfo   1.2.2   2021-12-06 [?] RSPM (R 4.4.0)
#>  P sf          * 1.0-16  2024-03-24 [?] RSPM
#>  P shiny         1.8.1.1 2024-04-02 [?] RSPM (R 4.4.0)
#>  P stringi       1.8.3   2023-12-11 [?] RSPM
#>  P stringr     * 1.5.1   2023-11-14 [?] RSPM
#>  P styler      * 1.10.3  2024-04-07 [?] RSPM
#>  P tibble      * 3.2.1   2023-03-20 [?] RSPM
#>  P tidyr       * 1.3.1   2024-01-24 [?] RSPM
#>  P tidyselect    1.2.1   2024-03-11 [?] RSPM
#>  P tidyverse   * 2.0.0   2023-02-22 [?] RSPM
#>  P timechange    0.3.0   2024-01-18 [?] RSPM
#>  P tzdb          0.4.0   2023-05-12 [?] RSPM
#>  P units         0.8-5   2023-11-28 [?] RSPM
#>  P urlchecker    1.0.1   2021-11-30 [?] RSPM (R 4.4.0)
#>  P usethis       2.2.3   2024-02-19 [?] RSPM (R 4.4.0)
#>  P utf8          1.2.4   2023-10-22 [?] RSPM
#>  P vctrs         0.6.5   2023-12-01 [?] RSPM
#>  P withr         3.0.0   2024-01-16 [?] RSPM
#>  P xfun          0.43    2024-03-25 [?] RSPM
#>  P xtable        1.8-4   2019-04-21 [?] RSPM (R 4.4.0)
#>  P yaml          2.3.8   2023-12-11 [?] RSPM
#> 
#>  [1] /tmp/RtmpvEsv6t/renv-use-libpath-25a135303bd529
#>  [2] /tmp/RtmpvEsv6t/renv-sandbox
#> 
#>  P ── Loaded and on-disk path mismatch.
#> 
#> ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
renv.lock file
{
  "R": {
    "Version": "4.4.0",
    "Repositories": [
      {
        "Name": "RSPM",
        "URL": "https://packagemanager.posit.co/cran/latest"
      },
      {
        "Name": "CRAN",
        "URL": "https://cran.rstudio.com"
      }
    ]
  },
  "Packages": {
    "DBI": {
      "Package": "DBI",
      "Version": "1.2.2",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "methods"
      ],
      "Hash": "164809cd72e1d5160b4cb3aa57f510fe"
    },
    "KernSmooth": {
      "Package": "KernSmooth",
      "Version": "2.23-22",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "stats"
      ],
      "Hash": "2fecebc3047322fa5930f74fae5de70f"
    },
    "MASS": {
      "Package": "MASS",
      "Version": "7.3-60.2",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "grDevices",
        "graphics",
        "methods",
        "stats",
        "utils"
      ],
      "Hash": "2f342c46163b0b54d7b64d1f798e2c78"
    },
    "Matrix": {
      "Package": "Matrix",
      "Version": "1.7-0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "grDevices",
        "graphics",
        "grid",
        "lattice",
        "methods",
        "stats",
        "utils"
      ],
      "Hash": "1920b2f11133b12350024297d8a4ff4a"
    },
    "R.cache": {
      "Package": "R.cache",
      "Version": "0.16.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "R.methodsS3",
        "R.oo",
        "R.utils",
        "digest",
        "utils"
      ],
      "Hash": "fe539ca3f8efb7410c3ae2cf5fe6c0f8"
    },
    "R.methodsS3": {
      "Package": "R.methodsS3",
      "Version": "1.8.2",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "utils"
      ],
      "Hash": "278c286fd6e9e75d0c2e8f731ea445c8"
    },
    "R.oo": {
      "Package": "R.oo",
      "Version": "1.26.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "R.methodsS3",
        "methods",
        "utils"
      ],
      "Hash": "4fed809e53ddb5407b3da3d0f572e591"
    },
    "R.utils": {
      "Package": "R.utils",
      "Version": "2.12.3",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "R.methodsS3",
        "R.oo",
        "methods",
        "tools",
        "utils"
      ],
      "Hash": "3dc2829b790254bfba21e60965787651"
    },
    "R6": {
      "Package": "R6",
      "Version": "2.5.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R"
      ],
      "Hash": "470851b6d5d0ac559e9d01bb352b4021"
    },
    "RColorBrewer": {
      "Package": "RColorBrewer",
      "Version": "1.1-3",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R"
      ],
      "Hash": "45f0398006e83a5b10b72a90663d8d8c"
    },
    "Rcpp": {
      "Package": "Rcpp",
      "Version": "1.0.12",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "methods",
        "utils"
      ],
      "Hash": "5ea2700d21e038ace58269ecdbeb9ec0"
    },
    "Rttf2pt1": {
      "Package": "Rttf2pt1",
      "Version": "1.3.12",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R"
      ],
      "Hash": "a60168d094ca7e4de5106d60001c3964"
    },
    "askpass": {
      "Package": "askpass",
      "Version": "1.2.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "sys"
      ],
      "Hash": "cad6cf7f1d5f6e906700b9d3e718c796"
    },
    "backports": {
      "Package": "backports",
      "Version": "1.4.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R"
      ],
      "Hash": "c39fbec8a30d23e721980b8afb31984c"
    },
    "base64enc": {
      "Package": "base64enc",
      "Version": "0.1-3",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R"
      ],
      "Hash": "543776ae6848fde2f48ff3816d0628bc"
    },
    "bit": {
      "Package": "bit",
      "Version": "4.0.5",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R"
      ],
      "Hash": "d242abec29412ce988848d0294b208fd"
    },
    "bit64": {
      "Package": "bit64",
      "Version": "4.0.5",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "bit",
        "methods",
        "stats",
        "utils"
      ],
      "Hash": "9fe98599ca456d6552421db0d6772d8f"
    },
    "blob": {
      "Package": "blob",
      "Version": "1.2.4",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "methods",
        "rlang",
        "vctrs"
      ],
      "Hash": "40415719b5a479b87949f3aa0aee737c"
    },
    "brew": {
      "Package": "brew",
      "Version": "1.0-10",
      "Source": "Repository",
      "Repository": "RSPM",
      "Hash": "8f4a384e19dccd8c65356dc096847b76"
    },
    "brio": {
      "Package": "brio",
      "Version": "1.1.5",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R"
      ],
      "Hash": "c1ee497a6d999947c2c224ae46799b1a"
    },
    "broom": {
      "Package": "broom",
      "Version": "1.0.5",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "backports",
        "dplyr",
        "ellipsis",
        "generics",
        "glue",
        "lifecycle",
        "purrr",
        "rlang",
        "stringr",
        "tibble",
        "tidyr"
      ],
      "Hash": "fd25391c3c4f6ecf0fa95f1e6d15378c"
    },
    "bslib": {
      "Package": "bslib",
      "Version": "0.7.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "base64enc",
        "cachem",
        "fastmap",
        "grDevices",
        "htmltools",
        "jquerylib",
        "jsonlite",
        "lifecycle",
        "memoise",
        "mime",
        "rlang",
        "sass"
      ],
      "Hash": "8644cc53f43828f19133548195d7e59e"
    },
    "cachem": {
      "Package": "cachem",
      "Version": "1.0.8",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "fastmap",
        "rlang"
      ],
      "Hash": "c35768291560ce302c0a6589f92e837d"
    },
    "callr": {
      "Package": "callr",
      "Version": "3.7.6",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "R6",
        "processx",
        "utils"
      ],
      "Hash": "d7e13f49c19103ece9e58ad2d83a7354"
    },
    "cellranger": {
      "Package": "cellranger",
      "Version": "1.1.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "rematch",
        "tibble"
      ],
      "Hash": "f61dbaec772ccd2e17705c1e872e9e7c"
    },
    "class": {
      "Package": "class",
      "Version": "7.3-22",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "MASS",
        "R",
        "stats",
        "utils"
      ],
      "Hash": "f91f6b29f38b8c280f2b9477787d4bb2"
    },
    "classInt": {
      "Package": "classInt",
      "Version": "0.4-10",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "KernSmooth",
        "R",
        "class",
        "e1071",
        "grDevices",
        "graphics",
        "stats"
      ],
      "Hash": "f5a40793b1ae463a7ffb3902a95bf864"
    },
    "cli": {
      "Package": "cli",
      "Version": "3.6.2",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "utils"
      ],
      "Hash": "1216ac65ac55ec0058a6f75d7ca0fd52"
    },
    "clipr": {
      "Package": "clipr",
      "Version": "0.8.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "utils"
      ],
      "Hash": "3f038e5ac7f41d4ac41ce658c85e3042"
    },
    "colorspace": {
      "Package": "colorspace",
      "Version": "2.1-0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "grDevices",
        "graphics",
        "methods",
        "stats"
      ],
      "Hash": "f20c47fd52fae58b4e377c37bb8c335b"
    },
    "commonmark": {
      "Package": "commonmark",
      "Version": "1.9.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Hash": "5d8225445acb167abf7797de48b2ee3c"
    },
    "conflicted": {
      "Package": "conflicted",
      "Version": "1.2.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cli",
        "memoise",
        "rlang"
      ],
      "Hash": "bb097fccb22d156624fd07cd2894ddb6"
    },
    "cpp11": {
      "Package": "cpp11",
      "Version": "0.4.7",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R"
      ],
      "Hash": "5a295d7d963cc5035284dcdbaf334f4e"
    },
    "crayon": {
      "Package": "crayon",
      "Version": "1.5.2",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "grDevices",
        "methods",
        "utils"
      ],
      "Hash": "e8a1e41acf02548751f45c718d55aa6a"
    },
    "credentials": {
      "Package": "credentials",
      "Version": "2.0.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "askpass",
        "curl",
        "jsonlite",
        "openssl",
        "sys"
      ],
      "Hash": "c7844b32098dcbd1c59cbd8dddb4ecc6"
    },
    "curl": {
      "Package": "curl",
      "Version": "5.2.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R"
      ],
      "Hash": "411ca2c03b1ce5f548345d2fc2685f7a"
    },
    "data.table": {
      "Package": "data.table",
      "Version": "1.15.4",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "methods"
      ],
      "Hash": "8ee9ac56ef633d0c7cab8b2ca87d683e"
    },
    "dbplyr": {
      "Package": "dbplyr",
      "Version": "2.5.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "DBI",
        "R",
        "R6",
        "blob",
        "cli",
        "dplyr",
        "glue",
        "lifecycle",
        "magrittr",
        "methods",
        "pillar",
        "purrr",
        "rlang",
        "tibble",
        "tidyr",
        "tidyselect",
        "utils",
        "vctrs",
        "withr"
      ],
      "Hash": "39b2e002522bfd258039ee4e889e0fd1"
    },
    "desc": {
      "Package": "desc",
      "Version": "1.4.3",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "R6",
        "cli",
        "utils"
      ],
      "Hash": "99b79fcbd6c4d1ce087f5c5c758b384f"
    },
    "devtools": {
      "Package": "devtools",
      "Version": "2.4.5",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cli",
        "desc",
        "ellipsis",
        "fs",
        "lifecycle",
        "memoise",
        "miniUI",
        "pkgbuild",
        "pkgdown",
        "pkgload",
        "profvis",
        "rcmdcheck",
        "remotes",
        "rlang",
        "roxygen2",
        "rversions",
        "sessioninfo",
        "stats",
        "testthat",
        "tools",
        "urlchecker",
        "usethis",
        "utils",
        "withr"
      ],
      "Hash": "ea5bc8b4a6a01e4f12d98b58329930bb"
    },
    "diffobj": {
      "Package": "diffobj",
      "Version": "0.3.5",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "crayon",
        "methods",
        "stats",
        "tools",
        "utils"
      ],
      "Hash": "bcaa8b95f8d7d01a5dedfd959ce88ab8"
    },
    "digest": {
      "Package": "digest",
      "Version": "0.6.35",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "utils"
      ],
      "Hash": "698ece7ba5a4fa4559e3d537e7ec3d31"
    },
    "downlit": {
      "Package": "downlit",
      "Version": "0.4.3",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "brio",
        "desc",
        "digest",
        "evaluate",
        "fansi",
        "memoise",
        "rlang",
        "vctrs",
        "withr",
        "yaml"
      ],
      "Hash": "14fa1f248b60ed67e1f5418391a17b14"
    },
    "dplyr": {
      "Package": "dplyr",
      "Version": "1.1.4",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "R6",
        "cli",
        "generics",
        "glue",
        "lifecycle",
        "magrittr",
        "methods",
        "pillar",
        "rlang",
        "tibble",
        "tidyselect",
        "utils",
        "vctrs"
      ],
      "Hash": "fedd9d00c2944ff00a0e2696ccf048ec"
    },
    "dtplyr": {
      "Package": "dtplyr",
      "Version": "1.3.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cli",
        "data.table",
        "dplyr",
        "glue",
        "lifecycle",
        "rlang",
        "tibble",
        "tidyselect",
        "vctrs"
      ],
      "Hash": "54ed3ea01b11e81a86544faaecfef8e2"
    },
    "e1071": {
      "Package": "e1071",
      "Version": "1.7-14",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "class",
        "grDevices",
        "graphics",
        "methods",
        "proxy",
        "stats",
        "utils"
      ],
      "Hash": "4ef372b716824753719a8a38b258442d"
    },
    "ellipsis": {
      "Package": "ellipsis",
      "Version": "0.3.2",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "rlang"
      ],
      "Hash": "bb0eec2fe32e88d9e2836c2f73ea2077"
    },
    "evaluate": {
      "Package": "evaluate",
      "Version": "0.23",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "methods"
      ],
      "Hash": "daf4a1246be12c1fa8c7705a0935c1a0"
    },
    "extrafont": {
      "Package": "extrafont",
      "Version": "0.19",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "Rttf2pt1",
        "extrafontdb",
        "grDevices",
        "utils"
      ],
      "Hash": "03d9939b37164f34e0522fef13e63158"
    },
    "extrafontdb": {
      "Package": "extrafontdb",
      "Version": "1.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R"
      ],
      "Hash": "a861555ddec7451c653b40e713166c6f"
    },
    "fansi": {
      "Package": "fansi",
      "Version": "1.0.6",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "grDevices",
        "utils"
      ],
      "Hash": "962174cf2aeb5b9eea581522286a911f"
    },
    "farver": {
      "Package": "farver",
      "Version": "2.1.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Hash": "8106d78941f34855c440ddb946b8f7a5"
    },
    "fastmap": {
      "Package": "fastmap",
      "Version": "1.1.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Hash": "f7736a18de97dea803bde0a2daaafb27"
    },
    "fontawesome": {
      "Package": "fontawesome",
      "Version": "0.5.2",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "htmltools",
        "rlang"
      ],
      "Hash": "c2efdd5f0bcd1ea861c2d4e2a883a67d"
    },
    "forcats": {
      "Package": "forcats",
      "Version": "1.0.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cli",
        "glue",
        "lifecycle",
        "magrittr",
        "rlang",
        "tibble"
      ],
      "Hash": "1a0a9a3d5083d0d573c4214576f1e690"
    },
    "fs": {
      "Package": "fs",
      "Version": "1.6.4",
      "Source": "Repository",
      "Repository": "CRAN",
      "Requirements": [
        "R",
        "methods"
      ],
      "Hash": "15aeb8c27f5ea5161f9f6a641fafd93a"
    },
    "gargle": {
      "Package": "gargle",
      "Version": "1.5.2",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cli",
        "fs",
        "glue",
        "httr",
        "jsonlite",
        "lifecycle",
        "openssl",
        "rappdirs",
        "rlang",
        "stats",
        "utils",
        "withr"
      ],
      "Hash": "fc0b272e5847c58cd5da9b20eedbd026"
    },
    "generics": {
      "Package": "generics",
      "Version": "0.1.3",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "methods"
      ],
      "Hash": "15e9634c0fcd294799e9b2e929ed1b86"
    },
    "gert": {
      "Package": "gert",
      "Version": "2.0.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "askpass",
        "credentials",
        "openssl",
        "rstudioapi",
        "sys",
        "zip"
      ],
      "Hash": "f70d3fe2d9e7654213a946963d1591eb"
    },
    "ggplot2": {
      "Package": "ggplot2",
      "Version": "3.5.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "MASS",
        "R",
        "cli",
        "glue",
        "grDevices",
        "grid",
        "gtable",
        "isoband",
        "lifecycle",
        "mgcv",
        "rlang",
        "scales",
        "stats",
        "tibble",
        "vctrs",
        "withr"
      ],
      "Hash": "44c6a2f8202d5b7e878ea274b1092426"
    },
    "ggpmthemes": {
      "Package": "ggpmthemes",
      "Version": "0.0.2",
      "Source": "GitHub",
      "RemoteType": "github",
      "RemoteHost": "api.github.com",
      "RemoteRepo": "ggpmthemes",
      "RemoteUsername": "pmassicotte",
      "RemotePkgRef": "pmassicotte/ggpmthemes",
      "RemoteRef": "HEAD",
      "RemoteSha": "993d61e7d03c794212dcb8d08d015f969e4e56bd",
      "Requirements": [
        "extrafont",
        "ggplot2",
        "grDevices",
        "scales"
      ],
      "Hash": "5173186d12c254e1c738159fb18ea1d9"
    },
    "gh": {
      "Package": "gh",
      "Version": "1.4.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cli",
        "gitcreds",
        "glue",
        "httr2",
        "ini",
        "jsonlite",
        "lifecycle",
        "rlang"
      ],
      "Hash": "fbbbc48eba7a6626a08bb365e44b563b"
    },
    "gitcreds": {
      "Package": "gitcreds",
      "Version": "0.1.2",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R"
      ],
      "Hash": "ab08ac61f3e1be454ae21911eb8bc2fe"
    },
    "glue": {
      "Package": "glue",
      "Version": "1.7.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "methods"
      ],
      "Hash": "e0b3a53876554bd45879e596cdb10a52"
    },
    "googledrive": {
      "Package": "googledrive",
      "Version": "2.1.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cli",
        "gargle",
        "glue",
        "httr",
        "jsonlite",
        "lifecycle",
        "magrittr",
        "pillar",
        "purrr",
        "rlang",
        "tibble",
        "utils",
        "uuid",
        "vctrs",
        "withr"
      ],
      "Hash": "e99641edef03e2a5e87f0a0b1fcc97f4"
    },
    "googlesheets4": {
      "Package": "googlesheets4",
      "Version": "1.1.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cellranger",
        "cli",
        "curl",
        "gargle",
        "glue",
        "googledrive",
        "httr",
        "ids",
        "lifecycle",
        "magrittr",
        "methods",
        "purrr",
        "rematch2",
        "rlang",
        "tibble",
        "utils",
        "vctrs",
        "withr"
      ],
      "Hash": "d6db1667059d027da730decdc214b959"
    },
    "gtable": {
      "Package": "gtable",
      "Version": "0.3.5",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cli",
        "glue",
        "grid",
        "lifecycle",
        "rlang"
      ],
      "Hash": "e18861963cbc65a27736e02b3cd3c4a0"
    },
    "haven": {
      "Package": "haven",
      "Version": "2.5.4",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cli",
        "cpp11",
        "forcats",
        "hms",
        "lifecycle",
        "methods",
        "readr",
        "rlang",
        "tibble",
        "tidyselect",
        "vctrs"
      ],
      "Hash": "9171f898db9d9c4c1b2c745adc2c1ef1"
    },
    "highr": {
      "Package": "highr",
      "Version": "0.10",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "xfun"
      ],
      "Hash": "06230136b2d2b9ba5805e1963fa6e890"
    },
    "hms": {
      "Package": "hms",
      "Version": "1.1.3",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "lifecycle",
        "methods",
        "pkgconfig",
        "rlang",
        "vctrs"
      ],
      "Hash": "b59377caa7ed00fa41808342002138f9"
    },
    "htmltools": {
      "Package": "htmltools",
      "Version": "0.5.8.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "base64enc",
        "digest",
        "fastmap",
        "grDevices",
        "rlang",
        "utils"
      ],
      "Hash": "81d371a9cc60640e74e4ab6ac46dcedc"
    },
    "htmlwidgets": {
      "Package": "htmlwidgets",
      "Version": "1.6.4",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "grDevices",
        "htmltools",
        "jsonlite",
        "knitr",
        "rmarkdown",
        "yaml"
      ],
      "Hash": "04291cc45198225444a397606810ac37"
    },
    "httpuv": {
      "Package": "httpuv",
      "Version": "1.6.15",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "R6",
        "Rcpp",
        "later",
        "promises",
        "utils"
      ],
      "Hash": "d55aa087c47a63ead0f6fc10f8fa1ee0"
    },
    "httr": {
      "Package": "httr",
      "Version": "1.4.7",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "R6",
        "curl",
        "jsonlite",
        "mime",
        "openssl"
      ],
      "Hash": "ac107251d9d9fd72f0ca8049988f1d7f"
    },
    "httr2": {
      "Package": "httr2",
      "Version": "1.0.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "R6",
        "cli",
        "curl",
        "glue",
        "lifecycle",
        "magrittr",
        "openssl",
        "rappdirs",
        "rlang",
        "vctrs",
        "withr"
      ],
      "Hash": "03d741c92fda96d98c3a3f22494e3b4a"
    },
    "ids": {
      "Package": "ids",
      "Version": "1.0.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "openssl",
        "uuid"
      ],
      "Hash": "99df65cfef20e525ed38c3d2577f7190"
    },
    "ini": {
      "Package": "ini",
      "Version": "0.3.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Hash": "6154ec2223172bce8162d4153cda21f7"
    },
    "isoband": {
      "Package": "isoband",
      "Version": "0.2.7",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "grid",
        "utils"
      ],
      "Hash": "0080607b4a1a7b28979aecef976d8bc2"
    },
    "jquerylib": {
      "Package": "jquerylib",
      "Version": "0.1.4",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "htmltools"
      ],
      "Hash": "5aab57a3bd297eee1c1d862735972182"
    },
    "jsonlite": {
      "Package": "jsonlite",
      "Version": "1.8.8",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "methods"
      ],
      "Hash": "e1b9c55281c5adc4dd113652d9e26768"
    },
    "knitr": {
      "Package": "knitr",
      "Version": "1.46",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "evaluate",
        "highr",
        "methods",
        "tools",
        "xfun",
        "yaml"
      ],
      "Hash": "6e008ab1d696a5283c79765fa7b56b47"
    },
    "labeling": {
      "Package": "labeling",
      "Version": "0.4.3",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "graphics",
        "stats"
      ],
      "Hash": "b64ec208ac5bc1852b285f665d6368b3"
    },
    "later": {
      "Package": "later",
      "Version": "1.3.2",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "Rcpp",
        "rlang"
      ],
      "Hash": "a3e051d405326b8b0012377434c62b37"
    },
    "lattice": {
      "Package": "lattice",
      "Version": "0.22-6",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "grDevices",
        "graphics",
        "grid",
        "stats",
        "utils"
      ],
      "Hash": "cc5ac1ba4c238c7ca9fa6a87ca11a7e2"
    },
    "lifecycle": {
      "Package": "lifecycle",
      "Version": "1.0.4",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cli",
        "glue",
        "rlang"
      ],
      "Hash": "b8552d117e1b808b09a832f589b79035"
    },
    "lubridate": {
      "Package": "lubridate",
      "Version": "1.9.3",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "generics",
        "methods",
        "timechange"
      ],
      "Hash": "680ad542fbcf801442c83a6ac5a2126c"
    },
    "magrittr": {
      "Package": "magrittr",
      "Version": "2.0.3",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R"
      ],
      "Hash": "7ce2733a9826b3aeb1775d56fd305472"
    },
    "memoise": {
      "Package": "memoise",
      "Version": "2.0.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "cachem",
        "rlang"
      ],
      "Hash": "e2817ccf4a065c5d9d7f2cfbe7c1d78c"
    },
    "mgcv": {
      "Package": "mgcv",
      "Version": "1.9-1",
      "Source": "Repository",
      "Repository": "CRAN",
      "Requirements": [
        "Matrix",
        "R",
        "graphics",
        "methods",
        "nlme",
        "splines",
        "stats",
        "utils"
      ],
      "Hash": "110ee9d83b496279960e162ac97764ce"
    },
    "mime": {
      "Package": "mime",
      "Version": "0.12",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "tools"
      ],
      "Hash": "18e9c28c1d3ca1560ce30658b22ce104"
    },
    "miniUI": {
      "Package": "miniUI",
      "Version": "0.1.1.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "htmltools",
        "shiny",
        "utils"
      ],
      "Hash": "fec5f52652d60615fdb3957b3d74324a"
    },
    "modelr": {
      "Package": "modelr",
      "Version": "0.1.11",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "broom",
        "magrittr",
        "purrr",
        "rlang",
        "tibble",
        "tidyr",
        "tidyselect",
        "vctrs"
      ],
      "Hash": "4f50122dc256b1b6996a4703fecea821"
    },
    "munsell": {
      "Package": "munsell",
      "Version": "0.5.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "colorspace",
        "methods"
      ],
      "Hash": "4fd8900853b746af55b81fda99da7695"
    },
    "nlme": {
      "Package": "nlme",
      "Version": "3.1-164",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "graphics",
        "lattice",
        "stats",
        "utils"
      ],
      "Hash": "a623a2239e642806158bc4dc3f51565d"
    },
    "openssl": {
      "Package": "openssl",
      "Version": "2.1.2",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "askpass"
      ],
      "Hash": "ea2475b073243d9d338aa8f086ce973e"
    },
    "pillar": {
      "Package": "pillar",
      "Version": "1.9.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "cli",
        "fansi",
        "glue",
        "lifecycle",
        "rlang",
        "utf8",
        "utils",
        "vctrs"
      ],
      "Hash": "15da5a8412f317beeee6175fbc76f4bb"
    },
    "pkgbuild": {
      "Package": "pkgbuild",
      "Version": "1.4.4",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "R6",
        "callr",
        "cli",
        "desc",
        "processx"
      ],
      "Hash": "a29e8e134a460a01e0ca67a4763c595b"
    },
    "pkgconfig": {
      "Package": "pkgconfig",
      "Version": "2.0.3",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "utils"
      ],
      "Hash": "01f28d4278f15c76cddbea05899c5d6f"
    },
    "pkgdown": {
      "Package": "pkgdown",
      "Version": "2.0.9",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "bslib",
        "callr",
        "cli",
        "desc",
        "digest",
        "downlit",
        "fs",
        "httr",
        "jsonlite",
        "magrittr",
        "memoise",
        "purrr",
        "ragg",
        "rlang",
        "rmarkdown",
        "tibble",
        "whisker",
        "withr",
        "xml2",
        "yaml"
      ],
      "Hash": "8bf1151ed1a48328d71b937e651117a6"
    },
    "pkgload": {
      "Package": "pkgload",
      "Version": "1.3.4",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cli",
        "crayon",
        "desc",
        "fs",
        "glue",
        "methods",
        "pkgbuild",
        "rlang",
        "rprojroot",
        "utils",
        "withr"
      ],
      "Hash": "876c618df5ae610be84356d5d7a5d124"
    },
    "praise": {
      "Package": "praise",
      "Version": "1.0.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Hash": "a555924add98c99d2f411e37e7d25e9f"
    },
    "prettyunits": {
      "Package": "prettyunits",
      "Version": "1.2.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R"
      ],
      "Hash": "6b01fc98b1e86c4f705ce9dcfd2f57c7"
    },
    "processx": {
      "Package": "processx",
      "Version": "3.8.4",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "R6",
        "ps",
        "utils"
      ],
      "Hash": "0c90a7d71988856bad2a2a45dd871bb9"
    },
    "profvis": {
      "Package": "profvis",
      "Version": "0.3.8",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "htmlwidgets",
        "purrr",
        "rlang",
        "stringr",
        "vctrs"
      ],
      "Hash": "aa5a3864397ce6ae03458f98618395a1"
    },
    "progress": {
      "Package": "progress",
      "Version": "1.2.3",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "R6",
        "crayon",
        "hms",
        "prettyunits"
      ],
      "Hash": "f4625e061cb2865f111b47ff163a5ca6"
    },
    "promises": {
      "Package": "promises",
      "Version": "1.3.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R6",
        "Rcpp",
        "fastmap",
        "later",
        "magrittr",
        "rlang",
        "stats"
      ],
      "Hash": "434cd5388a3979e74be5c219bcd6e77d"
    },
    "proxy": {
      "Package": "proxy",
      "Version": "0.4-27",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "stats",
        "utils"
      ],
      "Hash": "e0ef355c12942cf7a6b91a6cfaea8b3e"
    },
    "ps": {
      "Package": "ps",
      "Version": "1.7.6",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "utils"
      ],
      "Hash": "dd2b9319ee0656c8acf45c7f40c59de7"
    },
    "purrr": {
      "Package": "purrr",
      "Version": "1.0.2",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cli",
        "lifecycle",
        "magrittr",
        "rlang",
        "vctrs"
      ],
      "Hash": "1cba04a4e9414bdefc9dcaa99649a8dc"
    },
    "quarto": {
      "Package": "quarto",
      "Version": "1.4",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cli",
        "jsonlite",
        "later",
        "processx",
        "rlang",
        "rmarkdown",
        "rstudioapi",
        "tools",
        "utils",
        "yaml"
      ],
      "Hash": "c94c271f9b998d116186a78b2a9b23c1"
    },
    "ragg": {
      "Package": "ragg",
      "Version": "1.3.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "systemfonts",
        "textshaping"
      ],
      "Hash": "082e1a198e3329d571f4448ef0ede4bc"
    },
    "rappdirs": {
      "Package": "rappdirs",
      "Version": "0.3.3",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R"
      ],
      "Hash": "5e3c5dc0b071b21fa128676560dbe94d"
    },
    "rcmdcheck": {
      "Package": "rcmdcheck",
      "Version": "1.4.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R6",
        "callr",
        "cli",
        "curl",
        "desc",
        "digest",
        "pkgbuild",
        "prettyunits",
        "rprojroot",
        "sessioninfo",
        "utils",
        "withr",
        "xopen"
      ],
      "Hash": "8f25ebe2ec38b1f2aef3b0d2ef76f6c4"
    },
    "readr": {
      "Package": "readr",
      "Version": "2.1.5",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "R6",
        "cli",
        "clipr",
        "cpp11",
        "crayon",
        "hms",
        "lifecycle",
        "methods",
        "rlang",
        "tibble",
        "tzdb",
        "utils",
        "vroom"
      ],
      "Hash": "9de96463d2117f6ac49980577939dfb3"
    },
    "readxl": {
      "Package": "readxl",
      "Version": "1.4.3",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cellranger",
        "cpp11",
        "progress",
        "tibble",
        "utils"
      ],
      "Hash": "8cf9c239b96df1bbb133b74aef77ad0a"
    },
    "rematch": {
      "Package": "rematch",
      "Version": "2.0.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Hash": "cbff1b666c6fa6d21202f07e2318d4f1"
    },
    "rematch2": {
      "Package": "rematch2",
      "Version": "2.1.2",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "tibble"
      ],
      "Hash": "76c9e04c712a05848ae7a23d2f170a40"
    },
    "remotes": {
      "Package": "remotes",
      "Version": "2.5.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "methods",
        "stats",
        "tools",
        "utils"
      ],
      "Hash": "3ee025083e66f18db6cf27b56e23e141"
    },
    "renv": {
      "Package": "renv",
      "Version": "1.0.7",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "utils"
      ],
      "Hash": "397b7b2a265bc5a7a06852524dabae20"
    },
    "reprex": {
      "Package": "reprex",
      "Version": "2.1.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "callr",
        "cli",
        "clipr",
        "fs",
        "glue",
        "knitr",
        "lifecycle",
        "rlang",
        "rmarkdown",
        "rstudioapi",
        "utils",
        "withr"
      ],
      "Hash": "1425f91b4d5d9a8f25352c44a3d914ed"
    },
    "rlang": {
      "Package": "rlang",
      "Version": "1.1.3",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "utils"
      ],
      "Hash": "42548638fae05fd9a9b5f3f437fbbbe2"
    },
    "rmarkdown": {
      "Package": "rmarkdown",
      "Version": "2.26",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "bslib",
        "evaluate",
        "fontawesome",
        "htmltools",
        "jquerylib",
        "jsonlite",
        "knitr",
        "methods",
        "tinytex",
        "tools",
        "utils",
        "xfun",
        "yaml"
      ],
      "Hash": "9b148e7f95d33aac01f31282d49e4f44"
    },
    "roxygen2": {
      "Package": "roxygen2",
      "Version": "7.3.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "R6",
        "brew",
        "cli",
        "commonmark",
        "cpp11",
        "desc",
        "knitr",
        "methods",
        "pkgload",
        "purrr",
        "rlang",
        "stringi",
        "stringr",
        "utils",
        "withr",
        "xml2"
      ],
      "Hash": "c25fe7b2d8cba73d1b63c947bf7afdb9"
    },
    "rprojroot": {
      "Package": "rprojroot",
      "Version": "2.0.4",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R"
      ],
      "Hash": "4c8415e0ec1e29f3f4f6fc108bef0144"
    },
    "rstudioapi": {
      "Package": "rstudioapi",
      "Version": "0.16.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Hash": "96710351d642b70e8f02ddeb237c46a7"
    },
    "rversions": {
      "Package": "rversions",
      "Version": "2.1.2",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "curl",
        "utils",
        "xml2"
      ],
      "Hash": "a9881dfed103e83f9de151dc17002cd1"
    },
    "rvest": {
      "Package": "rvest",
      "Version": "1.0.4",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cli",
        "glue",
        "httr",
        "lifecycle",
        "magrittr",
        "rlang",
        "selectr",
        "tibble",
        "xml2"
      ],
      "Hash": "0bcf0c6f274e90ea314b812a6d19a519"
    },
    "s2": {
      "Package": "s2",
      "Version": "1.1.6",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "Rcpp",
        "wk"
      ],
      "Hash": "32f7b1a15bb01ae809022960abad5363"
    },
    "sass": {
      "Package": "sass",
      "Version": "0.4.9",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R6",
        "fs",
        "htmltools",
        "rappdirs",
        "rlang"
      ],
      "Hash": "d53dbfddf695303ea4ad66f86e99b95d"
    },
    "scales": {
      "Package": "scales",
      "Version": "1.3.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "R6",
        "RColorBrewer",
        "cli",
        "farver",
        "glue",
        "labeling",
        "lifecycle",
        "munsell",
        "rlang",
        "viridisLite"
      ],
      "Hash": "c19df082ba346b0ffa6f833e92de34d1"
    },
    "selectr": {
      "Package": "selectr",
      "Version": "0.4-2",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "R6",
        "methods",
        "stringr"
      ],
      "Hash": "3838071b66e0c566d55cc26bd6e27bf4"
    },
    "sessioninfo": {
      "Package": "sessioninfo",
      "Version": "1.2.2",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cli",
        "tools",
        "utils"
      ],
      "Hash": "3f9796a8d0a0e8c6eb49a4b029359d1f"
    },
    "sf": {
      "Package": "sf",
      "Version": "1.0-16",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "DBI",
        "R",
        "Rcpp",
        "classInt",
        "grDevices",
        "graphics",
        "grid",
        "magrittr",
        "methods",
        "s2",
        "stats",
        "tools",
        "units",
        "utils"
      ],
      "Hash": "ad57b543f7c3fca05213ba78ff63df9b"
    },
    "shiny": {
      "Package": "shiny",
      "Version": "1.8.1.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "R6",
        "bslib",
        "cachem",
        "commonmark",
        "crayon",
        "fastmap",
        "fontawesome",
        "glue",
        "grDevices",
        "htmltools",
        "httpuv",
        "jsonlite",
        "later",
        "lifecycle",
        "methods",
        "mime",
        "promises",
        "rlang",
        "sourcetools",
        "tools",
        "utils",
        "withr",
        "xtable"
      ],
      "Hash": "54b26646816af9960a4c64d8ceec75d6"
    },
    "sourcetools": {
      "Package": "sourcetools",
      "Version": "0.1.7-1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R"
      ],
      "Hash": "5f5a7629f956619d519205ec475fe647"
    },
    "stringi": {
      "Package": "stringi",
      "Version": "1.8.3",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "stats",
        "tools",
        "utils"
      ],
      "Hash": "058aebddea264f4c99401515182e656a"
    },
    "stringr": {
      "Package": "stringr",
      "Version": "1.5.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cli",
        "glue",
        "lifecycle",
        "magrittr",
        "rlang",
        "stringi",
        "vctrs"
      ],
      "Hash": "960e2ae9e09656611e0b8214ad543207"
    },
    "styler": {
      "Package": "styler",
      "Version": "1.10.3",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "R.cache",
        "cli",
        "magrittr",
        "purrr",
        "rlang",
        "rprojroot",
        "tools",
        "vctrs",
        "withr"
      ],
      "Hash": "93a2b1beac2437bdcc4724f8bf867e2c"
    },
    "sys": {
      "Package": "sys",
      "Version": "3.4.2",
      "Source": "Repository",
      "Repository": "RSPM",
      "Hash": "3a1be13d68d47a8cd0bfd74739ca1555"
    },
    "systemfonts": {
      "Package": "systemfonts",
      "Version": "1.0.6",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cpp11"
      ],
      "Hash": "6d538cff441f0f1f36db2209ac7495ac"
    },
    "testthat": {
      "Package": "testthat",
      "Version": "3.2.1.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "R6",
        "brio",
        "callr",
        "cli",
        "desc",
        "digest",
        "evaluate",
        "jsonlite",
        "lifecycle",
        "magrittr",
        "methods",
        "pkgload",
        "praise",
        "processx",
        "ps",
        "rlang",
        "utils",
        "waldo",
        "withr"
      ],
      "Hash": "3f6e7e5e2220856ff865e4834766bf2b"
    },
    "textshaping": {
      "Package": "textshaping",
      "Version": "0.3.7",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cpp11",
        "systemfonts"
      ],
      "Hash": "997aac9ad649e0ef3b97f96cddd5622b"
    },
    "tibble": {
      "Package": "tibble",
      "Version": "3.2.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "fansi",
        "lifecycle",
        "magrittr",
        "methods",
        "pillar",
        "pkgconfig",
        "rlang",
        "utils",
        "vctrs"
      ],
      "Hash": "a84e2cc86d07289b3b6f5069df7a004c"
    },
    "tidyr": {
      "Package": "tidyr",
      "Version": "1.3.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cli",
        "cpp11",
        "dplyr",
        "glue",
        "lifecycle",
        "magrittr",
        "purrr",
        "rlang",
        "stringr",
        "tibble",
        "tidyselect",
        "utils",
        "vctrs"
      ],
      "Hash": "915fb7ce036c22a6a33b5a8adb712eb1"
    },
    "tidyselect": {
      "Package": "tidyselect",
      "Version": "1.2.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cli",
        "glue",
        "lifecycle",
        "rlang",
        "vctrs",
        "withr"
      ],
      "Hash": "829f27b9c4919c16b593794a6344d6c0"
    },
    "tidyverse": {
      "Package": "tidyverse",
      "Version": "2.0.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "broom",
        "cli",
        "conflicted",
        "dbplyr",
        "dplyr",
        "dtplyr",
        "forcats",
        "ggplot2",
        "googledrive",
        "googlesheets4",
        "haven",
        "hms",
        "httr",
        "jsonlite",
        "lubridate",
        "magrittr",
        "modelr",
        "pillar",
        "purrr",
        "ragg",
        "readr",
        "readxl",
        "reprex",
        "rlang",
        "rstudioapi",
        "rvest",
        "stringr",
        "tibble",
        "tidyr",
        "xml2"
      ],
      "Hash": "c328568cd14ea89a83bd4ca7f54ae07e"
    },
    "timechange": {
      "Package": "timechange",
      "Version": "0.3.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cpp11"
      ],
      "Hash": "c5f3c201b931cd6474d17d8700ccb1c8"
    },
    "tinytex": {
      "Package": "tinytex",
      "Version": "0.50",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "xfun"
      ],
      "Hash": "be7a76845222ad20adb761f462eed3ea"
    },
    "tzdb": {
      "Package": "tzdb",
      "Version": "0.4.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cpp11"
      ],
      "Hash": "f561504ec2897f4d46f0c7657e488ae1"
    },
    "units": {
      "Package": "units",
      "Version": "0.8-5",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "Rcpp"
      ],
      "Hash": "119d19da480e873f72241ff6962ffd83"
    },
    "urlchecker": {
      "Package": "urlchecker",
      "Version": "1.0.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cli",
        "curl",
        "tools",
        "xml2"
      ],
      "Hash": "409328b8e1253c8d729a7836fe7f7a16"
    },
    "usethis": {
      "Package": "usethis",
      "Version": "2.2.3",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cli",
        "clipr",
        "crayon",
        "curl",
        "desc",
        "fs",
        "gert",
        "gh",
        "glue",
        "jsonlite",
        "lifecycle",
        "purrr",
        "rappdirs",
        "rlang",
        "rprojroot",
        "rstudioapi",
        "stats",
        "utils",
        "whisker",
        "withr",
        "yaml"
      ],
      "Hash": "d524fd42c517035027f866064417d7e6"
    },
    "utf8": {
      "Package": "utf8",
      "Version": "1.2.4",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R"
      ],
      "Hash": "62b65c52671e6665f803ff02954446e9"
    },
    "uuid": {
      "Package": "uuid",
      "Version": "1.2-0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R"
      ],
      "Hash": "303c19bfd970bece872f93a824e323d9"
    },
    "vctrs": {
      "Package": "vctrs",
      "Version": "0.6.5",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cli",
        "glue",
        "lifecycle",
        "rlang"
      ],
      "Hash": "c03fa420630029418f7e6da3667aac4a"
    },
    "viridisLite": {
      "Package": "viridisLite",
      "Version": "0.4.2",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R"
      ],
      "Hash": "c826c7c4241b6fc89ff55aaea3fa7491"
    },
    "vroom": {
      "Package": "vroom",
      "Version": "1.6.5",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "bit64",
        "cli",
        "cpp11",
        "crayon",
        "glue",
        "hms",
        "lifecycle",
        "methods",
        "progress",
        "rlang",
        "stats",
        "tibble",
        "tidyselect",
        "tzdb",
        "vctrs",
        "withr"
      ],
      "Hash": "390f9315bc0025be03012054103d227c"
    },
    "waldo": {
      "Package": "waldo",
      "Version": "0.5.2",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cli",
        "diffobj",
        "fansi",
        "glue",
        "methods",
        "rematch2",
        "rlang",
        "tibble"
      ],
      "Hash": "c7d3fd6d29ab077cbac8f0e2751449e6"
    },
    "whisker": {
      "Package": "whisker",
      "Version": "0.4.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Hash": "c6abfa47a46d281a7d5159d0a8891e88"
    },
    "withr": {
      "Package": "withr",
      "Version": "3.0.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "grDevices",
        "graphics"
      ],
      "Hash": "d31b6c62c10dcf11ec530ca6b0dd5d35"
    },
    "wk": {
      "Package": "wk",
      "Version": "0.9.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R"
      ],
      "Hash": "5d4545e140e36476f35f20d0ca87963e"
    },
    "xfun": {
      "Package": "xfun",
      "Version": "0.43",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "grDevices",
        "stats",
        "tools"
      ],
      "Hash": "ab6371d8653ce5f2f9290f4ec7b42a8e"
    },
    "xml2": {
      "Package": "xml2",
      "Version": "1.3.6",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cli",
        "methods",
        "rlang"
      ],
      "Hash": "1d0336142f4cd25d8d23cd3ba7a8fb61"
    },
    "xopen": {
      "Package": "xopen",
      "Version": "1.0.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "processx"
      ],
      "Hash": "423df1e86d5533fcb73c6b02b4923b49"
    },
    "xtable": {
      "Package": "xtable",
      "Version": "1.8-4",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "stats",
        "utils"
      ],
      "Hash": "b8acdf8af494d9ec19ccb2481a9b11c2"
    },
    "yaml": {
      "Package": "yaml",
      "Version": "2.3.8",
      "Source": "Repository",
      "Repository": "RSPM",
      "Hash": "29240487a071f535f5e5d5a323b7afbd"
    },
    "zip": {
      "Package": "zip",
      "Version": "2.3.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Hash": "fcc4bd8e6da2d2011eb64a5e5cc685ab"
    }
  }
}

Citation

BibTeX citation:
@online{massicotte2023,
  author = {Massicotte, Philippe},
  title = {Segmenting Linestring into Points of Equal Distance},
  date = {2023-09-26},
  url = {https://www.pmassicotte.com/posts/2023-09-26-segmenting-linestring},
  langid = {en}
}
For attribution, please cite this work as:
Massicotte, Philippe. 2023. “Segmenting Linestring into Points of Equal Distance.” September 26, 2023. https://www.pmassicotte.com/posts/2023-09-26-segmenting-linestring.