У меня есть большой набор данных, который включает значения долготы и широты, которые я анализирую в R. например,
structure(list(S = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = "L", class = "factor"),
No = 7:12, X.. = c(175L, 200L, 225L, 250L, 275L, 300L), X. = c(200L,
225L, 250L, 275L, 300L, 325L), Time = c(112836.789, 112837.291,
112837.793, 112838.295, 112838.797, 112839.299), Latidude = c(51.28769291,
51.28768926, 51.28768518, 51.28768096, 51.28767662, 51.28767237
), Longitude = c(0.868181943, 0.868182069, 0.868181418, 0.868179761,
0.868177937, 0.868176734), Altitude = c(61.177, 61.145, 61.104,
61.06, 61.05, 61.03), Bearing = c(201.3103, 201.3103, 201.3103,
201.3103, 201.3103, 201.3103), Tree = structure(c(1L, 1L,
1L, 1L, 1L, 1L), .Label = "Tree", class = "factor"), XSArea = c(1.4204362,
0.4883868, 0.5491678, 0.6008296, 0.5633923, 0.5917539), AveWidth = c(1.1840309,
0.5247761, 0.7371026, 1.2021244, 0.7507043, 0.3796109), AreaDensity = c(0.1989031,
3.6698774, 3.7629885, 2.8899686, 2.5806617, 1.5068812)), row.names = c(NA,6L), class = "data.frame")
Я пытаюсь отфильтровать этот набор данных до небольшой области, которая представляет собой прямоугольник на угол. У меня есть начальная и конечная точки, а также азимут и ширина прямоугольника. Я не знаю, как создать ограничивающую рамку под углом или затем отфильтровать большой набор данных по этой ограничительной рамке. Пример ограничивающей рамки:
bb<-cbind(c(0.86777,51.28743),c(0.86744,51.28690))
require(ggmaps)
bounding_box<-make_bbox(bb[1,],bb[2,])
Но это просто создает прямоугольник, идущий с севера на юг, и мне нужно, чтобы он находился под углом
require(geosphere)
bearingRhumb(bb[,1], bb[,2])
200,5686 Итак, прямоугольник ограничивающей рамки должен быть под этим углом.
Я пробовал другой подход, создав вектор долготы и широты, который представляет собой прямую линию. Линия рассчитывается по двум точкам GPS с использованием gcIntermediate из пакета geosphere. Я планировал затем отфильтровать большой набор данных по этой прямой, но мне нужно добавить маржу к прямой. Таким образом, вместо того, чтобы фильтр ограничивался точным соответствием каждому значению в векторе, он фильтрует по значению в векторе плюс и минус бит. Плюс или минус немного - это расстояние (например, 1 м) вокруг каждой из координат GPS в моем векторе долготы и широты. Может, что-то вроде нечеткого фильтра? Или, может быть, как-нибудь расширить вектор прямой линии?
Я открыт для любых идей, так что если у кого-то есть лучший способ сделать то, что я пытаюсь сделать, это тоже нормально. например, создать ограничивающую рамку, которая представляет собой прямоугольник под углом (направление моей прямой линии), и отфильтровать мой большой набор данных с помощью ограничивающей рамки.
Сообщите мне, если мне нужно добавить больше деталей вопрос.