R Рассчитать расстояние между двумя точками в британской sh национальной сети - PullRequest
0 голосов
/ 13 июля 2020

Я хотел бы рассчитать расстояние между двумя наборами координат Briti sh National Grid в каждой строке в наборе данных (то есть расстояние между 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]    

1 Ответ

0 голосов
/ 13 июля 2020

Я нашел ответ, задавая свой вопрос. Однако я подумал, что все равно опубликую вопрос и свой ответ на случай, если это поможет кому-то еще в будущем.

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...