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: -94.81074 ymin: 74.36479 xmax: -61.2221 ymax: 82.15542
#> 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: -1288927 ymin: -1380465 xmax: -237801 ymax: -817160
#> 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 (-1281463 -108...

st_length(path)
#> 9434716 [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: -1288897 ymin: -1380007 xmax: -244045.2 ymax: -826670.5
#> 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 189 features and 1 field
#> Geometry type: POINT
#> Dimension:     XYZ
#> Bounding box:  xmin: -1288897 ymin: -1380007 xmax: -244045.2 ymax: -826670.5
#> Projected CRS: WGS 84 / NSIDC Sea Ice Polar Stereographic North
#> First 10 features:
#>                                 x         dist
#> 1   POINT Z (-1288897 -1106195 1)       NA [m]
#> 2   POINT Z (-1253101 -1140647 1) 49682.85 [m]
#> 3   POINT Z (-1216113 -1174131 1) 49892.35 [m]
#> 4   POINT Z (-1183545 -1211658 1) 49688.49 [m]
#> 5   POINT Z (-1151966 -1249233 1) 49083.02 [m]
#> 6   POINT Z (-1115826 -1283523 1) 49818.25 [m]
#> 7   POINT Z (-1079779 -1317849 1) 49776.24 [m]
#> 8   POINT Z (-1039687 -1347461 1) 49842.53 [m]
#> 9    POINT Z (-994692 -1367017 1) 49060.90 [m]
#> 10 POINT Z (-947528.6 -1380007 1) 48919.54 [m]
Session info
#> ─ Session info ───────────────────────────────────────────────────────────────────────────────────────────────────────
#>  setting  value
#>  version  R version 4.3.1 (2023-06-16)
#>  os       Linux Mint 21.2
#>  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     2023-09-29
#>  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 (R 4.3.0)
#>  P  callr         3.7.3   2022-11-02 [?] RSPM (R 4.3.0)
#>  P  class         7.3-22  2023-05-03 [?] CRAN (R 4.3.1)
#>  P  classInt      0.4-10  2023-09-05 [?] RSPM (R 4.3.1)
#>  P  cli           3.6.1   2023-03-23 [?] RSPM (R 4.3.0)
#>  P  colorspace    2.1-0   2023-01-23 [?] RSPM (R 4.3.0)
#>  P  crayon        1.5.2   2022-09-29 [?] RSPM (R 4.3.0)
#>  P  DBI           1.1.3   2022-06-18 [?] RSPM (R 4.3.0)
#>  P  devtools      2.4.5   2022-10-11 [?] RSPM (R 4.3.0)
#>  P  digest        0.6.33  2023-07-07 [?] RSPM (R 4.3.1)
#>  P  dplyr       * 1.1.3   2023-09-03 [?] RSPM (R 4.3.1)
#>  P  e1071         1.7-13  2023-02-01 [?] RSPM (R 4.3.0)
#>  P  ellipsis      0.3.2   2021-04-29 [?] RSPM (R 4.3.0)
#>  P  evaluate      0.21    2023-05-05 [?] RSPM (R 4.3.0)
#>  P  extrafont     0.19    2023-01-18 [?] RSPM (R 4.3.0)
#>  P  extrafontdb   1.0     2012-06-11 [?] RSPM (R 4.3.0)
#>  P  fansi         1.0.4   2023-01-22 [?] RSPM (R 4.3.0)
#>  P  farver        2.1.1   2022-07-06 [?] RSPM (R 4.3.0)
#>  P  fastmap       1.1.1   2023-02-24 [?] RSPM (R 4.3.0)
#>  P  forcats     * 1.0.0   2023-01-29 [?] RSPM (R 4.3.0)
#>  P  fs            1.6.3   2023-07-20 [?] RSPM (R 4.3.1)
#>  P  generics      0.1.3   2022-07-05 [?] RSPM (R 4.3.0)
#>  P  ggplot2     * 3.4.3   2023-08-14 [?] RSPM (R 4.3.1)
#>  P  ggpmthemes  * 0.0.2   2023-05-01 [?] Github (PMassicotte/ggpmthemes@993d61e)
#>  P  glue          1.6.2   2022-02-24 [?] RSPM (R 4.3.0)
#>  P  gtable        0.3.4   2023-08-21 [?] RSPM (R 4.3.1)
#>  P  hms           1.1.3   2023-03-21 [?] RSPM (R 4.3.0)
#>  P  htmltools     0.5.6   2023-08-10 [?] RSPM (R 4.3.1)
#>  P  htmlwidgets   1.6.2   2023-03-17 [?] RSPM (R 4.3.0)
#>  P  httpuv        1.6.11  2023-05-11 [?] RSPM (R 4.3.0)
#>  P  jsonlite      1.8.7   2023-06-29 [?] RSPM (R 4.3.0)
#>  P  KernSmooth    2.23-22 2023-07-10 [?] CRAN (R 4.3.1)
#>  P  knitr         1.44    2023-09-11 [?] RSPM (R 4.3.1)
#>  P  later         1.3.1   2023-05-02 [?] RSPM (R 4.3.0)
#>  P  lifecycle     1.0.3   2022-10-07 [?] RSPM (R 4.3.0)
#>  P  lubridate   * 1.9.2   2023-02-10 [?] RSPM (R 4.3.0)
#>  P  magrittr      2.0.3   2022-03-30 [?] RSPM (R 4.3.0)
#>  P  memoise       2.0.1   2021-11-26 [?] RSPM (R 4.3.0)
#>  P  mime          0.12    2021-09-28 [?] RSPM (R 4.3.0)
#>  P  miniUI        0.1.1.1 2018-05-18 [?] RSPM (R 4.3.0)
#>  P  munsell       0.5.0   2018-06-12 [?] RSPM (R 4.3.0)
#>  P  pillar        1.9.0   2023-03-22 [?] RSPM (R 4.3.0)
#>  P  pkgbuild      1.4.2   2023-06-26 [?] RSPM (R 4.3.1)
#>  P  pkgconfig     2.0.3   2019-09-22 [?] RSPM (R 4.3.0)
#>  P  pkgload       1.3.3   2023-09-22 [?] RSPM (R 4.3.1)
#>  P  prettyunits   1.2.0   2023-09-24 [?] RSPM (R 4.3.1)
#>  P  processx      3.8.2   2023-06-30 [?] RSPM (R 4.3.1)
#>  P  profvis       0.3.8   2023-05-02 [?] RSPM (R 4.3.0)
#>  P  promises      1.2.1   2023-08-10 [?] RSPM (R 4.3.1)
#>  P  proxy         0.4-27  2022-06-09 [?] RSPM (R 4.3.0)
#>  P  ps            1.7.5   2023-04-18 [?] RSPM (R 4.3.0)
#>  P  purrr       * 1.0.2   2023-08-10 [?] RSPM (R 4.3.1)
#>  P  R6            2.5.1   2021-08-19 [?] RSPM (R 4.3.0)
#>  P  Rcpp          1.0.11  2023-07-06 [?] RSPM (R 4.3.1)
#>  P  readr       * 2.1.4   2023-02-10 [?] RSPM (R 4.3.0)
#>  P  remotes       2.4.2.1 2023-07-18 [?] RSPM (R 4.3.1)
#>  VP renv          1.0.2   2023-09-19 [?] RSPM (R 4.3.1) (on disk 1.0.3)
#>  P  rlang         1.1.1   2023-04-28 [?] RSPM (R 4.3.0)
#>  VP rmarkdown     2.24    2023-09-18 [?] RSPM (R 4.3.1) (on disk 2.25)
#>  P  rstudioapi    0.15.0  2023-07-07 [?] RSPM (R 4.3.1)
#>  P  Rttf2pt1      1.3.12  2023-01-22 [?] RSPM (R 4.3.0)
#>  P  scales        1.2.1   2022-08-20 [?] RSPM (R 4.3.0)
#>  P  sessioninfo   1.2.2   2021-12-06 [?] RSPM (R 4.3.0)
#>  P  sf          * 1.0-14  2023-07-11 [?] CRAN (R 4.3.1)
#>  P  shiny         1.7.5   2023-08-12 [?] RSPM (R 4.3.1)
#>  P  stringi       1.7.12  2023-01-11 [?] CRAN (R 4.3.1)
#>  P  stringr     * 1.5.0   2022-12-02 [?] RSPM (R 4.3.0)
#>  P  tibble      * 3.2.1   2023-03-20 [?] RSPM (R 4.3.0)
#>  P  tidyr       * 1.3.0   2023-01-24 [?] RSPM (R 4.3.0)
#>  P  tidyselect    1.2.0   2022-10-10 [?] RSPM (R 4.3.0)
#>  P  tidyverse   * 2.0.0   2023-02-22 [?] RSPM (R 4.3.0)
#>  P  timechange    0.2.0   2023-01-11 [?] RSPM (R 4.3.0)
#>  P  tzdb          0.4.0   2023-05-12 [?] RSPM (R 4.3.0)
#>  P  units         0.8-4   2023-09-13 [?] RSPM (R 4.3.1)
#>  P  urlchecker    1.0.1   2021-11-30 [?] RSPM (R 4.3.0)
#>  P  usethis       2.2.2   2023-07-06 [?] RSPM (R 4.3.1)
#>  P  utf8          1.2.3   2023-01-31 [?] RSPM (R 4.3.0)
#>  P  vctrs         0.6.3   2023-06-14 [?] RSPM (R 4.3.0)
#>  P  withr         2.5.0   2022-03-03 [?] RSPM (R 4.3.0)
#>  P  xfun          0.40    2023-08-09 [?] RSPM (R 4.3.1)
#>  P  xtable        1.8-4   2019-04-21 [?] RSPM (R 4.3.0)
#>  P  yaml          2.3.7   2023-01-23 [?] RSPM (R 4.3.0)
#> 
#>  [1] /tmp/Rtmpz5zX3H/renv-use-libpath-c9b6145682046
#>  [2] /home/filoche/.cache/R/renv/sandbox/R-4.3/x86_64-pc-linux-gnu/9a444a72
#> 
#>  V ── Loaded and on-disk version mismatch.
#>  P ── Loaded and on-disk path mismatch.
#> 
#> ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
renv.lock file
{
  "R": {
    "Version": "4.3.1",
    "Repositories": [
      {
        "Name": "CRAN",
        "URL": "https://packagemanager.rstudio.com/cran/latest"
      }
    ]
  },
  "Packages": {
    "DBI": {
      "Package": "DBI",
      "Version": "1.1.3",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "methods"
      ],
      "Hash": "b2866e62bab9378c3cc9476a1954226b"
    },
    "KernSmooth": {
      "Package": "KernSmooth",
      "Version": "2.23-22",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "stats"
      ],
      "Hash": "2fecebc3047322fa5930f74fae5de70f"
    },
    "MASS": {
      "Package": "MASS",
      "Version": "7.3-60",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "grDevices",
        "graphics",
        "methods",
        "stats",
        "utils"
      ],
      "Hash": "a56a6365b3fa73293ea8d084be0d9bb0"
    },
    "Matrix": {
      "Package": "Matrix",
      "Version": "1.6-1.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "grDevices",
        "graphics",
        "grid",
        "lattice",
        "methods",
        "stats",
        "utils"
      ],
      "Hash": "1a00d4828f33a9d690806e98bd17150c"
    },
    "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.11",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "methods",
        "utils"
      ],
      "Hash": "ae6cbbe1492f4de79c45fce06f967ce8"
    },
    "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-8",
      "Source": "Repository",
      "Repository": "RSPM",
      "Hash": "d69a786e85775b126bddbee185ae6084"
    },
    "brio": {
      "Package": "brio",
      "Version": "1.1.3",
      "Source": "Repository",
      "Repository": "RSPM",
      "Hash": "976cf154dfb043c012d87cddd8bca363"
    },
    "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.5.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "base64enc",
        "cachem",
        "grDevices",
        "htmltools",
        "jquerylib",
        "jsonlite",
        "memoise",
        "mime",
        "rlang",
        "sass"
      ],
      "Hash": "283015ddfbb9d7bf15ea9f0b5698f0d9"
    },
    "cachem": {
      "Package": "cachem",
      "Version": "1.0.8",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "fastmap",
        "rlang"
      ],
      "Hash": "c35768291560ce302c0a6589f92e837d"
    },
    "callr": {
      "Package": "callr",
      "Version": "3.7.3",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "R6",
        "processx",
        "utils"
      ],
      "Hash": "9b2191ede20fa29828139b9900922e51"
    },
    "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.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "utils"
      ],
      "Hash": "89e6d8219950eac806ae0c489052048a"
    },
    "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.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Hash": "d691c61bff84bd63c383874d2d0c3307"
    },
    "conflicted": {
      "Package": "conflicted",
      "Version": "1.2.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cli",
        "memoise",
        "rlang"
      ],
      "Hash": "bb097fccb22d156624fd07cd2894ddb6"
    },
    "cpp11": {
      "Package": "cpp11",
      "Version": "0.4.6",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R"
      ],
      "Hash": "707fae4bbf73697ec8d85f9d7076c061"
    },
    "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.0.2",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R"
      ],
      "Hash": "511bacbfa153a15251166b463b4da4f9"
    },
    "data.table": {
      "Package": "data.table",
      "Version": "1.14.8",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "methods"
      ],
      "Hash": "b4c06e554f33344e044ccd7fdca750a9"
    },
    "dbplyr": {
      "Package": "dbplyr",
      "Version": "2.3.3",
      "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": "d6fd1b1440c1cacc6623aaa4e9fe352b"
    },
    "desc": {
      "Package": "desc",
      "Version": "1.4.2",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "R6",
        "cli",
        "rprojroot",
        "utils"
      ],
      "Hash": "6b9602c7ebbe87101a9c8edb6e8b6d21"
    },
    "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.33",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "utils"
      ],
      "Hash": "b18a9cf3c003977b0cc49d5e76ebe48d"
    },
    "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.3",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "R6",
        "cli",
        "generics",
        "glue",
        "lifecycle",
        "magrittr",
        "methods",
        "pillar",
        "rlang",
        "tibble",
        "tidyselect",
        "utils",
        "vctrs"
      ],
      "Hash": "e85ffbebaad5f70e1a2e2ef4302b4949"
    },
    "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-13",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "class",
        "grDevices",
        "graphics",
        "methods",
        "proxy",
        "stats",
        "utils"
      ],
      "Hash": "1046cb48d06cb40c2900d8878f03a0fe"
    },
    "ellipsis": {
      "Package": "ellipsis",
      "Version": "0.3.2",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "rlang"
      ],
      "Hash": "bb0eec2fe32e88d9e2836c2f73ea2077"
    },
    "evaluate": {
      "Package": "evaluate",
      "Version": "0.21",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "methods"
      ],
      "Hash": "d59f3b464e8da1aef82dc04b588b8dfb"
    },
    "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.4",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "grDevices",
        "utils"
      ],
      "Hash": "1d9e7ad3c8312a192dea7d3db0274fde"
    },
    "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.3",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "methods"
      ],
      "Hash": "47b5f30c720c23999b913a1a635cf0bb"
    },
    "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": "1.9.3",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "askpass",
        "credentials",
        "openssl",
        "rstudioapi",
        "sys",
        "zip"
      ],
      "Hash": "b544c397820e05a97d391b2d614a921a"
    },
    "ggplot2": {
      "Package": "ggplot2",
      "Version": "3.4.3",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "MASS",
        "R",
        "cli",
        "glue",
        "grDevices",
        "grid",
        "gtable",
        "isoband",
        "lifecycle",
        "mgcv",
        "rlang",
        "scales",
        "stats",
        "tibble",
        "vctrs",
        "withr"
      ],
      "Hash": "85846544c596e71f8f46483ab165da33"
    },
    "ggpmthemes": {
      "Package": "ggpmthemes",
      "Version": "0.0.2",
      "Source": "GitHub",
      "RemoteType": "github",
      "RemoteHost": "api.github.com",
      "RemoteUsername": "PMassicotte",
      "RemoteRepo": "ggpmthemes",
      "RemoteRef": "master",
      "RemoteSha": "993d61e7d03c794212dcb8d08d015f969e4e56bd",
      "Requirements": [
        "extrafont",
        "ggplot2",
        "grDevices",
        "scales"
      ],
      "Hash": "cb3e0aabadf06d6ee75dee7d78650841"
    },
    "gh": {
      "Package": "gh",
      "Version": "1.4.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cli",
        "gitcreds",
        "httr2",
        "ini",
        "jsonlite",
        "rlang"
      ],
      "Hash": "03533b1c875028233598f848fda44c4c"
    },
    "gitcreds": {
      "Package": "gitcreds",
      "Version": "0.1.2",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R"
      ],
      "Hash": "ab08ac61f3e1be454ae21911eb8bc2fe"
    },
    "glue": {
      "Package": "glue",
      "Version": "1.6.2",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "methods"
      ],
      "Hash": "4f2596dfb05dac67b9dc558e5c6fba2e"
    },
    "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.4",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cli",
        "glue",
        "grid",
        "lifecycle",
        "rlang"
      ],
      "Hash": "b29cf3031f49b04ab9c852c912547eef"
    },
    "haven": {
      "Package": "haven",
      "Version": "2.5.3",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cli",
        "cpp11",
        "forcats",
        "hms",
        "lifecycle",
        "methods",
        "readr",
        "rlang",
        "tibble",
        "tidyselect",
        "vctrs"
      ],
      "Hash": "9b302fe352f9cfc5dcf0a4139af3a565"
    },
    "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.6",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "base64enc",
        "digest",
        "ellipsis",
        "fastmap",
        "grDevices",
        "rlang",
        "utils"
      ],
      "Hash": "a2326a66919a3311f7fbb1e3bf568283"
    },
    "htmlwidgets": {
      "Package": "htmlwidgets",
      "Version": "1.6.2",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "grDevices",
        "htmltools",
        "jsonlite",
        "knitr",
        "rmarkdown",
        "yaml"
      ],
      "Hash": "a865aa85bcb2697f47505bfd70422471"
    },
    "httpuv": {
      "Package": "httpuv",
      "Version": "1.6.11",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "R6",
        "Rcpp",
        "later",
        "promises",
        "utils"
      ],
      "Hash": "838602f54e32c1a0f8cc80708cefcefa"
    },
    "httr": {
      "Package": "httr",
      "Version": "1.4.7",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "R6",
        "curl",
        "jsonlite",
        "mime",
        "openssl"
      ],
      "Hash": "ac107251d9d9fd72f0ca8049988f1d7f"
    },
    "httr2": {
      "Package": "httr2",
      "Version": "0.2.3",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "R6",
        "cli",
        "curl",
        "glue",
        "magrittr",
        "openssl",
        "rappdirs",
        "rlang",
        "withr"
      ],
      "Hash": "193bb297368afbbb42dc85784a46b36e"
    },
    "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.7",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "methods"
      ],
      "Hash": "266a20443ca13c65688b2116d5220f76"
    },
    "knitr": {
      "Package": "knitr",
      "Version": "1.44",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "evaluate",
        "highr",
        "methods",
        "tools",
        "xfun",
        "yaml"
      ],
      "Hash": "60885b9f746c9dfaef110d070b5f7dc0"
    },
    "labeling": {
      "Package": "labeling",
      "Version": "0.4.3",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "graphics",
        "stats"
      ],
      "Hash": "b64ec208ac5bc1852b285f665d6368b3"
    },
    "later": {
      "Package": "later",
      "Version": "1.3.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "Rcpp",
        "rlang"
      ],
      "Hash": "40401c9cf2bc2259dfe83311c9384710"
    },
    "lattice": {
      "Package": "lattice",
      "Version": "0.21-8",
      "Source": "Repository",
      "Repository": "CRAN",
      "Requirements": [
        "R",
        "grDevices",
        "graphics",
        "grid",
        "stats",
        "utils"
      ],
      "Hash": "0b8a6d63c8770f02a8b5635f3c431e6b"
    },
    "lifecycle": {
      "Package": "lifecycle",
      "Version": "1.0.3",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cli",
        "glue",
        "rlang"
      ],
      "Hash": "001cecbeac1cff9301bdc3775ee46a86"
    },
    "lubridate": {
      "Package": "lubridate",
      "Version": "1.9.2",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "generics",
        "methods",
        "timechange"
      ],
      "Hash": "e25f18436e3efd42c7c590a1c4c15390"
    },
    "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-0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "Matrix",
        "R",
        "graphics",
        "methods",
        "nlme",
        "splines",
        "stats",
        "utils"
      ],
      "Hash": "086028ca0460d0c368028d3bda58f31b"
    },
    "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.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "colorspace",
        "methods"
      ],
      "Hash": "6dfe8bf774944bd5595785e3229d8771"
    },
    "nlme": {
      "Package": "nlme",
      "Version": "3.1-163",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "graphics",
        "lattice",
        "stats",
        "utils"
      ],
      "Hash": "8d1938040a05566f4f7a14af4feadd6b"
    },
    "openssl": {
      "Package": "openssl",
      "Version": "2.1.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "askpass"
      ],
      "Hash": "2a0dc8c6adfb6f032e4d4af82d258ab5"
    },
    "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.2",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "R6",
        "callr",
        "cli",
        "crayon",
        "desc",
        "prettyunits",
        "processx",
        "rprojroot"
      ],
      "Hash": "beb25b32a957a22a5c301a9e441190b3"
    },
    "pkgconfig": {
      "Package": "pkgconfig",
      "Version": "2.0.3",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "utils"
      ],
      "Hash": "01f28d4278f15c76cddbea05899c5d6f"
    },
    "pkgdown": {
      "Package": "pkgdown",
      "Version": "2.0.7",
      "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": "16fa15449c930bf3a7761d3c68f8abf9"
    },
    "pkgload": {
      "Package": "pkgload",
      "Version": "1.3.3",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cli",
        "crayon",
        "desc",
        "fs",
        "glue",
        "methods",
        "pkgbuild",
        "rlang",
        "rprojroot",
        "utils",
        "withr"
      ],
      "Hash": "903d68319ae9923fb2e2ee7fa8230b91"
    },
    "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.2",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "R6",
        "ps",
        "utils"
      ],
      "Hash": "3efbd8ac1be0296a46c55387aeace0f3"
    },
    "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.2",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R6",
        "crayon",
        "hms",
        "prettyunits"
      ],
      "Hash": "14dc9f7a3c91ebb14ec5bb9208a07061"
    },
    "promises": {
      "Package": "promises",
      "Version": "1.2.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R6",
        "Rcpp",
        "fastmap",
        "later",
        "magrittr",
        "rlang",
        "stats"
      ],
      "Hash": "0d8a15c9d000970ada1ab21405387dee"
    },
    "proxy": {
      "Package": "proxy",
      "Version": "0.4-27",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "stats",
        "utils"
      ],
      "Hash": "e0ef355c12942cf7a6b91a6cfaea8b3e"
    },
    "ps": {
      "Package": "ps",
      "Version": "1.7.5",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "utils"
      ],
      "Hash": "709d852d33178db54b17c722e5b1e594"
    },
    "purrr": {
      "Package": "purrr",
      "Version": "1.0.2",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cli",
        "lifecycle",
        "magrittr",
        "rlang",
        "vctrs"
      ],
      "Hash": "1cba04a4e9414bdefc9dcaa99649a8dc"
    },
    "ragg": {
      "Package": "ragg",
      "Version": "1.2.5",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "systemfonts",
        "textshaping"
      ],
      "Hash": "690bc058ea2b1b8a407d3cfe3dce3ef9"
    },
    "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.4",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "R6",
        "cli",
        "clipr",
        "cpp11",
        "crayon",
        "hms",
        "lifecycle",
        "methods",
        "rlang",
        "tibble",
        "tzdb",
        "utils",
        "vroom"
      ],
      "Hash": "b5047343b3825f37ad9d3b5d89aa1078"
    },
    "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.4.2.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "methods",
        "stats",
        "tools",
        "utils"
      ],
      "Hash": "63d15047eb239f95160112bcadc4fcb9"
    },
    "renv": {
      "Package": "renv",
      "Version": "1.0.3",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "utils"
      ],
      "Hash": "41b847654f567341725473431dd0d5ab"
    },
    "reprex": {
      "Package": "reprex",
      "Version": "2.0.2",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "callr",
        "cli",
        "clipr",
        "fs",
        "glue",
        "knitr",
        "lifecycle",
        "rlang",
        "rmarkdown",
        "rstudioapi",
        "utils",
        "withr"
      ],
      "Hash": "d66fe009d4c20b7ab1927eb405db9ee2"
    },
    "rlang": {
      "Package": "rlang",
      "Version": "1.1.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "utils"
      ],
      "Hash": "a85c767b55f0bf9b7ad16c6d7baee5bb"
    },
    "rmarkdown": {
      "Package": "rmarkdown",
      "Version": "2.25",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "bslib",
        "evaluate",
        "fontawesome",
        "htmltools",
        "jquerylib",
        "jsonlite",
        "knitr",
        "methods",
        "stringr",
        "tinytex",
        "tools",
        "utils",
        "xfun",
        "yaml"
      ],
      "Hash": "d65e35823c817f09f4de424fcdfa812a"
    },
    "roxygen2": {
      "Package": "roxygen2",
      "Version": "7.2.3",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "R6",
        "brew",
        "cli",
        "commonmark",
        "cpp11",
        "desc",
        "knitr",
        "methods",
        "pkgload",
        "purrr",
        "rlang",
        "stringi",
        "stringr",
        "utils",
        "withr",
        "xml2"
      ],
      "Hash": "7b153c746193b143c14baa072bae4e27"
    },
    "rprojroot": {
      "Package": "rprojroot",
      "Version": "2.0.3",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R"
      ],
      "Hash": "1de7ab598047a87bba48434ba35d497d"
    },
    "rstudioapi": {
      "Package": "rstudioapi",
      "Version": "0.15.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Hash": "5564500e25cffad9e22244ced1379887"
    },
    "rversions": {
      "Package": "rversions",
      "Version": "2.1.2",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "curl",
        "utils",
        "xml2"
      ],
      "Hash": "a9881dfed103e83f9de151dc17002cd1"
    },
    "rvest": {
      "Package": "rvest",
      "Version": "1.0.3",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cli",
        "glue",
        "httr",
        "lifecycle",
        "magrittr",
        "rlang",
        "selectr",
        "tibble",
        "withr",
        "xml2"
      ],
      "Hash": "a4a5ac819a467808c60e36e92ddf195e"
    },
    "s2": {
      "Package": "s2",
      "Version": "1.1.4",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "Rcpp",
        "wk"
      ],
      "Hash": "f1cbe03bb3346f8e817518ffa20f9f5a"
    },
    "sass": {
      "Package": "sass",
      "Version": "0.4.7",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R6",
        "fs",
        "htmltools",
        "rappdirs",
        "rlang"
      ],
      "Hash": "6bd4d33b50ff927191ec9acbf52fd056"
    },
    "scales": {
      "Package": "scales",
      "Version": "1.2.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "R6",
        "RColorBrewer",
        "farver",
        "labeling",
        "lifecycle",
        "munsell",
        "rlang",
        "viridisLite"
      ],
      "Hash": "906cb23d2f1c5680b8ce439b44c6fa63"
    },
    "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-14",
      "Source": "Repository",
      "Repository": "CRAN",
      "Requirements": [
        "DBI",
        "R",
        "Rcpp",
        "classInt",
        "grDevices",
        "graphics",
        "grid",
        "magrittr",
        "methods",
        "s2",
        "stats",
        "tools",
        "units",
        "utils"
      ],
      "Hash": "e2111252a76984ca50bf8d6314348681"
    },
    "shiny": {
      "Package": "shiny",
      "Version": "1.7.5",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "R6",
        "bslib",
        "cachem",
        "commonmark",
        "crayon",
        "ellipsis",
        "fastmap",
        "fontawesome",
        "glue",
        "grDevices",
        "htmltools",
        "httpuv",
        "jsonlite",
        "later",
        "lifecycle",
        "methods",
        "mime",
        "promises",
        "rlang",
        "sourcetools",
        "tools",
        "utils",
        "withr",
        "xtable"
      ],
      "Hash": "438b99792adbe82a8329ad8697d45afe"
    },
    "sourcetools": {
      "Package": "sourcetools",
      "Version": "0.1.7-1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R"
      ],
      "Hash": "5f5a7629f956619d519205ec475fe647"
    },
    "stringi": {
      "Package": "stringi",
      "Version": "1.7.12",
      "Source": "Repository",
      "Repository": "CRAN",
      "Requirements": [
        "R",
        "stats",
        "tools",
        "utils"
      ],
      "Hash": "ca8bd84263c77310739d2cf64d84d7c9"
    },
    "stringr": {
      "Package": "stringr",
      "Version": "1.5.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cli",
        "glue",
        "lifecycle",
        "magrittr",
        "rlang",
        "stringi",
        "vctrs"
      ],
      "Hash": "671a4d384ae9d32fc47a14e98bfa3dc8"
    },
    "sys": {
      "Package": "sys",
      "Version": "3.4.2",
      "Source": "Repository",
      "Repository": "RSPM",
      "Hash": "3a1be13d68d47a8cd0bfd74739ca1555"
    },
    "systemfonts": {
      "Package": "systemfonts",
      "Version": "1.0.4",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cpp11"
      ],
      "Hash": "90b28393209827327de889f49935140a"
    },
    "testthat": {
      "Package": "testthat",
      "Version": "3.1.10",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "R6",
        "brio",
        "callr",
        "cli",
        "desc",
        "digest",
        "ellipsis",
        "evaluate",
        "jsonlite",
        "lifecycle",
        "magrittr",
        "methods",
        "pkgload",
        "praise",
        "processx",
        "ps",
        "rlang",
        "utils",
        "waldo",
        "withr"
      ],
      "Hash": "6f403dc49295610a3a67ea1a9ca64346"
    },
    "textshaping": {
      "Package": "textshaping",
      "Version": "0.3.6",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cpp11",
        "systemfonts"
      ],
      "Hash": "1ab6223d3670fac7143202cb6a2d43d5"
    },
    "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.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cli",
        "cpp11",
        "dplyr",
        "glue",
        "lifecycle",
        "magrittr",
        "purrr",
        "rlang",
        "stringr",
        "tibble",
        "tidyselect",
        "utils",
        "vctrs"
      ],
      "Hash": "e47debdc7ce599b070c8e78e8ac0cfcf"
    },
    "tidyselect": {
      "Package": "tidyselect",
      "Version": "1.2.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cli",
        "glue",
        "lifecycle",
        "rlang",
        "vctrs",
        "withr"
      ],
      "Hash": "79540e5fcd9e0435af547d885f184fd5"
    },
    "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.2.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cpp11"
      ],
      "Hash": "8548b44f79a35ba1791308b61e6012d7"
    },
    "tinytex": {
      "Package": "tinytex",
      "Version": "0.46",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "xfun"
      ],
      "Hash": "0c41a73214d982f539c56a7773c7afa5"
    },
    "tzdb": {
      "Package": "tzdb",
      "Version": "0.4.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cpp11"
      ],
      "Hash": "f561504ec2897f4d46f0c7657e488ae1"
    },
    "units": {
      "Package": "units",
      "Version": "0.8-4",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "Rcpp"
      ],
      "Hash": "e0fbcea25008a7540c83c2c294135de0"
    },
    "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.2",
      "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": "60e51f0b94d0324dc19e44110098fa9f"
    },
    "utf8": {
      "Package": "utf8",
      "Version": "1.2.3",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R"
      ],
      "Hash": "1fe17157424bb09c48a8b3b550c753bc"
    },
    "uuid": {
      "Package": "uuid",
      "Version": "1.1-1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R"
      ],
      "Hash": "3d78edfb977a69fc7a0341bee25e163f"
    },
    "vctrs": {
      "Package": "vctrs",
      "Version": "0.6.3",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "cli",
        "glue",
        "lifecycle",
        "rlang"
      ],
      "Hash": "d0ef2856b83dc33ea6e255caf6229ee2"
    },
    "viridisLite": {
      "Package": "viridisLite",
      "Version": "0.4.2",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R"
      ],
      "Hash": "c826c7c4241b6fc89ff55aaea3fa7491"
    },
    "vroom": {
      "Package": "vroom",
      "Version": "1.6.3",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "bit64",
        "cli",
        "cpp11",
        "crayon",
        "glue",
        "hms",
        "lifecycle",
        "methods",
        "progress",
        "rlang",
        "stats",
        "tibble",
        "tidyselect",
        "tzdb",
        "vctrs",
        "withr"
      ],
      "Hash": "8318e64ffb3a70e652494017ec455561"
    },
    "waldo": {
      "Package": "waldo",
      "Version": "0.5.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "cli",
        "diffobj",
        "fansi",
        "glue",
        "methods",
        "rematch2",
        "rlang",
        "tibble"
      ],
      "Hash": "2c993415154cdb94649d99ae138ff5e5"
    },
    "whisker": {
      "Package": "whisker",
      "Version": "0.4.1",
      "Source": "Repository",
      "Repository": "RSPM",
      "Hash": "c6abfa47a46d281a7d5159d0a8891e88"
    },
    "withr": {
      "Package": "withr",
      "Version": "2.5.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "grDevices",
        "graphics",
        "stats"
      ],
      "Hash": "c0e49a9760983e81e55cdd9be92e7182"
    },
    "wk": {
      "Package": "wk",
      "Version": "0.8.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R"
      ],
      "Hash": "aaf7e20556e3125a09d53453814ad339"
    },
    "xfun": {
      "Package": "xfun",
      "Version": "0.40",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "stats",
        "tools"
      ],
      "Hash": "be07d23211245fc7d4209f54c4e4ffc8"
    },
    "xml2": {
      "Package": "xml2",
      "Version": "1.3.5",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "methods"
      ],
      "Hash": "6c40e5cfcc6aefd88110666e18c31f40"
    },
    "xopen": {
      "Package": "xopen",
      "Version": "1.0.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "processx"
      ],
      "Hash": "6c85f015dee9cc7710ddd20f86881f58"
    },
    "xtable": {
      "Package": "xtable",
      "Version": "1.8-4",
      "Source": "Repository",
      "Repository": "RSPM",
      "Requirements": [
        "R",
        "stats",
        "utils"
      ],
      "Hash": "b8acdf8af494d9ec19ccb2481a9b11c2"
    },
    "yaml": {
      "Package": "yaml",
      "Version": "2.3.7",
      "Source": "Repository",
      "Repository": "RSPM",
      "Hash": "0d0056cc5383fbc240ccd0cb584bf436"
    },
    "zip": {
      "Package": "zip",
      "Version": "2.3.0",
      "Source": "Repository",
      "Repository": "RSPM",
      "Hash": "d98c94dacb7e0efcf83b0a133a705504"
    }
  }
}

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.