Skip to content

Instantly share code, notes, and snippets.

@agila5
Created August 6, 2025 17:47
Show Gist options
  • Save agila5/2b5d9b7e1453c4d3f292e7aae5fdb79e to your computer and use it in GitHub Desktop.
Save agila5/2b5d9b7e1453c4d3f292e7aae5fdb79e to your computer and use it in GitHub Desktop.
boundary-points
library(tidyverse)
library(sf)
#> Linking to GEOS 3.13.0, GDAL 3.10.1, PROJ 9.5.1; sf_use_s2() is TRUE
library(spData)
#> To access larger datasets in this package, install the spDataLarge
#> package with: `install.packages('spDataLarge',
#> repos='https://nowosad.github.io/drat/', type='source')`
# You need the development version of sfnetworks: 
# remotes::install_github("luukvdmeer/sfnetworks")
library(sfnetworks) # Exports st_duplicated

polygon = st_geometry(us_states)
pts_matrix <- st_coordinates(polygon)
pts_sfc <- st_multipoint(pts_matrix[, c(1, 2)]) |> 
  st_sfc(crs = st_crs(polygon)) |> 
  st_cast("POINT")
pts_dup <- st_duplicated(pts_sfc)
pts_interior <- pts_sfc[pts_dup]

plot(polygon, reset = FALSE)
points(pts_interior, cex = 1, pch = 16, col = 2)

Created on 2025-08-06 with reprex v2.1.1.9000

