Разбиение сегмента, образованного координатами карты, на части - PullRequest
0 голосов
/ 17 июня 2020

У меня есть следующие координаты во фрейме данных

origin_lon    origin_lat    dest_lon    dest_lat
<dbl>         <dbl>         <dbl>       <dbl>
-84.42778     33.63667      -87.90667   41.9744

Я хочу создать новый фрейм данных, разделив сегмент линии, образованный путем соединения этих координат, на равное количество частей (как определено).

longitude    latitude
-84.42778    33.63667
   ...         ...
-87.90667    41.9744

Я пытаюсь достичь этого, используя следующие

tibble(longitude=-84.42778:-87.90667, latitude=33.63667:41.9744)

Но я не уверен, правильно ли это.

1 Ответ

1 голос
/ 17 июня 2020

Вы можете попробовать этот метод, используя dplyr и tidyr:

library(dplyr)
library(tidyr)
n <- 10

df %>%
  pivot_longer(cols = everything(), 
               names_to = c('col', '.value'),
               names_sep = '_') %>%
   select(-col) %>%
   summarise(lon = list(seq(max(lon), min(lon), length.out = n)), 
              lat = list(seq(min(lat), max(lat), length.out = n))) %>%
   unnest(cols = c(lat, lon))


# A tibble: 10 x 2
#     lon   lat
#   <dbl> <dbl>
# 1 -84.4  33.6
# 2 -84.8  34.6
# 3 -85.2  35.5
# 4 -85.6  36.4
# 5 -86.0  37.3
# 6 -86.4  38.3
# 7 -86.7  39.2
# 8 -87.1  40.1
# 9 -87.5  41.0
#10 -87.9  42.0

Здесь мы сначала получаем данные в длинном формате, где широта и долгота указаны в соответствующих столбцах. Затем мы создаем последовательность между max и min значениями в этих столбцах соответственно с выходом длины n.

данные

df <- structure(list(origin_lon = -84.42778, origin_lat = 33.63667, 
dest_lon = -87.90667, dest_lat = 41.9744), class = "data.frame", 
row.names = c(NA, -1L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...