r - R计算英国国家网格中两点之间的距离
问题描述
我想计算数据集中每一行中两组英国国家网格坐标之间的距离(即我的示例中每一行的 AreaA 和 AreaB 之间的距离),以公里为单位。
library("sf")
BBox <- st_bbox(c(xmin = -10000, xmax = 15000, ymax = 20000, ymin = -5000), crs = st_crs(27700)) %>% st_as_sfc()
P1 <- st_sample(BBox, 50, exact = TRUE)
P2 <- st_sample(BBox, 50, exact = TRUE)
Points <- data.frame(AreaA=sample(110:190,50,replace=FALSE),AreaB=sample(10:90,50,replace=FALSE))
Points$AreaA_X <- data.frame(st_coordinates(P1))[,1]
Points$AreaA_Y <- data.frame(st_coordinates(P1))[,2]
Points$AreaB_X <- data.frame(st_coordinates(P2))[,1]
Points$AreaB_Y <- data.frame(st_coordinates(P2))[,2]
解决方案
我在问我的问题时遇到了答案。但是,我认为我仍然会发布问题和答案,以防将来对其他人有所帮助。
Points_sf <- st_as_sf(Points, coords = c("AreaA_X","AreaA_Y"),crs=27700)
Points_sf$geometry2 <- st_as_sf(Points[,c("AreaB_X","AreaB_Y")], coords = c("AreaB_X","AreaB_Y"),crs=27700)
Points_sf$Distance_M <- st_distance(Points_sf$geometry, Points_sf$geometry2, by_element = TRUE)
推荐阅读
- c - 不兼容的指针类型将'void(void *)传递给'void *类型的参数
- node.js - vue-cli 中的图像导致问题。Node-Express,mysql后端
- r - 在 kableExtra() 中格式化标题
- r - 在 R 中获取 Vine Copula(三变量)的 CDF
- ios - Xcode11 中的较低部署目标
- mysql - 我怎样才能得到项目的总数?
- javascript - Mutations-Observer 获得添加元素
- r - 将嵌套列表的第二个元素设置为列表元素的名称 (purrr)
- postgresql - 如何从 Postgres 转储中 pg_restore 一个表及其模式?
- node.js - 如何使用 xPath 在 Puppeteer 中单击元素