Session info
sessioninfo::session_info()
#> Warning in system2("quarto", "-V", stdout = TRUE, env = paste0("TMPDIR=", :
#> running command '"quarto"
#> TMPDIR=C:/Users/andre/AppData/Local/Temp/RtmpWC8ehQ/file42b848ed547c -V' had
#> status 1
#> ─ Session info ───────────────────────────────────────────────────────────────
#>  setting  value
#>  version  R version 4.4.2 (2024-10-31 ucrt)
#>  os       Windows 11 x64 (build 26100)
#>  system   x86_64, mingw32
#>  ui       RTerm
#>  language (EN)
#>  collate  Italian_Italy.utf8
#>  ctype    Italian_Italy.utf8
#>  tz       Europe/Rome
#>  date     2025-08-06
#>  pandoc   3.2 @ C:/Program Files/RStudio/resources/app/bin/quarto/bin/tools/ (via rmarkdown)
#>  quarto   NA @ C:\\Users\\andre\\AppData\\Local\\Programs\\Quarto\\bin\\quarto.exe
#> 
#> ─ Packages ───────────────────────────────────────────────────────────────────
#>  package          * version    date (UTC) lib source
#>  abind              1.4-8      2024-09-12 [1] CRAN (R 4.4.2)
#>  class              7.3-22     2023-05-03 [2] CRAN (R 4.4.2)
#>  classInt           0.4-11     2025-01-08 [1] CRAN (R 4.4.2)
#>  cli                3.6.4      2025-02-13 [1] CRAN (R 4.4.3)
#>  colorspace         2.1-1      2024-07-26 [1] CRAN (R 4.4.2)
#>  curl               6.2.1      2025-02-19 [1] CRAN (R 4.4.2)
#>  DBI                1.2.3      2024-06-02 [1] CRAN (R 4.4.2)
#>  deldir             2.0-4      2024-02-28 [1] CRAN (R 4.4.2)
#>  digest             0.6.37     2024-08-19 [1] CRAN (R 4.4.2)
#>  dplyr            * 1.1.4      2023-11-17 [1] CRAN (R 4.4.2)
#>  e1071              1.7-16     2024-09-16 [1] CRAN (R 4.4.2)
#>  evaluate           1.0.3      2025-01-10 [1] CRAN (R 4.4.2)
#>  fastmap            1.2.0      2024-05-15 [1] CRAN (R 4.4.2)
#>  forcats          * 1.0.0      2023-01-29 [1] CRAN (R 4.4.2)
#>  fs                 1.6.5      2024-10-30 [1] CRAN (R 4.4.2)
#>  generics           0.1.3      2022-07-05 [1] CRAN (R 4.4.2)
#>  ggplot2          * 3.5.2      2025-04-09 [1] CRAN (R 4.4.2)
#>  glue               1.8.0      2024-09-30 [1] CRAN (R 4.4.2)
#>  goftest            1.2-3      2021-10-07 [1] CRAN (R 4.4.2)
#>  gtable             0.3.6      2024-10-25 [1] CRAN (R 4.4.2)
#>  hms                1.1.3      2023-03-21 [1] CRAN (R 4.4.2)
#>  htmltools          0.5.8.1    2024-04-04 [1] CRAN (R 4.4.2)
#>  igraph             2.1.4      2025-01-23 [1] CRAN (R 4.4.2)
#>  KernSmooth         2.23-24    2024-05-17 [2] CRAN (R 4.4.2)
#>  knitr              1.50.4     2025-07-11 [1] https://yihui.r-universe.dev (R 4.4.2)
#>  lattice            0.22-6     2024-03-20 [2] CRAN (R 4.4.2)
#>  lifecycle          1.0.4      2023-11-07 [1] CRAN (R 4.4.2)
#>  lubridate        * 1.9.4      2024-12-08 [1] CRAN (R 4.4.2)
#>  lwgeom             0.2-14     2024-02-21 [1] CRAN (R 4.4.2)
#>  magrittr           2.0.3      2022-03-30 [1] CRAN (R 4.4.2)
#>  Matrix             1.7-1      2024-10-18 [2] CRAN (R 4.4.2)
#>  mgcv               1.9-1      2023-12-21 [2] CRAN (R 4.4.2)
#>  munsell            0.5.1      2024-04-01 [1] CRAN (R 4.4.2)
#>  nlme               3.1-166    2024-08-14 [2] CRAN (R 4.4.2)
#>  pillar             1.10.2     2025-04-05 [1] CRAN (R 4.4.3)
#>  pkgconfig          2.0.3      2019-09-22 [1] CRAN (R 4.4.2)
#>  polyclip           1.10-7     2024-07-23 [1] CRAN (R 4.4.2)
#>  proxy              0.4-27     2022-06-09 [1] CRAN (R 4.4.2)
#>  purrr            * 1.0.4      2025-02-05 [1] CRAN (R 4.4.2)
#>  R6                 2.6.1      2025-02-15 [1] CRAN (R 4.4.2)
#>  Rcpp               1.0.14     2025-01-12 [1] CRAN (R 4.4.2)
#>  readr            * 2.1.5      2024-01-10 [1] CRAN (R 4.4.2)
#>  reprex             2.1.1.9000 2025-02-25 [1] Github (tidyverse/reprex@07cd5d7)
#>  rlang              1.1.6      2025-04-11 [1] CRAN (R 4.4.3)
#>  rmarkdown          2.29       2024-11-04 [1] CRAN (R 4.4.2)
#>  rpart              4.1.23     2023-12-05 [2] CRAN (R 4.4.2)
#>  rstudioapi         0.17.1     2024-10-22 [1] CRAN (R 4.4.2)
#>  s2                 1.1.7      2024-07-17 [1] CRAN (R 4.4.2)
#>  scales             1.3.0      2023-11-28 [1] CRAN (R 4.4.2)
#>  sessioninfo        1.2.3      2025-02-05 [1] CRAN (R 4.4.2)
#>  sf               * 1.0-21     2025-04-09 [1] Github (r-spatial/sf@ac49ec2)
#>  sfheaders          0.4.4      2024-01-17 [1] CRAN (R 4.4.2)
#>  sfnetworks       * 0.9.9.9000 2025-08-06 [1] Github (luukvdmeer/sfnetworks@c6eb10a)
#>  sp                 2.2-0      2025-02-01 [1] CRAN (R 4.4.2)
#>  spatstat.data      3.1-6      2025-03-17 [1] CRAN (R 4.4.2)
#>  spatstat.explore   3.4-3.002  2025-06-03 [1] Github (spatstat/spatstat.explore@902b1e2)
#>  spatstat.geom      3.4-1.006  2025-06-03 [1] Github (spatstat/spatstat.geom@02a5dbe)
#>  spatstat.linnet    3.2-6.006  2025-06-03 [1] Github (spatstat/spatstat.linnet@746fedc)
#>  spatstat.model     3.3-6.003  2025-06-03 [1] Github (spatstat/spatstat.model@02db823)
#>  spatstat.random    3.4-1      2025-05-20 [1] CRAN (R 4.4.2)
#>  spatstat.sparse    3.1-0      2024-06-21 [1] CRAN (R 4.4.2)
#>  spatstat.univar    3.1-3      2025-05-08 [1] CRAN (R 4.4.2)
#>  spatstat.utils     3.1-4      2025-05-15 [1] CRAN (R 4.4.2)
#>  spData           * 2.3.4      2025-01-08 [1] CRAN (R 4.4.2)
#>  stringi            1.8.7      2025-03-27 [1] CRAN (R 4.4.2)
#>  stringr          * 1.5.1      2023-11-14 [1] CRAN (R 4.4.2)
#>  tensor             1.5        2012-05-05 [1] CRAN (R 4.4.2)
#>  tibble           * 3.2.1      2023-03-20 [1] CRAN (R 4.4.2)
#>  tidygraph          1.3.1      2024-01-30 [1] CRAN (R 4.4.2)
#>  tidyr            * 1.3.1      2024-01-24 [1] CRAN (R 4.4.2)
#>  tidyselect         1.2.1      2024-03-11 [1] CRAN (R 4.4.2)
#>  tidyverse        * 2.0.0      2023-02-22 [1] CRAN (R 4.4.2)
#>  timechange         0.3.0      2024-01-18 [1] CRAN (R 4.4.2)
#>  tzdb               0.4.0      2023-05-12 [1] CRAN (R 4.4.2)
#>  units              0.8-7.1    2025-04-09 [1] Github (r-quantities/units@3fa5ae6)
#>  vctrs              0.6.5      2023-12-01 [1] CRAN (R 4.4.2)
#>  withr              3.0.2      2024-10-28 [1] CRAN (R 4.4.2)
#>  wk                 0.9.4      2024-10-11 [1] CRAN (R 4.4.2)
#>  xfun               0.52       2025-04-02 [1] CRAN (R 4.4.2)
#>  xml2               1.3.6      2023-12-04 [1] CRAN (R 4.4.2)
#>  yaml               2.3.10     2024-07-26 [1] CRAN (R 4.4.2)
#> 
#>  [1] C:/Users/andre/AppData/Local/R/win-library/4.4
#>  [2] C:/Program Files/R/R-4.4.2/library
#>  * ── Packages attached to the search path.
#> 
#> ──────────────────────────────────────────────────────────────────────────────
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment